Получить список всех таблиц в Oracle? - PullRequest
1032 голосов
/ 15 октября 2008

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

Ответы [ 20 ]

6 голосов
/ 07 марта 2014

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

SELECT DISTINCT OWNER, OBJECT_NAME 
    FROM DBA_OBJECTS 
    WHERE OBJECT_TYPE = 'TABLE' AND OWNER='SOME_SCHEMA_NAME';

SELECT DISTINCT OWNER, OBJECT_NAME 
    FROM ALL_OBJECTS 
    WHERE OBJECT_TYPE = 'TABLE' AND OWNER='SOME_SCHEMA_NAME';
5 голосов
/ 14 августа 2012
select * from dba_tables

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

3 голосов
/ 25 октября 2017

Включая просмотры:

SELECT owner, table_name as table_view
  FROM dba_tables
UNION ALL
SELECT owner, view_name as table_view
  FROM DBA_VIEWS
3 голосов
/ 11 ноября 2016

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

DBA_ALL_TABLES (ALL_ALL_TABLES/USER_ALL_TABLES)

поэтому решил добавить и мою версию. Это представление фактически возвращает больше, чем DBA_TABLES, так как оно также возвращает таблицы объектов (http://docs.oracle.com/cd/E11882_01/server.112/e40402/statviews_1003.htm).

3 голосов
/ 09 октября 2016

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

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

select * 
from dba_tables

или, например:

select * 
from dba_objects 
where object_type = 'TABLE' 

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

select * 
from dba_tab_columns

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

select * 
from dba_dependencies
where referenced_type='TABLE' and referenced_name=:t_name 

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

select * from dba_source

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

3 голосов
/ 21 июня 2016

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

-- need to have select catalog role
SELECT * FROM dba_tables;

-- to see tables of your schema
SELECT * FROM user_tables;

-- tables inside your schema and tables of other schema which you possess select grants on
SELECT * FROM all_tables;
3 голосов
/ 20 ноября 2017

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

SELECT * FROM user_tab_columns;
2 голосов
/ 31 марта 2019

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

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 from schema
--------------------------------------------------

 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> tables_schema HR

OWNER   TABLE_NAME               LAST_ANALYZED
HR      DUMMY1                   18-10-18
HR      YOURTAB2                 16-11-18
HR      YOURTABLE                01-12-18
HR      ID_TABLE                 05-12-18
HR      REGIONS                  26-05-18
HR      LOCATIONS                26-05-18
HR      DEPARTMENTS              26-05-18
HR      JOBS                     26-05-18
HR      EMPLOYEES                12-10-18
..
..

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

SQL> tables2

Tables
======
TABLE_NAME                 NUM_ROWS   BLOCKS   UNFORMATTED_SIZE COMPRESSION     INDEX_COUNT   CONSTRAINT_COUNT   PART_COUNT LAST_ANALYZED
AN_IP_TABLE                       0        0                  0 Disabled                  0                  0            0 > Month
PARTTABLE                         0        0                  0                           1                  0            1 > Month
TST2                              0        0                  0 Disabled                  0                  0            0 > Month
TST3                              0        0                  0 Disabled                  0                  0            0 > Month
MANAGE_EMPLYEE                    0        0                  0 Disabled                  0                  0            0 > Month
PRODUCT                           0        0                  0 Disabled                  0                  0            0 > Month
ALL_TAB_X78EHRYFK                 0        0                  0 Disabled                  0                  0            0 > Month
TBW                               0        0                  0 Disabled                  0                  0            0 > Month
DEPT                              0        0                  0 Disabled                  0                  0            0 > Month

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

alias list tables2

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

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

1 голос
/ 09 ноября 2014

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

select table_name from user_tables;
1 голос
/ 18 апреля 2018

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

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

SELECT COLUMN_NAME
FROM ALL_TAB_COLUMNS
WHERE OWNER = 'schema_owner_username' AND TABLE_NAME='table_name'
ORDER BY COLUMN_ID ASC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...