Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách SCHEMA_ID () hoạt động trong SQL Server

Trong SQL Server, bạn có thể sử dụng SCHEMA_ID() hàm để trả về ID của một lược đồ nhất định. Cụ thể hơn, hàm này trả về ID lược đồ được liên kết với tên lược đồ.

Nó giống như SCHEMA_NAME() ngoại trừ nó trả về ID của lược đồ thay vì tên (và nó chấp nhận tham số tên thay vì ID).

Nếu bạn không chuyển tên giản đồ cho hàm, nó sẽ trả về ID của lược đồ mặc định của trình gọi.

Ví dụ 1 - Lược đồ Mặc định Trả lại

Dưới đây là một ví dụ trả về ID của lược đồ mặc định của trình gọi.

SELECT SCHEMA_ID() AS Result;

Kết quả:

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

Điều này trả về ID của lược đồ mặc định của trình gọi vì tôi không chỉ định rõ ràng bất kỳ tên lược đồ nào khác.

Đây là một lần nữa, cùng với tên lược đồ.

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

Kết quả:

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

Ví dụ 2 - Chỉ định một giản đồ khác

Trong ví dụ này, tôi chuyển một cách rõ ràng tên lược đồ cho hàm.

SELECT SCHEMA_ID('Dimension') AS Result;

Kết quả:

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

Điều này cho tôi biết rằng lược đồ được gọi là Thứ nguyên có ID là 6.

Ví dụ 3 - Chuyển đổi cơ sở dữ liệu

Ví dụ trước chỉ tình cờ được chạy trong cơ sở dữ liệu có một lược đồ được gọi là Thứ nguyên. Nếu tôi chuyển sang một cơ sở dữ liệu khác, tôi có thể nhận được một ID giản đồ khác hoặc không có ID nào cả.

Đây là một ví dụ về ý tôi muốn nói.

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

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

Kết quả:

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

Kết quả thứ hai trả về NULL vì không có giản đồ nào được gọi là Thứ nguyên trong cơ sở dữ liệu Âm nhạc.

Ví dụ 4 - Trong mệnh đề WHERE

Sử dụng SCHEMA_ID() trong một WHERE mệnh đề có thể là một cách tiện dụng để lọc kết quả theo lược đồ.

Trong SQL Server, các dạng xem hệ thống khác nhau sử dụng schema_id để lưu trữ ID lược đồ nhưng không lưu trữ tên lược đồ. Do đó, bạn cần biết ID giản đồ nếu định lọc kết quả theo giản đồ. Đó là nơi SCHEMA_ID() có thể rất hữu ích. Nó giúp bạn không phải tham gia vào sys.schemas xem chỉ để tìm ra tên lược đồ.

Đây là ví dụ về việc sử dụng SCHEMA_ID() trong một WHERE mệnh đề.

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

Kết quả:

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. 3 cách để lấy giản đồ của một tập hợp kết quả trong SQL Server

  2. Cú pháp nối nào tốt hơn?

  3. Tổng hợp chuỗi qua nhiều năm trong SQL Server

  4. SQL động so với thủ tục được lưu trữ

  5. SQL Server v.Next:Hiệu suất STRING_AGG, Phần 2