sql - таблицы - Получить список всех таблиц в Oracle?
Как я могу запросить базу данных Oracle для отображения имен всех таблиц в ней?
Для лучшего просмотра с помощью sqlplus
Если вы используете sqlplus вы можете сначала настроить несколько параметров для более удобного просмотра, если ваши столбцы становятся искалеченными (эти переменные не должны сохраняться после выхода из сеанса sqlplus ):
Показать все таблицы
Затем вы можете использовать что-то подобное, чтобы увидеть все имена таблиц:
Показать таблицы, которые вы используете
Как упоминает @Justin Cave, вы можете использовать это, чтобы показать только те таблицы, которые у вас есть:
Не забывайте о представлениях
Имейте в виду, что некоторые «таблицы» на самом деле могут быть «видами», поэтому вы можете попробовать запустить что-то вроде:
Результаты, достижения
Это должно дать что-то, что выглядит довольно приемлемым, например:
База данных Oracle для отображения имен всех таблиц с использованием нижеследующего запроса
Вы можете использовать Oracle Data Dictionary для получения информации об объектах oracle.
Список таблиц можно получить по-разному:
Затем вы можете получить столбцы таблицы, используя имя таблицы:
Затем вы можете получить список зависимостей (триггеры, представления и т. Д.):
Затем вы можете получить текстовый источник этих объектов:
И вы можете использовать USER или ALL а не DBA если хотите.
Для этого существует 3 элемента данных
DBA_TABLES описывает все реляционные таблицы в базе данных.
Описание реляционных таблиц, доступных пользователю
USER_TABLES описывает реляционные таблицы, принадлежащие текущему пользователю. В этом представлении не отображается столбец OWNER .
Запрос user_tables и dba_tables не работал. Это было сделано:
Идя дальше, есть еще один вид, называемый cols (all_tab_columns), который может использоваться для определения того, какие таблицы содержат заданное имя столбца.
найти все таблицы, имеющие имя, начинающееся с EST, и столбцы, содержащие CALLREF в любом месте их имен.
Это может помочь при разработке тех столбцов, к которым вы хотите присоединиться, например, в зависимости от ваших соглашений об именах таблиц и столбцов.
Мы можем получить все таблицы, включая данные столбца, из нижеследующего запроса:
Ниже приведен фрагмент комментариев SQL-запросов, описывающий, как параметры, которые вы можете использовать:
Попробуйте выбрать из user_tables котором перечислены таблицы, принадлежащие текущему пользователю.
Попробуйте просмотреть словарные данные ниже.
Простой запрос для выбора таблиц для текущего пользователя:
С помощью любого из них вы можете выбрать:
Следующий запрос содержит только список необходимых данных, тогда как другие ответы дали мне дополнительные данные, которые меня только смутили.
Я не нашел ответа, который указывал бы на использование
поэтому решил добавить мою версию. Этот вид фактически возвращает больше, чем DBA_TABLES, поскольку он также возвращает таблицы объектов ( http://docs.oracle.com/cd/E11882_01/server.112/e40402/statviews_1003.htm ).
Я хотел получить список всех имен столбцов, принадлежащих таблице схемы, отсортированной по порядку идентификатора столбца.
Вот запрос, который я использую: -
Предполагается, что у вас есть доступ к представлению DBA_TABLES данных DBA_TABLES . Если у вас нет этих привилегий, но они нуждаются в них, вы можете запросить, чтобы администратор базы данных явно предоставил вам привилегии в этой таблице или что администратор баз данных предоставляет вам привилегию SELECT ANY DICTIONARY или роль SELECT_CATALOG_ROLE (любой из которых позволит вам запрашивать любая таблица словаря данных). Конечно, вы можете исключить некоторые схемы, такие как SYS и SYSTEM которые имеют большое количество таблиц Oracle, которые вам, вероятно, не волнуют.
В качестве альтернативы, если у вас нет доступа к DBA_TABLES , вы можете увидеть все таблицы, к которым ваша учетная запись имеет доступ, через представление ALL_TABLES :
Хотя это может быть подмножество таблиц, доступных в базе данных ( ALL_TABLES показывает вам информацию для всех таблиц, которым был предоставлен ваш пользователь).
Если вас интересуют только те таблицы, которые у вас есть, а не те, к которым у вас есть доступ, вы можете использовать USER_TABLES :
Поскольку USER_TABLES имеет только информацию о ваших собственных таблицах, у нее нет колонки OWNER - владелец, по определению, является вами.
Oracle также имеет ряд устаревших представлений словаря данных - например, TAB , DICT , TABS и CAT которые можно использовать. В общем, я бы не предложил использовать эти устаревшие представления, если вам не нужно полностью использовать ваши сценарии для Oracle 6. Oracle не изменил эти представления за долгое время, поэтому у них часто возникают проблемы с новыми типами объектов. Например, представления TAB и CAT отображают информацию о таблицах, которые находятся в [DBA|ALL|USER]_TABLES пользователя, в то время как просмотры [DBA|ALL|USER]_TABLES все фильтруют их. CAT также показывает информацию о материализованных журналах просмотра с TABLE_TYPE «ТАБЛИЦА», которая вряд ли будет тем, что вы действительно хотите. DICT объединяет таблицы и синонимы и не говорит вам, кому принадлежит этот объект.
дает все таблицы всех пользователей, только если пользователь, с которым вы вошли в систему, имеет привилегии sysdba .