Как в oracle посмотреть таблицы в

Обновлено: 04.07.2024

Как я могу запросить базу данных Oracle для отображения имен всех таблиц в ней?

Предполагается, что у вас есть доступ к представлению словаря данных 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 все фильтруют их. CAT также показывает информацию о материализованных журналах просмотра с TABLE_TYPE в таблице "ТАБЛИЦА", которая вряд ли будет тем, что вы действительно хотите. DICT объединяет таблицы и синонимы и не говорит вам, кому принадлежит этот объект.

Как я могу запросить базу данных Oracle для отображения имен всех таблиц в ней?

ОТВЕТЫ

Ответ 1

Предполагается, что у вас есть доступ к представлению словаря данных 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 все фильтруют их. CAT также показывает информацию о материализованных журналах просмотра с TABLE_TYPE в таблице "ТАБЛИЦА", которая вряд ли будет тем, что вы действительно хотите. DICT объединяет таблицы и синонимы и не говорит вам, кому принадлежит этот объект.

Ответ 2

Запрос user_tables и dba_tables не работает.
Это сделал:

Ответ 3

Идя еще на один шаг, существует другое представление, называемое cols (all_tab_columns), которое может использоваться для определения того, какие таблицы содержат заданное имя столбца.

чтобы найти все таблицы, имеющие имя, начинающееся с EST, и столбцы, содержащие CALLREF в любом месте их имен.

Это может помочь при разработке тех столбцов, к которым вы хотите присоединиться, например, в зависимости от ваших соглашений об именах таблиц и столбцов.

Ответ 4

Для лучшего просмотра с помощью sqlplus

Если вы используете sqlplus , вы можете сначала настроить несколько параметров для более удобного просмотра, если ваши столбцы становятся искалеченными (эти переменные не должны сохраняться после выхода из сеанса sqlplus ):

Показать все таблицы

Затем вы можете использовать что-то вроде этого, чтобы увидеть все имена таблиц:

Показать таблицы, которыми вы владеете

Как упоминает @Justin Cave, вы можете использовать это, чтобы отображать только те таблицы, которые у вас есть:

Не забывайте о представлениях

Имейте в виду, что некоторые "таблицы" могут быть "видами", поэтому вы также можете попробовать запустить что-то вроде:

Результаты

Это должно привести к тому, что выглядит довольно приемлемым, например:

result

Ответ 5

Простой запрос для выбора таблиц для текущего пользователя:

Ответ 6

Ответ 7

Попробуйте просмотреть словарные данные ниже.

Ответ 8

Существует 3 данных для этого

DBA_TABLES описывает все реляционные таблицы в базе данных.

Описание реляционных таблиц, доступных пользователю

USER_TABLES описывает реляционные таблицы, принадлежащие текущему пользователю. Это представление не отображает столбец ВЛАДЕЛЕЦ.

Ответ 9

Попробуйте выбрать user_tables, в котором перечислены таблицы, принадлежащие текущему пользователю.

Ответ 10

С помощью любого из них вы можете выбрать:

Ответ 11

База данных Oracle для отображения имен всех таблиц, используя запрос ниже

Ответ 12

предоставляет все таблицы всех пользователей только в том случае, если пользователь, с которым вы вошли в систему, имеет привилегии sysdba .

Ответ 13

Ниже приведен закомментированный фрагмент SQL-запросов, описывающий, как можно использовать параметры:

Ответ 14

Вы можете использовать Oracle Data Dictionary, чтобы получить информацию об объектах oracle.

Вы можете получить список таблиц по-разному:

Затем вы можете получить столбцы таблицы, используя имя таблицы:

Затем вы можете получить список зависимостей (триггеры, представления и т.д.):

Затем вы можете получить текстовый источник этих объектов:

И вы можете использовать USER или ALL представления вместо DBA , если хотите.

Ответ 15

Я не нашел ответа, который указывал бы на использование

Ответ 16

Ответ 17

Мы можем получить все таблицы, включая детали столбцов, из запроса ниже:

Ответ 18

Следующий запрос содержит только список необходимых данных, тогда как другие ответы дали мне дополнительные данные, которые меня только смутили.

Ответ 19

Новая функция, доступная в SQLcl (это бесплатный интерфейс командной строки для Oracle Database),

Tables псевдоним.

Вот несколько примеров, показывающих использование и дополнительные аспекты функции. Сначала подключитесь к sql.exe командной строки sql ( sql.exe в windows). Рекомендуется вводить эту конкретную команду sqlcl перед выполнением любых других команд или запросов, которые отображают данные.

SQL> tables

Чтобы узнать, на что ссылается псевдоним tables , вы можете просто использовать alias List<alias>

Вам не нужно определять этот псевдоним, так как он используется по умолчанию в SQLcl. Если вы хотите получить список таблиц из определенной схемы, используя новый пользовательский псевдоним и передавая имя схемы в качестве аргумента привязки с отображением только набора столбцов, вы можете сделать это, используя

SQL> alias tables_schema = select owner, table_name, last_analyzed from all_tables where owner = :ownr;

После этого вы можете просто передать имя схемы в качестве аргумента.

SQL> tables_schema HR

Более сложный предопределенный псевдоним известен как Tables2 , который отображает несколько других столбцов.

Чтобы узнать, какой запрос выполняется в фоновом режиме, введите

Это покажет вам немного более сложный запрос вместе с предопределенными определениями column обычно используемыми в SQL * Plus.

Джефф Смит объясняет больше об псевдонимах здесь

Ответ 20

Я искал список всех имен столбцов, принадлежащих таблице схемы, отсортированный по порядку идентификатора столбца.

Вот запрос, который я использую: -

Ответ 21

Действительно, список таблиц можно получить с помощью запросов SQL. Это можно сделать также с помощью инструментов, которые позволяют создавать словари данных, такие как ERWIN, Toad Data Modeler или ERBuilder. С этими инструментами, в дополнение к именам таблиц, у вас будут поля, их типы, объекты типа (триггеры, последовательности, домен, представления. )

Ниже приведены шаги, которые необходимо выполнить для создания определения таблиц:

  1. Вы должны перепроектировать вашу базу данных
    • В Toad Data Modeler: Меню → Файл → Реверс инжиниринг → Мастер реинжиниринга
    • В ERBuilder Data Modeler: Меню → Файл → Обратный инженер

Ваша база данных будет отображаться в программном обеспечении в виде диаграммы отношений сущностей.

Как я могу выполнить запрос к владельцу Oracle da SELECT , table_name FROM dba_tables ase, чтобы отображать имена всех DBA_TABLESles в нем?

Предполагается, что у вас есть доступ к SELECT_CATALOG_ROLE данным SYSionary view. Если вы не обладаете этими привилегиями, но нуждаетесь в них, вы можете запросить, чтобы администратор базы данных явно предоставлял вам привилегии в этой таблице или что администратор баз данных предоставляет вам SYSTEM привилегию или DBA_TABLES роль (любой из которых позволит вам запрашивать любые данные ALL_TABLESionary table ). Конечно, вы можете исключить определенные схемы, например, и которые имеют большое количество таблиц Oracle, которые вам, вероятно, не нужны . SELECT owner , table_name FROM all_tables ALL_TABLES

Кроме того, если у вас нет доступа USER_TABLES , вы можете увидеть все таблицы, к которым ваша учетная запись имеет доступ через представление: SELECT table_name FROM user_tables

Хотя это может быть подмножество таблиц, доступных в базе данных ( OWNER показывает вам информацию для всех таблиц, которым был предоставлен ваш пользователь).

Если вас интересуют только те таблицы, которыми вы владеете, а не те, к которым у вас есть доступ, вы можете использовать TAB :

Поскольку у вас TABS есть только информация о таблицах, которыми вы владеете, у нее нет CAT столбца - владелец, по определению, это вы.

Oracle также имеет ряд устаревших представлений словаря данных -. и TAB , например DICT , TAB - CAT которые могут быть использованы. В общем, я бы не предложил использовать эти устаревшие представления, если вам не нужно полностью использовать ваши сценарии для Oracle 6. Oracle не изменил эти представления за долгое время, поэтому у них часто возникают проблемы с новыми типами объектов. Например, в представлениях TAB и [DBA|ALL|USER]_TABLES представлениях отображается информация о таблицах, которые находятся в корзине пользователя, в то время как CAT все виды фильтруют их. TABLE_TYPE также показывает информацию о материализованных журналах просмотра с DICT таблицей «ТАБЛИЦА», которая вряд ли будет тем, что вы действительно хотите. DICT объединяет таблицы и синонимы и не говорит вам, кому принадлежит объект.

Как я могу запросить базу данных Oracle для отображения имен всех таблиц в ней?

Я не нашел ответа, который указывал бы на использование

Предполагается, что у вас есть доступ к представлению словаря данных 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 все фильтруют их. CAT также показывает информацию о материализованных журналах просмотра с TABLE_TYPE в таблице "ТАБЛИЦА", которая вряд ли будет тем, что вы действительно хотите. DICT объединяет таблицы и синонимы и не говорит вам, кому принадлежит этот объект.

Читайте также: