Как запросить базу данных Oracle, чтобы отобразить имена всех таблиц в ней?
SELECT owner, table_name
FROM dba_tables
Это при условии, что у вас есть доступ к представлению словаря данных DBA_TABLES
. Если у вас нет таких привилегий, но они вам нужны, вы можете попросить DBA явно предоставить вам привилегии на эту таблицу, или чтобы DBA предоставил вам привилегию 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 также имеет ряд унаследованных представлений словаря данных - например, TAB
, DICT
, TABS
и CAT
- которые можно использовать. В общем, я бы не советовал использовать эти унаследованные представления, если только вам не нужно перенести ваши скрипты на Oracle 6. Oracle не изменял эти представления в течение длительного времени, поэтому они часто имеют проблемы с новыми типами объектов. Например, представления TAB
и CAT
показывают информацию о таблицах, которые находятся в корзине пользователя, в то время как представления [DBA|ALL|USER]_TABLES
отфильтровывают их. CAT
также показывает информацию о журналах материализованных представлений с TABLE_TYPE
в "TABLE", что вряд ли является тем, что вам действительно нужно. DICT
объединяет таблицы и синонимы и не сообщает вам, кому принадлежит объект.
Переход на один шаг дальше, есть еще один вид под названием седла (all_tab_columns), которые могут быть использованы, чтобы определить, какие таблицы содержит имя столбца.
Например:
SELECT table_name, column_name
FROM cols
WHERE table_name LIKE 'EST%'
AND column_name LIKE '%CALLREF%';
найти все таблицы, имеющие имя, начинающееся с EST и столбцы, содержащие CALLREF в любой точке их имена.
Это может помочь при работе, какие столбцы вы хотите присоединиться к НА, к примеру, в зависимости от вашей таблицы и столбца именования.
Если вы're, используя для sqlplus
возможно, вы захотите настроить несколько параметров для более хорошего просмотра, если ваши колонки получают искаженное (эти переменные не должны сохраняться после выхода из вашего `для sqlplus сессии ):
set colsep '|'
set linesize 167
set pagesize 30
set pagesize 1000
Затем вы можете использовать что-то вроде этого, чтобы увидеть имена всех таблиц:
SELECT table_name, owner, tablespace_name FROM all_tables;
Как @Джастин пещеру упоминает, вы можете использовать это, чтобы показать только столы, которыми вы владеете:
SELECT table_name FROM user_tables;
Имейте в виду, что какая-то "столы" и на самом деле может быть "Вид" Так вы можете также попробовать запустить что-то вроде:
SELECT view_name FROM all_views;
Это должно дать что-то, что выглядит вполне приемлемо, как:
Простой запрос для выбора таблиц для текущего пользователя:
SELECT table_name FROM user_tables;
Попробуйте под видом словаря данных.
tabs
dba_tables
all_tables
user_tables
С любой из этих можно выбрать:
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';
Базы данных Oracle, чтобы отобразить имена всех таблиц с помощью запроса ниже в <предварительно&ГТ; Выберите владельцем, имя_таблицы из dba_tables;
Выберите владельцем, имя_таблицы из all_tables;
Select имя_таблицы из user_tables и;&ЛТ;/пре&ГТ; вист больше : http://www.plsqlinformation.com/2016/08/get-list-of-all-tables-in-oracle.html
select * from dba_tables
дает все таблицы всех пользователей, только если пользователь, с которым вы вошли в систему, имеющие привилегий пользователя sysdba`.
Ниже находится прокомментировал фрагмент 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;
Вы можете использовать словарю данных Oracle для получения информации об объектах в Oracle.
Вы можете получить список таблиц различными способами:
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
И вы можете использовать пользователя
или все
, а не АДБ
если вы хотите.
Я не нашел ответа, которые бы указывали на использование
DBA_ALL_TABLES (ALL_ALL_TABLES/USER_ALL_TABLES)
поэтому решил добавить также мою версию. Этот вид на самом деле больше возвращает, что DBA_TABLES как он возвращает объект, а также (http://docs.oracle.com/cd/E11882_01/server.112/e40402/statviews_1003.htm).
Мы можем получить все таблицы, включая сведения о столбцах из ниже запроса:
SELECT * FROM user_tab_columns;
Новая функция доступна в SQLcl( который является бесплатным интерфейсом командной строки для базы данных Oracle) является
Таблиц
псевдоним.
Вот несколько примеров, демонстрирующие использование и дополнительные аспекты. Во-первых, подключение к в SQL
командной строки (sql.exe
в Windows) сессии. Рекомендуется вводить эту конкретную команду sqlcl перед выполнением любой другой команды или запросы, которые отображают данные.
SQL> set sqlformat ansiconsole -- resizes the columns to the width of the
-- data to save space
В SQL&ГТ; таблицы
TABLES
-----------
REGIONS
LOCATIONS
DEPARTMENTS
JOBS
EMPLOYEES
JOB_HISTORY
..
Чтобы знать, что псевдоним таблиц
имеет в виду, вы можете просто использовать псевдоним список <псевдоним&ГТ;`
SQL> alias list tables
tables - tables <schema> - show tables from schema
--------------------------------------------------
select table_name "TABLES" from user_tables
Вы Don'т иметь, чтобы определить этот псевдоним, как это происходит по умолчанию при SQLcl. Если вы хотите получить список таблиц из определенной схемы, используя новый пользовательский псевдоним и передает имя схемы в качестве аргумента связываются с только набор столбцов отображается, вы можете сделать это, используя
В SQL&ГТ; псевдоним tables_schema = выбор владельца, имя_таблицы, last_analyzed из all_tables где владелец = :ownr;
После этого вы можете просто передать имя схемы в качестве аргумента
В SQL&ГТ; tables_schema ч
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
Это покажет вам немного более сложный запрос, а также определения предопределенный столбец
обычно используется в SQL*плюс.
Джефф Смит объясняет больше о псевдонимах здесь
Действительно, можно иметь список таблиц через SQL-запросы.можно сделать это также через инструменты, которые позволяют создание словарей данных, таких как Эрвин, жаба моделирование данных или ERBuilder. С помощью этих инструментов, помимо названия таблицы, вы будете иметь полей, их типов, как объекты(триггеры, последовательности, домен, взгляды...)
Ниже шаги, чтобы следовать, чтобы создать ваше определение таблицы:
Ваша база данных будет отображаться в программе в качестве диаграммы вариантов использования.
Я искал, чтобы получить список всех имен столбцов таблицы схемы, отсортированный по приказу идентификатор столбца.
Здесь'ы запрос я использую: -
SELECT COLUMN_NAME
FROM ALL_TAB_COLUMNS
WHERE OWNER = 'schema_owner_username' AND TABLE_NAME='table_name'
ORDER BY COLUMN_ID ASC;