Как в MySQL есть «SHOW TABLES», как вы считаете таблицы в Oracle DB.Небольшое исследование дало мне этот запрос:
select owner, count(*) from dba_tables
Так, как у MySQL есть стандартная команда, так ли у Oracle?
try:
SELECT COUNT(*) FROM USER_TABLES;
Ну, у меня нет оракула на моей машине, я запускаю mysql (комментарий OP)
на момент написания, этот сайт отлично подходит для тестирования на различных типах баз данных.
Да, ваш запрос будет работать, просто немного измените его.Ищите здесь ссылку: http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/statviews_2105.htm#i1592091
Запустите это:
SELECT TABLE_NAME FROM DBA_TABLES;
, чтобы получить список таблиц.
и Запустите это:
SELECT Count(*) FROM DBA_TABLES;
чтобы получить количество таблиц.
Выберите количество (*) ОТ всех таблиц, где владелец = 'имя_схемы'
Если вам нужен список владельцев и количество таблиц на владельца, попробуйте:
SELECT distinct owner, count(table_name) FROM dba_tables GROUP BY owner;
Эти документы описывают представления словаря данных:
all_tables: http://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_4473.htm#REFRN26286
user_tables: http://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_2105.htm#i1592091
dba_tables: http://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_4155.htm#i1627762
Youможет выполнять запросы к этим представлениям, чтобы подсчитать, что вам нужно.
Чтобы добавить что-то еще к ответу @Anurag Thakre:
Используйте этот запрос, который даст вам фактическое уважение к числу подсчетоввладельцам SELECT COUNT(*),tablespace_name FROM USER_TABLES group by tablespace_name;
Используйте этот запрос, который даст вам фактическое уважение к числу подсчетоввладельцам
SELECT COUNT(*),tablespace_name FROM USER_TABLES group by tablespace_name;
Или владельцам таблиц:
SELECT COUNT(*), owner FROM ALL_TABLES group by owner;
Само табличное пространство не идентифицирует уникального владельца объекта.Несколько пользователей могут создавать объекты в одном и том же табличном пространстве, а один пользователь может создавать объекты в разных табличных пространствах.Обычной практикой является разделение таблиц и индексов в разных табличных пространствах.
Если вы хотите узнать количество таблиц, принадлежащих определенной схеме / пользователю, вы также можете использовать SQL, подобный этому:
SELECT Count(*) FROM DBA_TABLES where OWNER like 'PART_OF_NAME%';
Пожалуйста, найдите ниже - это самый простой, который я использую:
select owner, count(*) from dba_tables group by owner;
REM setting current_schema is required as the 2nd query depends on the current user referred in the session ALTER SESSION SET CURRENT_SCHEMA=TABLE_OWNER; SELECT table_name, TO_NUMBER ( EXTRACTVALUE ( xmltype ( DBMS_XMLGEN.getxml ('select count(*) c from ' || table_name)), '/ROWSET/ROW/C')) COUNT FROM dba_tables WHERE owner = 'TABLE_OWNER' ORDER BY COUNT DESC;
ЭТОТ ЗАПРОС НАЙДЕТ ВСЕ СЧЕТА ОБЪЕКТОВ В КОНКРЕТНОЙ СХЕМЕ
select owner, object_type, count(*) from dba_objects where owner='owner_name' group by owner, object_type order by 3 desc;
select COUNT(*) from ALL_ALL_TABLES where OWNER='<Database-name>';
.....