Pertanyaan Dapatkan daftar semua tabel di Oracle?


Bagaimana saya menanyakan database Oracle untuk menampilkan nama semua tabel di dalamnya?


936
2017-10-15 17:54


asal


Jawaban:


SELECT owner, table_name
  FROM dba_tables

Ini mengasumsikan bahwa Anda memiliki akses ke DBA_TABLES tampilan kamus data. Jika Anda tidak memiliki hak istimewa tersebut tetapi membutuhkannya, Anda dapat meminta DBA secara eksplisit memberikan Anda hak istimewa di meja itu, atau, bahwa DBA memberi Anda SELECT ANY DICTIONARY hak istimewa atau SELECT_CATALOG_ROLE role (yang memungkinkan Anda untuk melakukan query pada tabel kamus data). Tentu saja, Anda mungkin ingin mengecualikan skema tertentu seperti SYS dan SYSTEM yang memiliki sejumlah besar tabel Oracle yang mungkin tidak Anda pedulikan.

Atau, jika Anda tidak memiliki akses ke DBA_TABLES, Anda dapat melihat semua tabel yang dapat diakses oleh akun Anda melalui ALL_TABLES melihat:

SELECT owner, table_name
  FROM all_tables

Meskipun, itu mungkin bagian dari tabel yang tersedia dalam database (ALL_TABLES menunjukkan informasi untuk semua tabel yang diberikan akses kepada pengguna Anda).

Jika Anda hanya peduli dengan tabel yang Anda miliki, bukan yang bisa Anda akses, Anda bisa menggunakannya USER_TABLES:

SELECT table_name
  FROM user_tables

Sejak USER_TABLES hanya memiliki informasi tentang tabel yang Anda miliki, itu tidak memiliki OWNER kolom - pemilik, menurut definisi, adalah Anda.

Oracle juga memiliki sejumlah penayangan kamus data lawas - TAB, DICT, TABS, dan CAT misalnya-- yang bisa digunakan. Secara umum, saya tidak akan menyarankan penggunaan tampilan legacy ini kecuali Anda benar-benar harus membuat backport skrip Anda ke Oracle 6. Oracle tidak mengubah pandangan ini dalam waktu yang lama sehingga sering memiliki masalah dengan objek jenis yang lebih baru. Misalnya, TAB dan CAT tampilan keduanya menunjukkan informasi tentang tabel yang ada di recycle bin pengguna sementara [DBA|ALL|USER]_TABLES tampilan semua memfilternya. CAT juga menunjukkan informasi tentang tampilan log yang terwujud dengan TABLE_TYPE "TABEL" yang tidak mungkin menjadi apa yang Anda inginkan. DICT menggabungkan tabel dan sinonim dan tidak memberi tahu Anda siapa yang memiliki objek tersebut.


1189
2017-10-15 17:56



Querying user_tables dan dba_tables tidak berfungsi.
Yang satu ini:

select table_name from all_tables  

158
2017-10-15 18:12



Selangkah lebih maju, ada pandangan lain yang disebut cols (all_tab_columns) yang dapat digunakan untuk memastikan tabel mana yang berisi nama kolom tertentu.

Sebagai contoh:

SELECT table_name, column_name
FROM cols
WHERE table_name LIKE 'EST%'
AND column_name LIKE '%CALLREF%';

untuk menemukan semua tabel yang memiliki nama yang diawali dengan EST dan kolom yang berisi CALLREF di mana saja dalam nama mereka.

Ini dapat membantu saat menentukan kolom mana Anda ingin bergabung, misalnya, tergantung pada konvensi penamaan tabel dan kolom Anda.


57
2017-09-04 07:34



Untuk tampilan yang lebih baik dengan sqlplus

Jika Anda menggunakan sqlplus Anda mungkin ingin terlebih dahulu mengatur beberapa parameter untuk tampilan yang lebih baik jika kolom Anda semakin rusak (variabel-variabel ini tidak boleh berlanjut setelah Anda keluar dari sqlplus sesi):

set colsep '|'
set linesize 167
set pagesize 30
set pagesize 1000

Tampilkan Semua Tabel

Anda kemudian dapat menggunakan sesuatu seperti ini untuk melihat semua nama tabel:

SELECT table_name, owner, tablespace_name FROM all_tables;

Tampilkan Tabel yang Anda Miliki

Seperti disebutkan @Justin Cave, Anda dapat menggunakan ini untuk hanya menampilkan tabel yang Anda miliki:

SELECT table_name FROM user_tables;

Jangan Lupa tentang Views

Perlu diingat bahwa beberapa "tabel" mungkin sebenarnya adalah "tampilan" sehingga Anda juga dapat mencoba menjalankan sesuatu seperti:

SELECT view_name FROM all_views;

Hasil

Ini harus menghasilkan sesuatu yang terlihat cukup dapat diterima seperti:

result


39
2017-07-17 16:20



Kueri sederhana untuk memilih tabel untuk pengguna saat ini:

  SELECT table_name FROM user_tables;

19
2017-12-21 16:32



    select object_name from user_objects where object_type='TABLE';

----------------ATAU------------------

    select * from tab;

----------------ATAU------------------

    select table_name from user_tables;

15
2017-10-08 09:28



Coba tampilan kamus data di bawah ini.

tabs
dba_tables
all_tables
user_tables

14
2018-04-25 17:30



Coba pilih dari pengguna_table yang daftar tabel yang dimiliki oleh pengguna saat ini.


8
2017-10-15 18:08



Dengan semua itu, Anda dapat memilih:

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';

6
2018-03-07 18:11



Ada ada 3 datadictinary untuk ini

DBA_TABLES menggambarkan semua tabel relasional dalam database.

SELECT owner, table_name
  FROM dba_tables

Deskripsi tabel relasional dapat diakses oleh pengguna

SELECT owner, table_name
  FROM all_tables

USER_TABLES menggambarkan tabel relasional yang dimiliki oleh pengguna saat ini. Tampilan ini tidak menampilkan PEMILIK kolom.

SELECT table_name
  FROM user_tables

6
2018-02-16 07:01