Bagaimana cara saya meminta database Oracle untuk menampilkan nama-nama semua tabel di dalamnya?
Bagaimana cara saya meminta database Oracle untuk menampilkan nama-nama semua tabel di dalamnya?
Jawaban:
SELECT owner, table_name
FROM dba_tables
Ini dengan asumsi bahwa Anda memiliki akses ke DBA_TABLES
tampilan kamus data. Jika Anda tidak memiliki hak istimewa itu tetapi membutuhkannya, Anda dapat meminta DBA secara eksplisit memberi Anda hak istimewa pada tabel itu, atau, bahwa DBA memberi Anda SELECT ANY DICTIONARY
hak istimewa atau SELECT_CATALOG_ROLE
peran (yang keduanya memungkinkan Anda untuk menanyakan tabel kamus data apa pun) ). Tentu saja, Anda mungkin ingin mengecualikan skema tertentu seperti SYS
dan SYSTEM
yang memiliki banyak tabel Oracle yang mungkin tidak Anda pedulikan.
Atau, jika Anda tidak memiliki akses ke DBA_TABLES
, Anda dapat melihat semua tabel yang memiliki akses akun Anda melalui ALL_TABLES
tampilan:
SELECT owner, table_name
FROM all_tables
Meskipun, itu mungkin subset dari tabel yang tersedia di database (ALL_TABLES
menunjukkan kepada Anda informasi untuk semua tabel yang telah diberikan akses oleh pengguna Anda).
Jika Anda hanya mementingkan tabel yang Anda miliki, bukan tabel yang bisa Anda akses, Anda bisa menggunakan USER_TABLES
:
SELECT table_name
FROM user_tables
Karena USER_TABLES
hanya memiliki informasi tentang tabel yang Anda miliki, itu tidak memiliki OWNER
kolom - pemiliknya, menurut definisi, adalah Anda.
Oracle juga memiliki sejumlah data warisan kamus views-- TAB
, DICT
, TABS
, dan CAT
untuk misalnya-- yang dapat digunakan. Secara umum, saya tidak akan menyarankan menggunakan tampilan warisan ini kecuali jika Anda benar-benar perlu untuk membuat cadangan skrip Anda ke Oracle 6. Oracle tidak mengubah pandangan ini dalam waktu yang lama sehingga mereka sering mengalami masalah dengan jenis objek yang lebih baru. Misalnya, TAB
dan CAT
tampilan keduanya menampilkan informasi tentang tabel yang ada di tempat sampah pengguna sementara [DBA|ALL|USER]_TABLES
tampilan semua memfilternya. CAT
juga menunjukkan informasi tentang log tampilan terwujud dengan TABLE_TYPE
"TABEL" yang tidak mungkin apa yang Anda inginkan. DICT
menggabungkan tabel dan sinonim dan tidak memberi tahu Anda siapa yang memiliki objek.
Meminta user_tables
dan dba_tables
tidak bekerja.
Yang ini:
select table_name from all_tables
Selangkah lebih maju, ada tampilan lain yang disebut cols (all_tab_columns) yang dapat digunakan untuk memastikan tabel mana yang berisi nama kolom yang diberikan.
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 dimulai dengan EST dan kolom yang berisi CALLREF di mana saja dalam nama mereka.
Ini dapat membantu saat menentukan kolom yang ingin Anda gabungkan, misalnya, tergantung pada konvensi penamaan tabel dan kolom Anda.
select * from cols
dan mendapat 0 baris dikembalikan.
sqlplus
Jika Anda menggunakan, sqlplus
Anda mungkin ingin terlebih dahulu menyiapkan beberapa parameter untuk tampilan yang lebih baik jika kolom Anda menjadi berantakan (variabel-variabel ini tidak akan bertahan setelah Anda keluar dari sqlplus
sesi Anda ):
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 Cave menyebutkan, Anda dapat menggunakan ini untuk hanya menampilkan tabel yang Anda miliki:
SELECT table_name FROM user_tables;
Ingatlah bahwa beberapa "tabel" mungkin sebenarnya adalah "tampilan" sehingga Anda juga dapat mencoba menjalankan sesuatu seperti:
SELECT view_name FROM all_views;
Ini akan menghasilkan sesuatu yang terlihat cukup dapat diterima seperti:
pagesize 30
dengan pagesize 1000
?
Permintaan sederhana untuk memilih tabel untuk pengguna saat ini:
SELECT table_name FROM user_tables;
Coba tampilan kamus data di bawah ini.
tabs
dba_tables
all_tables
user_tables
Coba pilih dari user_tables yang berisi daftar tabel yang dimiliki oleh pengguna saat ini.
Database Oracle untuk menampilkan nama semua tabel menggunakan kueri di bawah ini
Pemilik SELECT, table_name FROM dba_tables; SELECT owner, table_name FROM all_tables; SELECT table_name FROM user_tables;
kunjungi lebih lanjut: http://www.plsqlinformation.com/2016/08/get-list-of-all-tables-in-oracle.html
select * from dba_tables
memberikan semua tabel dari semua pengguna hanya jika pengguna yang Anda masuki memiliki sysdba
hak istimewa.
Saya tidak menemukan jawaban yang akan digunakan
DBA_ALL_TABLES (ALL_ALL_TABLES/USER_ALL_TABLES)
jadi memutuskan untuk menambahkan versi saya juga. Tampilan ini sebenarnya mengembalikan lebih banyak dari DBA_TABLES karena mengembalikan tabel objek juga ( http://docs.oracle.com/cd/E11882_01/server.112/e40402/statviews_1003.htm ).
Anda dapat menggunakan Kamus Data Oracle untuk mendapatkan informasi tentang objek oracle.
Anda bisa mendapatkan daftar tabel dengan berbagai cara:
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, tampilan, dll.):
select *
from dba_dependencies
where referenced_type='TABLE' and referenced_name=:t_name
Kemudian Anda bisa mendapatkan sumber teks dari objek ini:
select * from dba_source
Dan Anda dapat menggunakan USER
atau ALL
melihat alih-alih DBA
jika Anda mau.
Kami bisa mendapatkan semua tabel termasuk detail kolom dari kueri di bawah ini:
SELECT * FROM user_tab_columns;
Di bawah ini adalah potongan komentar dari pertanyaan SQL yang menjelaskan bagaimana opsi 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;
Fitur baru yang tersedia di SQLcl (yang merupakan antarmuka baris perintah gratis untuk Oracle Database) adalah
Tables
alias.
Berikut adalah beberapa contoh yang menunjukkan penggunaan dan aspek tambahan dari fitur ini. Pertama, sambungkan ke sesi sql
baris perintah ( sql.exe
di windows). Disarankan untuk memasukkan perintah khusus sqlcl ini sebelum menjalankan perintah atau pertanyaan lain yang menampilkan 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
..
Untuk mengetahui apa yang dimaksud tables
alias, Anda cukup menggunakanalias list <alias>
SQL> alias list tables
tables - tables <schema> - show tables from schema
--------------------------------------------------
select table_name "TABLES" from user_tables
Anda tidak harus mendefinisikan alias ini karena secara default ada di bawah SQLcl. Jika Anda ingin membuat daftar tabel dari skema tertentu, menggunakan alias yang ditentukan pengguna baru dan meneruskan nama skema sebagai argumen mengikat dengan hanya satu set kolom yang ditampilkan, Anda dapat melakukannya dengan menggunakan
SQL> alias tables_schema = select owner, table_name, last_analyzed from all_tables where owner = :ownr;
Setelah itu Anda dapat dengan mudah memberikan 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
..
..
Alias yang didefinisikan lebih canggih dikenal sebagai Tables2
, yang menampilkan beberapa kolom lainnya.
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 permintaan apa yang dijalankan di latar belakang, masukkan
alias list tables2
Ini akan menunjukkan kepada Anda pertanyaan yang sedikit lebih rumit bersama dengan column
definisi yang telah ditetapkan yang biasa digunakan dalam SQL * Plus.
Jeff Smith menjelaskan lebih lanjut tentang alias di sini
Saya sedang mencari untuk mendapatkan daftar semua nama kolom milik tabel skema yang diurutkan berdasarkan urutan id kolom.
Inilah pertanyaan 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;
Memang, adalah mungkin untuk memiliki daftar tabel melalui query SQL. Hal ini dimungkinkan juga melalui alat-alat yang memungkinkan pembuatan kamus data, seperti ERWIN , Toad Data Modeler atau ERBuilder . Dengan alat ini, selain nama tabel, Anda akan memiliki bidang, tipenya, objek seperti (pemicu, urutan, domain, tampilan ...)
Berikut langkah-langkah yang harus diikuti untuk menghasilkan definisi tabel Anda:
Database Anda akan ditampilkan dalam perangkat lunak sebagai diagram Hubungan Entitas.
select * from all_all_tables
tambahan 'semua' ini di awal memberikan 3 kolom tambahan yaitu:
OBJECT_ID_TYPE
TABLE_TYPE_OWNER
TABLE_TYPE
SHOW TABLES
(seperti yang dilakukan pada MySQL) berfungsi?