Bagaimana cara query Oracle database untuk menampilkan nama-nama dari semua tabel dalam itu?
SELECT owner, table_name
FROM dba_tables
Ini adalah asumsi bahwa anda memiliki akses ke DBA_TABLES
kamus data view. Jika anda tidak memiliki hak istimewa mereka, tetapi mereka perlu, anda dapat meminta bahwa DBA secara eksplisit memberikan anda hak-hak istimewa di atas meja itu, atau, bahwa DBA memberi anda PILIH KAMUS
hak istimewa atau SELECT_CATALOG_ROLE
peran (baik yang akan memungkinkan anda untuk query apapun kamus data tabel). Tentu saja, anda mungkin ingin mengecualikan beberapa skema seperti SYS
dan SISTEM
yang memiliki jumlah besar dari Oracle tabel yang mungkin anda don't peduli.
Atau, jika anda tidak memiliki akses ke DBA_TABLES
, anda bisa melihat semua meja yang akun anda memiliki akses ke melalui ALL_TABLES
melihat:
SELECT owner, table_name
FROM all_tables
Meskipun, yang mungkin menjadi sebuah subset dari tabel yang tersedia di database (ALL_TABLES
menampilkan informasi untuk semua tabel yang pengguna telah diberikan akses untuk).
Jika anda hanya peduli dengan tabel yang anda sendiri, bukan orang-orang yang anda memiliki akses ke, anda bisa menggunakan USER_TABLES
:
SELECT table_name
FROM user_tables
Sejak USER_TABLES
hanya memiliki informasi tentang tabel-tabel yang anda sendiri, itu tidak memiliki kolom PEMILIK
– pemilik, menurut definisi, adalah anda.
Oracle juga memiliki sejumlah warisan data dictionary views-- TAB
, DICT
, TAB
, dan KUCING
misalnya-- yang bisa digunakan. Secara umum, saya tidak akan menyarankan menggunakan lawas ini pandangan kecuali jika anda benar-benar perlu untuk backport script anda ke Oracle 6. Oracle tidak berubah pandangan ini dalam waktu yang lama sehingga mereka sering memiliki masalah dengan jenis baru dari benda-benda. Misalnya, TAB
dan KUCING
pandangan kedua tampilkan informasi mengenai tabel-tabel yang terdapat dalam buku's recycle bin sedangkan [DBA|SEMUA|USER]_TABLES
pandangan semua menyaring mereka keluar. KUCING
juga akan menampilkan informasi tentang terwujud melihat log dengan TABLE_TYPE
dari "TABLE" yang tidak mungkin apa yang anda benar-benar ingin. DICT
menggabungkan tabel dan sinonim dan doesn't memberitahu anda siapa yang memiliki objek.
Pergi satu langkah lebih jauh, ada pandangan lain yang disebut cols (all_tab_columns) yang dapat digunakan untuk memastikan tabel yang berisi kolom yang diberikan nama.
Misalnya:
SELECT table_name, column_name
FROM cols
WHERE table_name LIKE 'EST%'
AND column_name LIKE '%CALLREF%';
untuk menemukan semua tabel yang memiliki nama awal dengan EST dan kolom yang berisi CALLREF di mana saja di nama mereka.
Hal ini dapat membantu ketika bekerja di luar apa yang kolom yang anda inginkan untuk bergabung pada, misalnya, tergantung pada tabel dan kolom konvensi penamaan.
sqlplus
Jika anda're menggunakan sqlplus
anda mungkin ingin mengatur beberapa parameter yang lebih baik untuk melihat jika anda kolom semakin hancur (variabel-variabel ini tidak bertahan setelah anda keluar anda sqlplus
sesi ):
set colsep '|'
set linesize 167
set pagesize 30
set pagesize 1000
Anda kemudian dapat menggunakan sesuatu seperti ini untuk melihat semua nama tabel:
SELECT table_name, owner, tablespace_name FROM all_tables;
Seperti @Justin Gua menyebutkan, anda dapat menggunakan ini untuk hanya menampilkan tabel yang anda sendiri:
SELECT table_name FROM user_tables;
Perlu diingat bahwa beberapa "tabel" mungkin "pandangan" jadi, anda juga dapat mencoba menjalankan sesuatu seperti:
SELECT view_name FROM all_views;
Ini harus menghasilkan sesuatu yang terlihat cukup dapat diterima seperti:
Dengan salah satu dari mereka, anda dapat pilih:
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 database untuk menampilkan nama-nama dari semua tabel menggunakan query di bawah ini
PILIH pemilik, table_name DARI dba_tables;vist lebih lanjut : http://www.plsqlinformation.com/2016/08/get-list-of-all-tables-in-oracle.htmlPILIH pemilik, table_name DARI all_tables;
SELECT table_name FROM user_tables;
Di bawah ini adalah komentar cuplikan dari query SQL menggambarkan bagaimana pilihan yang dapat anda manfaatkan:
-- 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;
Anda dapat menggunakan Oracle Kamus Data untuk mendapatkan informasi tentang oracle benda-benda.
Anda bisa mendapatkan daftar tabel dalam cara yang berbeda:
select *
from dba_tables
atau misalnya:
select *
from dba_objects
where object_type = 'TABLE'
Kemudian anda bisa mendapatkan kolom tabel menggunakan nama tabel:
select *
from dba_tab_columns
Kemudian anda bisa mendapatkan daftar dependensi (pemicu, pandangan dan lain-lain.):
select *
from dba_dependencies
where referenced_type='TABLE' and referenced_name=:t_name
Kemudian anda bisa mendapatkan teks sumber dari benda-benda ini:
select * from dba_source
Dan anda dapat menggunakan USER
atau SEMUA
pandangan bukan DBA
jika anda ingin.
Saya tidak menemukan jawaban yang akan digunakan
DBA_ALL_TABLES (ALL_ALL_TABLES/USER_ALL_TABLES)
jadi memutuskan untuk menambahkan versi saya juga. Pandangan ini sebenarnya kembali lagi bahwa DBA_TABLES seperti itu kembali objek tabel serta (http://docs.oracle.com/cd/E11882_01/server.112/e40402/statviews_1003.htm).
Kita bisa mendapatkan semua tabel seperti kolom rincian dari query di bawah ini:
SELECT * FROM user_tab_columns;
Fitur baru yang tersedia di SQLcl( lebih antarmuka baris perintah untuk Oracle Database) adalah
Tabel
alias.
Berikut ini adalah beberapa contoh yang menunjukkan penggunaan dan aspek lainnya dari fitur. Pertama, menghubungkan ke sql
command line (sql.exe
di windows) sesi. Dianjurkan untuk memasukkan ini sqlcl perintah tertentu sebelum menjalankan setiap perintah-perintah atau query yang menampilkan data.
SQL> set sqlformat ansiconsole -- resizes the columns to the width of the
-- data to save space
SQL> tabel
TABLES
-----------
REGIONS
LOCATIONS
DEPARTMENTS
JOBS
EMPLOYEES
JOB_HISTORY
..
Untuk mengetahui apa tabel
alias mengacu pada, anda hanya dapat menggunakan alias daftar <alias>
SQL> alias list tables
tables - tables <schema> - show tables from schema
--------------------------------------------------
select table_name "TABLES" from user_tables
Anda don't harus mendefinisikan alias ini karena dilengkapi dengan default bawah SQLcl. Jika anda ingin daftar tabel dari sebuah skema tertentu, menggunakan user-defined alias lewat nama skema sebagai mengikat argumen dengan hanya satu set kolom yang ditampilkan, anda dapat melakukannya dengan menggunakan
SQL> alias tables_schema = pilih pemilik, table_name, last_analyzed dari all_tables di mana pemilik = :r;
Setelah itu anda mungkin hanya lewat nama skema sebagai argumen
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
..
..
Yang lebih canggih pra-didefinisikan alias dikenal sebagai Tables2
, yang menampilkan beberapa kolom lain.
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
Untuk mengetahui apa query ini berjalan di latar belakang, memasukkan
alias list tables2
Ini akan menunjukkan kepada anda sedikit lebih kompleks query bersama dengan yang telah ditetapkan kolom
definisi yang biasa digunakan dalam SQL*Plus.
Jeff Smith menjelaskan lebih lanjut tentang alias di sini
Memang, itu adalah mungkin untuk memiliki daftar tabel melalui query SQL.hal ini dimungkinkan untuk melakukan itu juga melalui alat-alat yang memungkinkan generasi kamus data, seperti ERWIN, Toad Data Modeler atau ERBuilder. Dengan alat ini, selain nama tabel, anda akan memiliki bidang, jenis, benda-benda seperti(pemicu, urutan, domain, pemandangan...)
Berikut langkah-langkah yang harus diikuti untuk menghasilkan tabel definisi:
Database anda akan ditampilkan dalam perangkat lunak sebagai Entity Relationship diagram.
Saya sedang mencari untuk mendapatkan daftar semua kolom nama milik tabel skema diurutkan berdasarkan urutan kolom id.
Berikut ini's query yang saya gunakan: -
SELECT COLUMN_NAME
FROM ALL_TAB_COLUMNS
WHERE OWNER = 'schema_owner_username' AND TABLE_NAME='table_name'
ORDER BY COLUMN_ID ASC;