Pobierz listę wszystkich tabel w Oracle?
Jak odpytywać bazę danych Oracle, aby wyświetlić nazwy wszystkich tabel w niej zawartych?
24 answers
SELECT owner, table_name
FROM dba_tables
Zakłada się, że masz dostęp do widoku słownika danych DBA_TABLES
. Jeśli nie masz tych uprawnień, ale ich potrzebujesz, możesz zażądać, aby dba wyraźnie przyznał Ci uprawnienia w tej tabeli, lub aby DBA przyznał Ci uprawnienia SELECT ANY DICTIONARY
lub rolę SELECT_CATALOG_ROLE
(które z nich pozwoliłyby Ci odpytywać dowolną tabelę słownika danych). Oczywiście możesz wykluczyć niektóre schematy, takie jak SYS
i SYSTEM
, które mają dużą liczbę tabel Oracle, które prawdopodobnie cię nie interesują około.
Alternatywnie, jeśli nie masz dostępu do DBA_TABLES
, możesz zobaczyć wszystkie tabele, do których ma dostęp twoje konto za pośrednictwem widoku ALL_TABLES
:
SELECT owner, table_name
FROM all_tables
Chociaż może to być podzbiór tabel dostępnych w bazie danych (ALL_TABLES
pokazuje informacje dla wszystkich tabel, do których Użytkownik otrzymał dostęp).
Jeśli interesują Cię tylko tabele, które posiadasz, a nie te, do których masz dostęp, możesz użyć USER_TABLES
:
SELECT table_name
FROM user_tables
Od USER_TABLES
ma tylko informacje o tabel, które posiadasz, nie ma kolumny OWNER
- właścicielem z definicji jesteś ty.
Oracle ma również wiele widoków starszego słownika danych-- TAB
, DICT
, TABS
, i CAT
na przykład -- to może być użyte. Ogólnie rzecz biorąc, nie sugerowałbym używania tych starszych widoków, chyba że bezwzględnie musisz przenieść swoje skrypty do Oracle 6. Oracle od dawna nie zmieniało tych poglądów, dlatego często mają problemy z nowszymi typami obiektów. Na przykład widoki TAB
i CAT
pokazują informacje o tabelach znajdujących się w koszu użytkownika, podczas gdy widoki [DBA|ALL|USER]_TABLES
filtrują je wszystkie. CAT
pokazuje również informacje o zmaterializowanych dziennikach widoków za pomocą TABLE_TYPE
"tabeli", która jest mało prawdopodobne, aby była tym, czego naprawdę chcesz. DICT
łączy tabele i synonimy i nie mówi, Kto jest właścicielem obiektu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-19 12:38:17
Zapytania user_tables
i dba_tables
nie zadziałały.
Ten zrobił:
select table_name from all_tables
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-15 18:12:19
Idąc o krok dalej, istnieje inny widok o nazwie cols (all_tab_columns), który może być użyty do ustalenia, które tabele zawierają daną nazwę kolumny.
Na przykład:
SELECT table_name, column_name
FROM cols
WHERE table_name LIKE 'EST%'
AND column_name LIKE '%CALLREF%';
Aby znaleźć wszystkie tabele o nazwie zaczynającej się od EST i kolumny zawierające CALLREF w dowolnym miejscu w ich nazwach.
Może to pomóc w ustaleniu, do których kolumn chcesz dołączyć, na przykład w zależności od konwencji nazewnictwa tabeli i kolumn.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-11 05:41:44
Dla lepszego oglądania z sqlplus
Jeśli używasz sqlplus
możesz najpierw ustawić kilka parametrów dla lepszego wyświetlania, jeśli Twoje kolumny są zniekształcone (zmienne te nie powinny się utrzymywać po zakończeniu sesji sqlplus
):
set colsep '|'
set linesize 167
set pagesize 30
set pagesize 1000
Pokaż Wszystkie Tabele
Możesz użyć czegoś takiego, aby zobaczyć wszystkie nazwy tabel:
SELECT table_name, owner, tablespace_name FROM all_tables;
Pokaż Tabele, Które Posiadasz
Jak wspomina @ Justin Cave, możesz użyć tego, aby pokazać tylko tabele, które własne:
SELECT table_name FROM user_tables;
Nie zapomnij o poglądach
Pamiętaj, że niektóre "tabele" mogą być "widokami", więc możesz również spróbować uruchomić coś w stylu:
SELECT view_name FROM all_views;
Wyniki
To powinno dać coś, co wygląda dość akceptowalnie jak:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-17 16:26:21
Proste zapytanie do wyboru tabel dla bieżącego użytkownika:
SELECT table_name FROM user_tables;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-26 22:15:45
select object_name from user_objects where object_type='TABLE';
----------------lub------------------
select * from tab;
----------------lub------------------
select table_name from user_tables;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-08 09:28:32
Wypróbuj poniższe widoki słownika danych.
tabs
dba_tables
all_tables
user_tables
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-28 10:48:27
Baza danych Oracle do wyświetlania nazw wszystkich tabel za pomocą poniższego zapytania
SELECT owner, table_name FROM dba_tables; SELECT owner, table_name FROM all_tables; SELECT table_name FROM user_tables;
Vist więcej: http://www.plsqlinformation.com/2016/08/get-list-of-all-tables-in-oracle.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-17 10:16:09
Spróbuj wybrać z listy user_tables , która wyświetla tabele należące do bieżącego użytkownika.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-15 18:08:50
Z którymkolwiek z nich możesz wybrać:
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';
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-15 22:10:26
select * from dba_tables
Podaje wszystkie tabele wszystkich użytkowników tylko wtedy, gdy użytkownik, z którym się zalogowałeś, ma uprawnienia sysdba
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-29 13:54:10
Nie znalazłem odpowiedzi, która wskazywałaby na użycie
DBA_ALL_TABLES (ALL_ALL_TABLES/USER_ALL_TABLES)
Więc postanowiłem dodać również moją wersję. Widok ten zwraca więcej niż DBA_TABLES, ponieważ zwraca również tabele obiektów ( http://docs.oracle.com/cd/E11882_01/server.112/e40402/statviews_1003.htm).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-11 15:31:02
Możesz użyć Oracle Data Dictionary , aby uzyskać informacje o obiektach oracle.
Możesz uzyskać listę tabel na różne sposoby:
select *
from dba_tables
Lub na przykład:
select *
from dba_objects
where object_type = 'TABLE'
Następnie możesz uzyskać kolumny tabeli używając nazwy tabeli:
select *
from dba_tab_columns
Następnie można uzyskać listę zależności (wyzwalaczy, widoków itp.):
select *
from dba_dependencies
where referenced_type='TABLE' and referenced_name=:t_name
Następnie można uzyskać źródło tekstu tego obiektu:
select * from dba_source
I możesz użyć USER
lub ALL
zamiast DBA
, jeśli chcesz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-15 12:58:30
Łącznie z odsłonami:
SELECT owner, table_name as table_view
FROM dba_tables
UNION ALL
SELECT owner, view_name as table_view
FROM DBA_VIEWS
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-25 11:44:29
Możemy uzyskać wszystkie tabele wraz ze szczegółami kolumn z poniższego zapytania:
SELECT * FROM user_tab_columns;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-03 17:41:34
Poniżej znajduje się skomentowany fragment zapytań SQL opisujący, w jaki sposób można skorzystać z opcji:
-- 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;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-03 17:47:26
Nowa funkcja dostępna w SQLcl( co jest darmowym interfejsem wiersza poleceń dla bazy danych Oracle) jest
Tables
alias.
Oto kilka przykładów pokazujących użycie i dodatkowe aspekty tej funkcji. Najpierw połącz się z sesją linii poleceń sql
(sql.exe
w systemie windows). Zaleca się wprowadzenie tego polecenia sqlcl przed uruchomieniem innych poleceń lub zapytań, które wyświetlają data.
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
..
Aby dowiedzieć się, do czego odnosi się alias tables
, możesz po prostu użyć alias list <alias>
SQL> alias list tables
tables - tables <schema> - show tables from schema
--------------------------------------------------
select table_name "TABLES" from user_tables
Nie musisz definiować tego aliasu, ponieważ jest on domyślnie ustawiony w sqlcl. Jeśli chcesz wyświetlić listę tabel z określonego schematu, używając nowego aliasu zdefiniowanego przez użytkownika i przekazując nazwę schematu jako argument bind z wyświetlanym tylko zestawem kolumn, możesz to zrobić używając
SQL> alias tables_schema = select owner, table_name, last_analyzed from all_tables where owner = :ownr;
Potem możesz po prostu przejść nazwa schematu jako argument
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
..
..
Bardziej wyrafinowany predefiniowany alias znany jest jako Tables2
, który wyświetla kilka innych kolumn.
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
Aby wiedzieć jakie zapytanie uruchamia się w tle, wpisz
alias list tables2
To pokaże Ci nieco bardziej złożone zapytanie wraz z predefiniowanymi definicjami column
powszechnie używanymi w SQL * Plus.
Jeff Smith wyjaśnia więcej o aliasach proszę.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-31 15:49:04
Poniższe zapytanie zawiera tylko wymagane dane, podczas gdy inne odpowiedzi dały mi dodatkowe dane, które tylko mnie zdezorientowały.
select table_name from user_tables;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-29 09:16:41
Szukałem listy wszystkich nazw kolumn należących do tabeli schematu posortowanej według kolejności ID kolumny.
Oto zapytanie, którego używam: -
SELECT COLUMN_NAME
FROM ALL_TAB_COLUMNS
WHERE OWNER = 'schema_owner_username' AND TABLE_NAME='table_name'
ORDER BY COLUMN_ID ASC;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-18 05:33:55
Rzeczywiście, możliwe jest posiadanie listy tabel poprzez SQL queries.it możliwe jest to również za pomocą narzędzi umożliwiających generowanie słowników danych, takich jak ERWIN, Toad Data Modeler lub ERBuilder. Dzięki tym narzędziom, oprócz nazw tabel, będziesz mieć pola, ich typy, obiekty takie jak (wyzwalacze, sekwencje, domeny, widoki...)
Poniżej kroki, które należy wykonać, aby wygenerować definicję tabel:
- musisz odtworzyć swój baza danych
- W Toad data modeler: Menu - > File - > reverse engineer - > reverse engineering wizard
- W ERBuilder data modeler: Menu - > File - > reverse engineer
Twoja baza danych zostanie wyświetlona w oprogramowaniu jako schemat relacji encji.
- Wygeneruj słownik danych, który będzie zawierał definicję tabel
- W Toad data modeler: Menu - > Model - > Generuj raport - > Uruchom
- w danych Erbuildera modeler: Menu - > narzędzie - > generowanie dokumentacji modelu
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-07-09 15:39:03
wykonaj poniższe polecenia:
Pokaż wszystkie tabele w bazie danych Oracle
sql> SELECT table_name FROM dba_tables;
Pokaż tabele należące do bieżącego użytkownika
sql> SELECT table_name FROM user_tables;
Pokaż tabele dostępne dla bieżącego użytkownika
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-09-16 12:14:51
select * from all_all_tables
To dodatkowe "wszystko" na początku daje dodatkowe 3 kolumny, które są:
OBJECT_ID_TYPE
TABLE_TYPE_OWNER
TABLE_TYPE
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-03 14:07:10
Aby uzyskać wszystkie nazwy tabel, możemy użyć:
Select owner, table_name from sys.all_tables;
Aby uzyskać nazwy kolumn dla wszystkich tabel, możemy użyć:
Select owner, table_name, column_name, data_type, data_length from sys.all_tab_columns
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-30 21:04:01
Tabele w bieżącym schemacie logowania użytkownika
select * from tabs;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-06 16:03:15