Sesekali saya menemukan diri saya mengetik SHOW TABLES
di SQL Server, mengharapkan untuk mendapatkan daftar tabel.
Itu akan sangat masuk akal jika saya menggunakan MySQL atau MariaDB. Tetapi SQL Server/T-SQL tidak memiliki SHOW TABLES
pernyataan seperti MySQL atau MariaDB, jadi tidak pernah berfungsi. Dan aku terus lupa. Tapi untungnya, SQL Server memang memiliki alternatif.
Berikut adalah lima opsi untuk mendapatkan daftar tabel di SQL Server. Ini dapat digunakan kapan pun Anda mencoba menemukan SHOW TABLES
yang sulit dipahami itu pernyataan di SQL Server.
Opsi 1 – sys.tables
sys.tables
tampilan katalog sistem dirancang khusus untuk mengembalikan informasi tabel pengguna:
SELECT name
FROM sys.tables;
Ini mengembalikan nama semua tabel pengguna dalam database saat ini. Anda dapat beralih ke database yang benar dengan mengawali pernyataan dengan USE <database name>
di mana <database name>
adalah nama database yang tabelnya ingin Anda daftarkan.
Misalnya, pernyataan berikut mengembalikan semua tabel pengguna dari KrankyKranes
basis data:
USE KrankyKranes;
SELECT name
FROM sys.tables;
Anda juga dapat mengembalikan skema jika Anda mau:
SELECT
SCHEMA_NAME(schema_id) AS schema_name,
name AS table_name
FROM sys.tables;
Di sini, saya menggunakan SCHEMA_NAME()
berfungsi untuk menerjemahkan nilai schema_id
kolom menjadi nama sebenarnya dari skema.
Opsi 2 – sys.objects
Anda juga dapat menggunakan sys.objects
tampilan katalog sistem. Jika Anda memilih opsi ini, Anda dapat memfilternya menurut jenisnya sehingga hanya tabel pengguna yang ditampilkan:
SELECT name
FROM sys.objects
WHERE type = 'U';
Ini mengembalikan tabel pengguna dari database saat ini. Tampilan ini juga berisi schema_id
kolom, sehingga Anda dapat menggunakan SCHEMA_NAME()
berfungsi untuk menerjemahkannya ke dalam nama skema jika diperlukan.
Opsi 3 – information_schema.tables
INFORMATION_SCHEMA.TABLES
tampilan mengembalikan satu baris untuk setiap tabel atau tampilan dalam database saat ini yang izinnya dimiliki oleh pengguna saat ini.
Kami dapat memfilter tampilan ini menurut jenisnya sehingga hanya tabel dasar yang ditampilkan:
SELECT
TABLE_SCHEMA,
TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'Base Table';
TABLE_SCHEMA
kolom berisi nama skema tabel, jadi kita tidak perlu menggunakan SCHEMA_NAME()
berfungsi untuk mengubah ID skema menjadi namanya.
Opsi 4 – sp_tables
sp_tables
prosedur tersimpan mengembalikan daftar objek yang dapat ditanyakan di lingkungan saat ini. Ini berarti tabel atau tampilan apa pun, kecuali objek sinonim.
Cara tercepat dan termudah untuk memanggil prosedur ini adalah seperti ini:
sp_tables;
Tapi itu bisa mengembalikan daftar objek yang panjang.
Biasanya lebih baik untuk lebih spesifik. Misalnya:
EXEC sp_tables
@table_owner = 'dbo',
@table_qualifier = 'KrankyKranes',
@table_type = "'TABLE'";
Di sini, saya memberi tahu prosedur untuk menampilkan tabel pengguna di KrankyKranes
database yang dimiliki oleh dbo
.
@table_type
argumen menerima daftar nilai yang dipisahkan koma. Jadi, jika kita ingin menyertakan tampilan, kita dapat melakukan hal berikut:
EXEC sp_tables
@table_owner = 'dbo',
@table_qualifier = 'Music',
@table_type = "'TABLE', 'VIEW'";
Opsi 5 – dbo.sysobjects
Sebelum SQL Server 2005, dbo.sysobjects
view adalah tampilan untuk menampilkan tabel dan objek lainnya.
Jadi, jika Anda menggunakan SQL Server edisi lama, Anda dapat melakukan ini:
SELECT name
FROM dbo.sysobjects
WHERE xtype = 'U';