@MartinThoma Нету. попробовал сначала, прежде чем прибегнуть к Google
Адам Берли
Ответы:
1366
SELECT owner, table_name
FROM dba_tables
Это предполагает, что у вас есть доступ к представлению DBA_TABLESсловаря данных. Если у вас нет этих привилегий, но они нужны, вы можете запросить, чтобы администратор БД явно предоставил вам привилегии для этой таблицы, или чтобы администратор БД предоставил вам SELECT ANY DICTIONARYпривилегию или SELECT_CATALOG_ROLEроль (любая из которых позволит вам запросить любую таблицу словаря данных). ). Конечно, вы можете захотеть исключить определенные схемы, такие как SYSи SYSTEMимеющие большое количество таблиц Oracle, которые вам, вероятно, не нужны .
Кроме того, если у вас нет доступа DBA_TABLES, вы можете просмотреть все таблицы, к которым у вашей учетной записи есть доступ, через ALL_TABLESпредставление:
SELECT owner, table_name
FROM all_tables
Хотя это может быть подмножеством таблиц, доступных в базе данных ( ALL_TABLESпоказывает информацию обо всех таблицах, к которым у вашего пользователя есть доступ).
Если вас интересуют только те таблицы, которыми вы владеете, а не те, к которым у вас есть доступ, вы можете использовать USER_TABLES:
SELECT table_name
FROM user_tables
Поскольку он USER_TABLESсодержит информацию только о тех таблицах, которыми вы владеете, у него нет OWNERстолбца - владельцем по определению является вы.
Oracle также имеет ряд устаревших данных словаря views-- TAB, DICT, TABSи CATдля example-- , которые можно было бы использовать. В целом, я бы не советовал использовать эти устаревшие представления, если вам абсолютно не нужно перенести свои сценарии в Oracle 6. Oracle не изменяла эти представления в течение длительного времени, поэтому у них часто возникают проблемы с объектами более новых типов. Например, TABи CATпредставления, и представления показывают информацию о таблицах, которые находятся в корзине пользователя, в то время как [DBA|ALL|USER]_TABLESвсе представления отфильтровывают их. CATтакже показывает информацию о материализованных журналах представлений с TABLE_TYPE«TABLE», что вряд ли будет тем, что вы действительно хотите. DICTобъединяет таблицы и синонимы и не говорит вам, кто владеет объектом.
Я получаю исключение "ORA-00942: таблица или представление не существует"
Vitule
46
Тогда вам не дали разрешение на просмотр всех таблиц в базе данных. Вы можете запросить представление словаря данных ALL_TABLES, чтобы увидеть все таблицы, к которым у вас есть доступ, которые могут быть небольшим подмножеством таблиц в базе данных.
Джастин Кейв
Простая ошибка, если не обычный пользователь sqlplus: добавьте конечную точку с запятой (';'), если вы просто не получаете результаты с помощью вышеуказанных команд :).
Кимхани
Просто обратите внимание, что в Oracle 12c в словаре данных dba_users есть столбец, помогающий удалить системные таблицы из набора результатов. Полный запрос будет SELECT владельца, имя_таблицы из dba_tables, где владелец не в (выберите имя пользователя из dba_users, где oracle_maintained = 'Y')
саритонин
181
Запрашивала user_tablesи dba_tablesне работала.
Этот сделал:
@LimitedAtonement Извините, это неправильно. Представление называется user_tables, а не user_table. Если user_tables не работает для vitule, что-то еще не так.
Фрэнк Шмитт
67
Если пойти еще дальше, есть еще одно представление с именем cols (all_tab_columns), которое можно использовать для определения того, какие таблицы содержат данное имя столбца.
Например:
SELECT table_name, column_name
FROM cols
WHERE table_name LIKE'EST%'AND column_name LIKE'%CALLREF%';
найти все таблицы, имена которых начинаются с EST, и столбцы, содержащие CALLREF, где угодно в их именах.
Это может помочь при определении, к каким столбцам вы хотите присоединиться, например, в зависимости от вашей таблицы и соглашений об именах столбцов.
Если вы используете, sqlplusвы можете сначала настроить несколько параметров для более приятного просмотра, если ваши столбцы искажаются (эти переменные не должны сохраняться после выхода из sqlplusсеанса):
set colsep '|'set linesize 167set pagesize 30set pagesize 1000
Показать все таблицы
Затем вы можете использовать что-то вроде этого, чтобы увидеть все имена таблиц:
SELECT table_name, owner, tablespace_name FROM all_tables;
Показать свои таблицы
Как упоминает @Justin Cave, вы можете использовать это для отображения только тех таблиц, которые у вас есть:
SELECT table_name FROM user_tables;
Не забывайте о видах
Имейте в виду, что некоторые «таблицы» на самом деле могут быть «представлениями», поэтому вы также можете попробовать выполнить что-то вроде:
SELECT view_name FROM all_views;
Результаты
Это должно привести к чему-то, что выглядит довольно приемлемо, как:
SELECTDISTINCT OWNER, OBJECT_NAME
FROM DBA_OBJECTS
WHERE OBJECT_TYPE ='TABLE'AND OWNER='SOME_SCHEMA_NAME';SELECTDISTINCT OWNER, OBJECT_NAME
FROM ALL_OBJECTS
WHERE OBJECT_TYPE ='TABLE'AND OWNER='SOME_SCHEMA_NAME';
Это на самом деле не правильно. SYSDBA не требуется. Вы можете получить доступ к DBA_TABLES многими способами. 1.) Прямое предоставление пользователю объекта от SYS. 2.) Предоставление пользователю права ВЫБРАТЬ ЛЮБОЙ СЛОВАРЬ. 3.) Предоставление роли SELECT_CATALOG_ROLE.
Марк Дж. Бобак
4
Я не нашел ответа, который указывал бы на использование
Ниже приведен закомментированный фрагмент SQL-запросов, описывающий, как можно использовать параметры:
-- need to have select catalog roleSELECT*FROM dba_tables;-- to see tables of your schemaSELECT*FROM user_tables;-- tables inside your schema and tables of other schema which you possess select grants onSELECT*FROM all_tables;
Новая функция, доступная в SQLcl (который является бесплатным интерфейсом командной строки для Oracle Database):
Tables псевдоним.
Вот несколько примеров, показывающих использование и дополнительные аспекты функции. Сначала подключитесь к сеансу sqlкомандной строки ( sql.exeв windows). Рекомендуется вводить эту конкретную команду sqlcl перед выполнением любых других команд или запросов, которые отображают данные.
SQL>set sqlformat ansiconsole -- resizes the columns to the width of the -- data to save space
SQL> tables
TABLES
-----------
REGIONS
LOCATIONS
DEPARTMENTS
JOBS
EMPLOYEES
JOB_HISTORY
..
Чтобы узнать, на что tablesссылается псевдоним, вы можете просто использоватьalias list <alias>
SQL> alias list tables
tables - tables <schema>- show tables fromschema--------------------------------------------------select table_name "TABLES"from user_tables
Вам не нужно определять этот псевдоним, так как он используется по умолчанию в SQLcl. Если вы хотите получить список таблиц из определенной схемы, используя новый пользовательский псевдоним и передав имя схемы в качестве аргумента привязки с отображаемым только набором столбцов, вы можете сделать это, используя
SQL> alias tables_schema = select owner, table_name, last_analyzed from all_tables where owner = :ownr;
После этого вы можете просто передать имя схемы в качестве аргумента.
Действительно, список таблиц можно получить с помощью запросов SQL. Это можно сделать также с помощью инструментов, которые позволяют создавать словари данных, такие как ERWIN , Toad Data Modeler или ERBuilder. . С этими инструментами, в дополнение к именам таблиц, у вас будут поля, их типы, объекты (триггеры, последовательности, домен, представления ...)
Ниже приведены шаги, которые необходимо выполнить для создания определения таблиц:
Вы должны перепроектировать вашу базу данных
В Toad Data Modeler: Меню -> Файл -> Реверс-инженер -> Мастер реинжиниринга
В ERBuilder Data Modeler: Меню -> Файл -> Обратный инженер
Ваша база данных будет отображаться в программном обеспечении в виде диаграммы отношений сущностей.
Создайте свой словарь данных, который будет содержать ваше определение таблиц
В Моделе данных жаб: Меню -> Модель -> Создать отчет -> Выполнить
В ERBuilder Data Modeler: Меню -> Инструмент -> создать документацию модели
SHOW TABLES
(как в MySQL)?Ответы:
Это предполагает, что у вас есть доступ к представлению
DBA_TABLES
словаря данных. Если у вас нет этих привилегий, но они нужны, вы можете запросить, чтобы администратор БД явно предоставил вам привилегии для этой таблицы, или чтобы администратор БД предоставил вамSELECT ANY DICTIONARY
привилегию илиSELECT_CATALOG_ROLE
роль (любая из которых позволит вам запросить любую таблицу словаря данных). ). Конечно, вы можете захотеть исключить определенные схемы, такие какSYS
иSYSTEM
имеющие большое количество таблиц Oracle, которые вам, вероятно, не нужны .Кроме того, если у вас нет доступа
DBA_TABLES
, вы можете просмотреть все таблицы, к которым у вашей учетной записи есть доступ, черезALL_TABLES
представление:Хотя это может быть подмножеством таблиц, доступных в базе данных (
ALL_TABLES
показывает информацию обо всех таблицах, к которым у вашего пользователя есть доступ).Если вас интересуют только те таблицы, которыми вы владеете, а не те, к которым у вас есть доступ, вы можете использовать
USER_TABLES
:Поскольку он
USER_TABLES
содержит информацию только о тех таблицах, которыми вы владеете, у него нетOWNER
столбца - владельцем по определению является вы.Oracle также имеет ряд устаревших данных словаря views--
TAB
,DICT
,TABS
иCAT
для example-- , которые можно было бы использовать. В целом, я бы не советовал использовать эти устаревшие представления, если вам абсолютно не нужно перенести свои сценарии в Oracle 6. Oracle не изменяла эти представления в течение длительного времени, поэтому у них часто возникают проблемы с объектами более новых типов. Например,TAB
иCAT
представления, и представления показывают информацию о таблицах, которые находятся в корзине пользователя, в то время как[DBA|ALL|USER]_TABLES
все представления отфильтровывают их.CAT
также показывает информацию о материализованных журналах представлений сTABLE_TYPE
«TABLE», что вряд ли будет тем, что вы действительно хотите.DICT
объединяет таблицы и синонимы и не говорит вам, кто владеет объектом.источник
Запрашивала
user_tables
иdba_tables
не работала.Этот сделал:
источник
Если пойти еще дальше, есть еще одно представление с именем cols (all_tab_columns), которое можно использовать для определения того, какие таблицы содержат данное имя столбца.
Например:
найти все таблицы, имена которых начинаются с EST, и столбцы, содержащие CALLREF, где угодно в их именах.
Это может помочь при определении, к каким столбцам вы хотите присоединиться, например, в зависимости от вашей таблицы и соглашений об именах столбцов.
источник
select * from cols
и получил 0 строк.Для лучшего просмотра с
sqlplus
Если вы используете,
sqlplus
вы можете сначала настроить несколько параметров для более приятного просмотра, если ваши столбцы искажаются (эти переменные не должны сохраняться после выхода изsqlplus
сеанса):Показать все таблицы
Затем вы можете использовать что-то вроде этого, чтобы увидеть все имена таблиц:
Показать свои таблицы
Как упоминает @Justin Cave, вы можете использовать это для отображения только тех таблиц, которые у вас есть:
Не забывайте о видах
Имейте в виду, что некоторые «таблицы» на самом деле могут быть «представлениями», поэтому вы также можете попробовать выполнить что-то вроде:
Результаты
Это должно привести к чему-то, что выглядит довольно приемлемо, как:
источник
pagesize 30
сpagesize 1000
?Простой запрос для выбора таблиц для текущего пользователя:
источник
----------------ИЛИ------------------
----------------ИЛИ------------------
источник
Попробуйте следующие представления словаря данных.
источник
Попробуйте выбрать из user_tables, в которой перечислены таблицы, принадлежащие текущему пользователю.
источник
База данных Oracle для отображения имен всех таблиц, используя запрос ниже
более подробно: http://www.plsqlinformation.com/2016/08/get-list-of-all-tables-in-oracle.html
источник
С любым из них вы можете выбрать:
источник
выдает все таблицы всех пользователей, только если пользователь, с которым вы вошли в систему, имеет
sysdba
привилегии.источник
Я не нашел ответа, который указывал бы на использование
поэтому решил добавить и мою версию. Это представление фактически возвращает больше, чем DBA_TABLES, так как оно также возвращает таблицы объектов ( http://docs.oracle.com/cd/E11882_01/server.112/e40402/statviews_1003.htm ).
источник
Вы можете использовать Oracle Data Dictionary для получения информации об объектах оракула.
Вы можете получить список таблиц разными способами:
или например:
Затем вы можете получить столбцы таблицы, используя имя таблицы:
Затем вы можете получить список зависимостей (триггеры, представления и т. Д.):
Затем вы можете получить текстовый источник этих объектов:
И вы можете использовать
USER
илиALL
представления вместо,DBA
если вы хотите.источник
В том числе просмотров:
источник
Мы можем получить все таблицы, включая детали столбцов, из запроса ниже:
источник
Ниже приведен закомментированный фрагмент SQL-запросов, описывающий, как можно использовать параметры:
источник
Следующий запрос только перечисляет необходимые данные, тогда как другие ответы дали мне дополнительные данные, которые только смутили меня.
источник
Новая функция, доступная в SQLcl (который является бесплатным интерфейсом командной строки для Oracle Database):
Tables
псевдоним.Вот несколько примеров, показывающих использование и дополнительные аспекты функции. Сначала подключитесь к сеансу
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.Джефф Смит объясняет больше об псевдонимах здесь
источник
Я искал список всех имен столбцов, принадлежащих таблице схемы, отсортированный по порядку идентификатора столбца.
Вот запрос, который я использую: -
источник
Действительно, список таблиц можно получить с помощью запросов SQL. Это можно сделать также с помощью инструментов, которые позволяют создавать словари данных, такие как ERWIN , Toad Data Modeler или ERBuilder. . С этими инструментами, в дополнение к именам таблиц, у вас будут поля, их типы, объекты (триггеры, последовательности, домен, представления ...)
Ниже приведены шаги, которые необходимо выполнить для создания определения таблиц:
Ваша база данных будет отображаться в программном обеспечении в виде диаграммы отношений сущностей.
источник
это дополнительное «все» в начале дает дополнительные 3 столбца, которые:
источник