Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server TAMPILKAN TABEL Setara

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana Anda mengubah tipe data kolom di SQL Server?

  2. Hasil Query Email sebagai Tabel HTML di SQL Server (T-SQL)

  3. Batasan unik pada banyak kolom

  4. Cara memperbarui kunci utama

  5. Bagaimana Memperbaiki "Pernyataan EXECUTE gagal karena dengan klausa WITH RESULT SETS ditentukan 2 kolom untuk kumpulan hasil ..." Msg 11537 di SQL Server