Saya sedang mengerjakan aplikasi yang dapat menangani beberapa server basis data seperti "MySQL" dan "MS SQL Server".
Saya ingin mendapatkan nama tabel dari database tertentu menggunakan kueri umum yang cocok untuk semua jenis database. Saya sudah mencoba yang berikut:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
Tapi itu memberikan nama tabel dari semua database dari server tertentu, tetapi saya ingin mendapatkan nama tabel dari database yang dipilih saja. Bagaimana saya bisa membatasi kueri ini untuk mendapatkan tabel dari database tertentu?
sql
sql-server
Awan
sumber
sumber
Jawaban:
Mungkin karena cara yang berbeda menangani sql dbms dengan skema.
Coba yang berikut ini
Untuk SQL Server:
Untuk MySQL:
Untuk Oracle saya pikir yang setara akan digunakan
DBA_TABLES
.sumber
USE dbName GO
untuk SQL-Server. Jika Anda tidak menggunakan DB , hasilnya tidak akan ditampilkan, bahkan jika ada tabel dalam DB itu.USE dbName GO
awalan pada Server 2014.Dicuri dari sini :
sumber
Kueri berikut akan memilih semua dari
Tables
dalam database bernamaDBName
:sumber
Kami dapat menangani tanpa
GO
di tempat Anda dapat menggunakan titik koma;
.sumber
Cukup letakkan
DATABASE NAME
di depanINFORMATION_SCHEMA.TABLES
:sumber
Di mysql, gunakan:
Setelah memilih DB dengan:
sumber
Saya tidak melihat jawaban ini tetapi hei inilah yang saya lakukan:
sumber
Untuk Mysql Anda dapat melakukan yang sederhana. TAMPILKAN TABEL;
sumber
sumber
sumber
sp_MSforeachtable
?Jika Anda bekerja dengan beberapa skema pada server MS SQL, maka SELECT-TABLE_NAME-ing tanpa juga secara bersamaan memilih TABLE_SCHEMA mungkin manfaat terbatas, jadi saya berasumsi kami tertarik pada tabel milik skema yang dikenal saat menggunakan MS SQL Server.
Saya telah menguji permintaan di atas dengan SQL Server Management Studio menggunakan database SQL Server milik saya dan dengan MySQL Workbench menggunakan database MySQL, dan dalam kedua kasus itu memberikan nama tabel.
Query menggabungkan dua pertanyaan yang berbeda dari Michael Baylon menjadi satu yang kemudian dapat dijalankan pada kedua tipe database. Bagian pertama klausa WHERE berfungsi pada basis data MySQL dan bagian kedua (setelah OR) berfungsi pada basis data MS SQL Server. Itu jelek dan logis sedikit salah karena mengandaikan bahwa tidak ada skema yang tidak diinginkan dengan nama yang sama dengan database. Ini mungkin membantu seseorang yang mencari satu permintaan tunggal yang dapat berjalan di server database mana pun.
sumber
PEMBARUAN UNTUK VERSI TERBARU MSSQL SERVER (17.7)
Atau
SELECT *
untuk mendapatkan semua kolom.sumber
Untuk memilih kueri basis data di bawah ini:
Sekarang
Sekarang Anda dapat melihat tabel yang dibuat di bawah ini di konsol.
PFA.
sumber
Ya oracle adalah:
Itu jika Anda hanya ingin objek yang dimiliki oleh login
user/schema
jika tidak, Anda dapat menggunakanall_tables
ataudba_tables
yang termasuk tabel sistem.sumber
Membangun dari jawaban Michael Baylon, saya membutuhkan daftar yang juga menyertakan informasi skema dan ini adalah bagaimana saya memodifikasi kueri-nya.
sumber
Dalam Oracle DB (PL / SQL) kami, kode di bawah ini berfungsi untuk mendapatkan daftar semua tabel yang ada di DB kami.
dan
keduanya bekerja. mari kita coba dan temukan milikmu.
sumber
Cukup dapatkan semua informasi improtanat dengan SQL di bawah ini di Mysql
sumber