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

Sử dụng DB_ID () để trả về ID của cơ sở dữ liệu trong SQL Server

Trong SQL Server, bạn có thể sử dụng DB_ID() chức năng trả về ID của cơ sở dữ liệu hiện tại hoặc cơ sở dữ liệu được chỉ định khác.

Cách hoạt động của nó là, bạn chuyển tên của cơ sở dữ liệu làm đối số, sau đó hàm sẽ trả về ID của cơ sở dữ liệu đó. Nếu bạn không nhập tên, nó sẽ trả về ID của cơ sở dữ liệu hiện tại.

Ví dụ 1 - Trả về Cơ sở dữ liệu Hiện tại

Dưới đây là một ví dụ cơ bản để minh họa cách trả lại tên của cơ sở dữ liệu hiện tại.

SELECT DB_ID() AS [Current Database];

Kết quả:

+--------------------+
| Current Database   |
|--------------------|
| 6                  |
+--------------------+

Trong trường hợp này, cơ sở dữ liệu hiện tại có ID là 6.

Dưới đây là một ví dụ khác chứng minh điều đó xa hơn, bằng cách chuyển đổi cơ sở dữ liệu.

USE Music;
SELECT DB_ID() AS [Current Database];

USE EMS;
SELECT DB_ID() AS [Current Database];

USE WideWorldImportersDW;
SELECT DB_ID() AS [Current Database];

Kết quả:

Changed database context to 'Music'.
+--------------------+
| Current Database   |
|--------------------|
| 5                  |
+--------------------+
(1 row affected)
Changed database context to 'EMS'.
+--------------------+
| Current Database   |
|--------------------|
| 14                 |
+--------------------+
(1 row affected)
Changed database context to 'WideWorldImportersDW'.
+--------------------+
| Current Database   |
|--------------------|
| 6                  |
+--------------------+
(1 row affected)

Ví dụ 2 - Trả về Cơ sở dữ liệu Cụ thể

Dưới đây là một ví dụ về việc trả về một cơ sở dữ liệu cụ thể. Điều này được thực hiện bằng cách chuyển vào tên của cơ sở dữ liệu.

SELECT DB_ID('Music') AS Result;

Kết quả:

+----------+
| Result   |
|----------|
| 5        |
+----------+

Đây là thông tin khác:

SELECT 
  DB_ID('master') AS [master],
  DB_ID('tempdb') AS [tempdb],
  DB_ID('model') AS [model],
  DB_ID('msdb') AS [msdb],
  DB_ID('Music') AS [Music],
  DB_ID('WideWorldImportersDW') AS ['WideWorldImportersDW'];

Kết quả:

+----------+----------+---------+--------+---------+--------------------------+
| master   | tempdb   | model   | msdb   | Music   | 'WideWorldImportersDW'   |
|----------+----------+---------+--------+---------+--------------------------|
| 1        | 2        | 3       | 4      | 5       | 6                        |
+----------+----------+---------+--------+---------+--------------------------+

Ví dụ 3 - Truy vấn Cơ sở dữ liệu

Đây là một ví dụ về nơi DB_ID() có thể hữu ích.

USE WideWorldImportersDW;
SELECT
  name AS [Foreign Key],
  OBJECT_NAME(parent_object_id, DB_ID('Music')) AS [Parent Object Name],
  OBJECT_NAME(referenced_object_id, DB_ID('Music')) AS [Referenced Object Name]
FROM Music.sys.foreign_keys
WHERE name = 'FK_Artists_Country';

Kết quả:

Changed database context to 'WideWorldImportersDW'.
+--------------------+----------------------+--------------------------+
| Foreign Key        | Parent Object Name   | Referenced Object Name   |
|--------------------+----------------------+--------------------------|
| FK_Artists_Country | Artists              | Country                  |
+--------------------+----------------------+--------------------------+
(1 row affected)

Trong ví dụ này, cơ sở dữ liệu hiện tại là WideWorldImportersDW, nhưng tôi muốn thông tin về khóa ngoại trong cơ sở dữ liệu Nhạc. OBJECT_NAME() hàm trả về tên đối tượng dựa trên ID của nó, nhưng nếu đối tượng nằm trong một cơ sở dữ liệu khác, nó cũng cho phép tôi chỉ định ID cơ sở dữ liệu. Tuy nhiên, trong trường hợp này tôi chỉ biết tên cơ sở dữ liệu. Không thành vấn đề, vì tôi có thể sử dụng DB_ID() để trả lại ID dựa trên tên.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Toán tử ký hiệu và (&) trong mệnh đề WHERE của SQL Server

  2. Làm thế nào để bạn lập mô hình kế thừa trong cơ sở dữ liệu một cách hiệu quả?

  3. Ví dụ về định dạng 'datetimeoffset' trong SQL Server bằng cách sử dụng chuỗi định dạng chuẩn (T-SQL)

  4. Trong tsql, một câu lệnh Chèn với một câu lệnh Chọn có an toàn về mặt đồng thời không?

  5. Bảng kiểm tra SQL Server được phân vùng