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

Bagaimana SCHEMA_ID() Bekerja di SQL Server

Di SQL Server, Anda dapat menggunakan SCHEMA_ID() berfungsi untuk mengembalikan ID skema yang diberikan. Lebih khusus lagi, fungsi ini mengembalikan ID skema yang terkait dengan nama skema.

Ini seperti SCHEMA_NAME() kecuali ia mengembalikan ID skema alih-alih nama (dan ia menerima parameter nama alih-alih ID).

Jika Anda tidak meneruskan nama skema ke fungsi, itu mengembalikan ID skema default pemanggil.

Contoh 1 – Kembalikan Skema Default

Berikut adalah contoh yang mengembalikan ID skema default pemanggil.

SELECT SCHEMA_ID() AS Result;

Hasil:

+----------+
| Result   |
|----------|
| 1        |
+----------+

Ini mengembalikan ID skema default pemanggil karena saya tidak secara eksplisit menentukan nama skema lainnya.

Ini dia lagi, bersama dengan nama skema.

SELECT 
  SCHEMA_ID() AS [Schema ID],
  SCHEMA_NAME() AS [Schema Name];

Hasil:

+-------------+---------------+
| Schema ID   | Schema Name   |
|-------------+---------------|
| 1           | dbo           |
+-------------+---------------+

Contoh 2 – Tentukan Skema yang Berbeda

Dalam contoh ini saya secara eksplisit memberikan nama skema ke fungsi.

SELECT SCHEMA_ID('Dimension') AS Result;

Hasil:

+----------+
| Result   |
|----------|
| 6        |
+----------+

Ini memberitahu saya bahwa skema yang disebut Dimensi memiliki ID 6.

Contoh 3 – Berpindah Database

Contoh sebelumnya kebetulan dijalankan di database yang memiliki skema bernama Dimension. Jika saya beralih ke database yang berbeda, saya mungkin mendapatkan ID skema yang berbeda, atau tidak ada ID sama sekali.

Ini contoh yang saya maksud.

USE WideWorldImportersDW;
SELECT SCHEMA_ID('Dimension') AS Result;

USE Music;
SELECT SCHEMA_ID('Dimension') AS Result;

Hasil:

Changed database context to 'WideWorldImportersDW'.
+----------+
| Result   |
|----------|
| 6        |
+----------+
(1 row affected)
Changed database context to 'Music'.
+----------+
| Result   |
|----------|
| NULL     |
+----------+
(1 row affected)

Hasil kedua mengembalikan NULL karena tidak ada skema yang disebut Dimensi dalam database Musik.

Contoh 4 – Dalam Klausa WHERE

Menggunakan SCHEMA_ID() dalam WHERE klausa dapat menjadi cara praktis untuk memfilter hasil berdasarkan skema.

Di SQL Server, berbagai tampilan sistem menggunakan schema_id kolom untuk menyimpan ID skema tetapi bukan nama skema. Oleh karena itu Anda perlu mengetahui ID skema jika Anda akan memfilter hasil berdasarkan skema. Di situlah SCHEMA_ID() bisa sangat berguna. Ini menyelamatkan Anda dari keharusan bergabung di sys.schemas lihat hanya untuk mengetahui nama skema.

Berikut ini contoh penggunaan SCHEMA_ID() dalam WHERE klausa.

USE WideWorldImportersDW;
SELECT 
  name,
  type_desc 
FROM sys.objects
WHERE schema_id = SCHEMA_ID('Dimension');

Hasil:

Changed database context to 'WideWorldImportersDW'.
+----------------------------------------------------+------------------------+
| name                                               | type_desc              |
|----------------------------------------------------+------------------------|
| City                                               | USER_TABLE             |
| PK_Dimension_City                                  | PRIMARY_KEY_CONSTRAINT |
| DF_Dimension_City_City_Key                         | DEFAULT_CONSTRAINT     |
| Customer                                           | USER_TABLE             |
| PK_Dimension_Customer                              | PRIMARY_KEY_CONSTRAINT |
| DF_Dimension_Customer_Customer_Key                 | DEFAULT_CONSTRAINT     |
| Date                                               | USER_TABLE             |
| PK_Dimension_Date                                  | PRIMARY_KEY_CONSTRAINT |
| Employee                                           | USER_TABLE             |
| PK_Dimension_Employee                              | PRIMARY_KEY_CONSTRAINT |
| DF_Dimension_Employee_Employee_Key                 | DEFAULT_CONSTRAINT     |
| Payment Method                                     | USER_TABLE             |
| PK_Dimension_Payment_Method                        | PRIMARY_KEY_CONSTRAINT |
| DF_Dimension_Payment_Method_Payment_Method_Key     | DEFAULT_CONSTRAINT     |
| Stock Item                                         | USER_TABLE             |
| PK_Dimension_Stock_Item                            | PRIMARY_KEY_CONSTRAINT |
| DF_Dimension_Stock_Item_Stock_Item_Key             | DEFAULT_CONSTRAINT     |
| Supplier                                           | USER_TABLE             |
| PK_Dimension_Supplier                              | PRIMARY_KEY_CONSTRAINT |
| DF_Dimension_Supplier_Supplier_Key                 | DEFAULT_CONSTRAINT     |
| Transaction Type                                   | USER_TABLE             |
| PK_Dimension_Transaction_Type                      | PRIMARY_KEY_CONSTRAINT |
| DF_Dimension_Transaction_Type_Transaction_Type_Key | DEFAULT_CONSTRAINT     |
+----------------------------------------------------+------------------------+
(23 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. Menjalankan SQL Server 2014 di Mesin Virtual Azure

  2. Perbedaan antara database dan skema

  3. Mempertahankan ORDER BY di SELECT INTO

  4. Jalankan prosedur tersimpan dengan parameter Output?

  5. Bagaimana cara mengecualikan hari akhir pekan dalam kueri SQL Server?