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

Mengembalikan Daftar Tabel &Tampilan di SQL Server menggunakan T-SQL (sp_tables)

Di SQL Server, Anda dapat menggunakan sp_tables prosedur tersimpan sistem untuk mendapatkan daftar tabel dan tampilan di lingkungan saat ini.

Anda dapat mengembalikan semua tabel dan tampilan, atau Anda dapat mempersempitnya ke pemilik, jenis, pola, atau bahkan tabel atau tampilan tertentu.

Sintaks

Sintaksnya seperti ini:

sp_tables [ [ @table_name = ] 'name' ]   
     [ , [ @table_owner = ] 'owner' ]   
     [ , [ @table_qualifier = ] 'qualifier' ]   
     [ , [ @table_type = ] "type" ]   
     [ , [@fUsePattern = ] 'fUsePattern'];

Semua argumen adalah opsional.

Contoh 1 – Tidak Ada Argumen

Anda dapat menjalankan prosedur tersimpan ini tanpa argumen apa pun. Melakukan ini akan mengembalikan semua tabel dan tampilan di lingkungan saat ini.

Seperti ini:

EXEC sp_tables;

Ini mengembalikan lebih dari 500 baris di sistem saya, jadi saya tidak akan memberikan hasilnya di sini. Selain mengembalikan tabel dan tampilan yang ditentukan pengguna, itu juga mengembalikan objek sistem, seperti sys dan INFORMATION_SCHEMA tabel dan tampilan.

Contoh 2 – Semua Argumen

Di sisi lain, inilah contoh yang mencakup semua argumen. Ini mempersempit hasil ke nama tabel tertentu, jenis tertentu, kualifikasi tertentu, dan pemilik tertentu.

EXEC sp_tables
  @table_name = 'Customers',
  @table_owner = 'Sales',
  @table_qualifier = 'WideWorldImporters',
  @table_type = "'TABLE'",
  @fUsePattern = 1;

Hasil:

+--------------------+---------------+--------------+--------------+-----------+
| TABLE_QUALIFIER    | TABLE_OWNER   | TABLE_NAME   | TABLE_TYPE   | REMARKS   |
|--------------------+---------------+--------------+--------------+-----------|
| WideWorldImporters | Sales         | Customers    | TABLE        | NULL      |
+--------------------+---------------+--------------+--------------+-----------+

Contoh 3 – Mengembalikan Tabel Tertentu

Cara yang lebih mudah untuk mengembalikan tabel tertentu adalah dengan menggunakan argumen pertama.

Seperti ini:

EXEC sp_tables @table_name = 'Customers';

Atau bahkan lebih ringkas, seperti salah satu dari ini:

EXEC sp_tables 'Customers';
sp_tables 'Customers';

Meskipun, perlu diketahui bahwa Anda bisa mendapatkan lebih dari satu baris. Dalam contoh ini, dua baris dikembalikan:

+--------------------+---------------+--------------+--------------+-----------+
| TABLE_QUALIFIER    | TABLE_OWNER   | TABLE_NAME   | TABLE_TYPE   | REMARKS   |
|--------------------+---------------+--------------+--------------+-----------|
| WideWorldImporters | Sales         | Customers    | TABLE        | NULL      |
| WideWorldImporters | Website       | Customers    | VIEW         | NULL      |
+--------------------+---------------+--------------+--------------+-----------+

Baris pertama untuk tabel dan baris kedua untuk tampilan.

Jika saya tidak tertarik untuk melihat tampilan atau tabel sistem apa pun, saya dapat menambahkan satu argumen lagi untuk menentukan jenis tabel.

Contoh 4 – Mengembalikan Jenis Tabel Tertentu

Di sini, saya menyempurnakan contoh sebelumnya, dengan hanya menentukan jenis tabel yang saya minati, beserta nama tabelnya.

EXEC sp_tables 
  @table_name = 'Customers',
  @table_type = "'TABLE'";

Hasil:

+--------------------+---------------+--------------+--------------+-----------+
| TABLE_QUALIFIER    | TABLE_OWNER   | TABLE_NAME   | TABLE_TYPE   | REMARKS   |
|--------------------+---------------+--------------+--------------+-----------|
| WideWorldImporters | Sales         | Customers    | TABLE        | NULL      |
+--------------------+---------------+--------------+--------------+-----------+

Jenis yang dapat diterima termasuk VIEW , TABLE , dan SYSTEMTABLE .

Perhatikan bahwa jenis tabel harus huruf besar.

Contoh 5 – Mengembalikan Beberapa Jenis Tabel

Anda mungkin memperhatikan bahwa sintaks untuk tipe tabel menggunakan tanda kutip tunggal dan kutipan ganda. Ini karena ia menerima daftar tipe tabel yang dipisahkan koma. Seluruh daftar diapit dalam tanda kutip ganda, dan setiap item daftar diapit oleh tanda kutip tunggal, dengan koma yang memisahkan setiap item.

Berikut adalah contoh mengembalikan jenis tabel TABLE dan VIEW .

EXEC sp_tables 
  @table_type = "'TABLE','VIEW'";

Perhatikan bahwa jika SET QUOTED_IDENTIFIER adalah ON , setiap tanda kutip tunggal harus digandakan dan seluruh parameter harus diapit oleh tanda kutip tunggal.

Contoh 6 – Catatan tentang Argumen Tabel Qualifier

Jika Anda menggunakan @table_qualifier argumen, nilainya harus sama dengan lingkungan saat ini, jika tidak, Anda akan mendapatkan kesalahan. Di SQL Server, kualifikasi tabel mewakili nama database. Di beberapa produk, ini mewakili nama server dari lingkungan database tabel.

Inilah yang terjadi di SQL Server jika saya menggunakan nilai yang berbeda dengan database saat ini:

USE Music;
EXEC sp_tables 
  @table_qualifier = 'WideWorldImporters';

Hasil:

Msg 15250, Level 16, State 1, Procedure sp_tables, Line 86
The database name component of the object qualifier must be the name of the current database.

Contoh 7 – Wildcard

Anda dapat menggunakan @fUsePattern argumen untuk menentukan apakah garis bawah ( _ ), persen ( % ), dan tanda kurung siku ( [ atau ] ) karakter ditafsirkan sebagai karakter wildcard. Nilai yang valid adalah 0 (pencocokan pola tidak aktif) dan 1 (pencocokan pola aktif). Nilai defaultnya adalah 1 .

Berikut adalah contoh penggunaan pencocokan pola untuk mengembalikan nama tabel yang dimulai dengan huruf “A”:

EXEC sp_tables
  @table_name = 'A%',
  @table_type = "'TABLE'",
  @fUsePattern = 1;

Hasil:

+-------------------+---------------+--------------+--------------+-----------+
| TABLE_QUALIFIER   | TABLE_OWNER   | TABLE_NAME   | TABLE_TYPE   | REMARKS   |
|-------------------+---------------+--------------+--------------+-----------|
| Music             | dbo           | Albums       | TABLE        | NULL      |
| Music             | dbo           | Artists      | TABLE        | NULL      |
+-------------------+---------------+--------------+--------------+-----------+

Tapi inilah yang terjadi jika saya menonaktifkan pencocokan pola:

EXEC sp_tables
  @table_name = 'A%',
  @table_type = "'TABLE'",
  @fUsePattern = 0;

Hasil:

(0 rows affected)

  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 cara mendapatkan skrip data SQL Server?

  2. Apakah Anda Menggunakan Alat Pemantauan Kinerja Basis Data yang Tepat?

  3. SQL Server 2005 ROW_NUMBER() tanpa ORDER BY

  4. Kompres Partisi Tertentu dalam Tabel di SQL Server (T-SQL)

  5. Cara Mendapatkan Model Pemulihan Database di SQL Server menggunakan T-SQL