Как мне перечислить все таблицы в схеме в Oracle SQL?
Как перечислить все таблицы в схеме в Oracle SQL?
Ответ 1
Чтобы просмотреть все таблицы в другой схеме, вам необходимо иметь одну или несколько следующих системных привилегий:
SELECT ANY DICTIONARY
(SELECT | INSERT | UPDATE | DELETE) ANY TABLE
или большой удар, роль DBA.
С помощью любого из них вы можете выбрать:
SELECT DISTINCT OWNER, OBJECT_NAME
FROM DBA_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
Без этих системных привилегий вы можете видеть только таблицы, которым вам был предоставлен определенный уровень доступа, будь то напрямую или через роль.
SELECT DISTINCT OWNER, OBJECT_NAME
FROM ALL_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
Наконец, вы всегда можете запросить словарь данных для своих собственных таблиц, так как ваши права на ваши таблицы не могут быть отменены (начиная с 10g):
SELECT DISTINCT OBJECT_NAME
FROM USER_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
Ответ 2
SELECT table_name from all_tables where owner = 'YOURSCHEMA';
Ответ 3
Вы можете запросить USER_TABLES
select TABLE_NAME from user_tables
Ответ 4
Если вы вошли в систему как обычный пользователь без разрешения DBA, вы можете использовать следующую команду, чтобы увидеть свою собственную схему всех таблиц и представлений.
select * from tab;
Ответ 5
Попробуйте это, замените? с именем вашей схемы
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA =?
AND TABLE_TYPE = 'BASE TABLE'
Ответ 6
Если вы обращаетесь к Oracle с помощью JDBC (Java), вы можете использовать класс DatabaseMetadata. Если вы обращаетесь к Oracle с помощью ADO.NET, вы можете использовать аналогичный подход.
Если вы обращаетесь к Oracle с ODBC, вы можете использовать SQLTables.
В противном случае, если вам просто нужна информация в SQLPlus или аналогичном клиенте Oracle, один из запросов, о которых идет речь, будет делать. Например:
select TABLE_NAME from user_tables
Ответ 7
select * from cat;
он отобразит все таблицы в вашей схеме cat синоним user_catalog
Ответ 8
select * from user_tables;
(показаны все таблицы)
Ответ 9
select TABLE_NAME from user_tables;
Вышеуказанный запрос даст вам имена всех таблиц, имеющихся у этого пользователя;
Ответ 10
SELECT имя_таблицы, владелец FROM all_tables, где owner = 'schema_name' order by table_name
Ответ 11
Посмотрите на мою простую утилиту, чтобы показать некоторую информацию о схеме db. Он основан на: Обратное проектирование модели данных Использование словаря данных Oracle
Ответ 12
Если вам нужно также получить размер таблицы, это будет удобно:
select SEGMENT_NAME, PARTITION_NAME, BYTES from user_segments where SEGMENT_TYPE='TABLE' order by 1
Ответ 13
Имя таблицы и счетчик строк для всех таблиц в схеме OWNER
:
SELECT table_name, num_rows counter from DBA_TABLES WHERE owner = 'OWNER'
Ответ 14
Вы можете напрямую запустить второй запрос, если знаете имя владельца.
--First вы можете выбрать, какие существуют все ВЛАДЕЛЬЦЫ:
SELECT DISTINCT(owner) from SYS.ALL_TABLES;
--Then вы можете увидеть таблицы под этим владельцем:
SELECT table_name, owner from all_tables where owner like ('%XYZ%');