Synonym trong SQL Server

Trong hướng dẫn này, bạn sẽ tìm hiểu về synonym trong SQL Server và cách tạo synonym cho các đối tượng cơ sở dữ liệu.

Synonym trong SQL Server là gì

Trong SQL Server, synonym là bí danh hoặc tên thay thế cho đối tượng cơ sở dữ liệu như bảng, view, stored procedure, hàm do người dùng định nghĩasequence. Synonym cung cấp cho bạn nhiều lợi ích nếu bạn sử dụng nó đúng cách.

Cú pháp câu lệnh CREATE SYNONYM trong SQL Server

Để tạo một synonym, bạn sử dụng câu lệnh CREATE SYNONYM như sau:

CREATE SYNONYM [ schema_name_1. ] synonym_name 
FOR object;

Đối tượng có dạng sau:

[ server_name.[ database_name ] . [ schema_name_2 ]. object_name   

Trong cú pháp này:

  • Đầu tiên, chỉ định object mục tiêu mà bạn muốn chỉ định một synonym trong mệnh đề FOR.
  • Thứ hai, cung cấp tên của FOR sau câu lệnh CREATE SYNONYM.
Lưu ý rằng đối tượng mà bạn tạo synonym không nhất thiết phải tồn tại tại thời điểm tạo synonym.

Ví dụ về câu lệnh CREATE SYNONYM trong SQL Server

Hãy lấy một số ví dụ về việc sử dụng câu lệnh CREATE SYNONYM để hiểu rõ hơn.

Tạo synonym trong cùng một cơ sở dữ liệu

Ví dụ sau sử dụng câu lệnh CREATE SYNONYM để tạo một synonym cho bảng sales.orders:

CREATE SYNONYM orders 
FOR sales.orders; 

Khi synonym orders được tạo, bạn có thể tham chiếu nó ở bất kỳ đâu mà bạn sử dụng đối tượng đích (bảng sales.orders).

Ví dụ: truy vấn sau sử dụng synonym orders thay vì bảng sales.orders:

SELECT * FROM orders; 

Tạo một synonym cho một bảng trong cơ sở dữ liệu khác

Đầu tiên, tạo một cơ sở dữ liệu mới có tên test và đặt cơ sở dữ liệu hiện tại thành test:

CREATE DATABASE test;
GO

USE test;
GO

Tiếp theo, tạo một lược đồ mới có tên purchasing bên trong cơ sở dữ liệu test:

CREATE SCHEMA purchasing;
GO

Sau đó, tạo một bảng mới trong lược đồ purchasing của cơ sở dữ liệu test:

CREATE TABLE purchasing.suppliers
(
    supplier_id   INT
    PRIMARY KEY IDENTITY, 
    supplier_name NVARCHAR(100) NOT NULL
);

Sau đó, từ cơ sở dữ liệu BikeStores, hãy tạo một synonym cho bảng purchasing.suppliers trong cơ sở dữ liệu test:

CREATE SYNONYM suppliers 
FOR test.purchasing.suppliers;

Cuối cùng, từ cơ sở dữ liệu BikeStores, hãy tham khảo bảng test.purchasing.suppliers sử dụng synonym suppliers như sau:

USE BikeStores;
GO

SELECT * FROM suppliers; 

Liệt kê tất cả các synonym của cơ sở dữ liệu

Bạn có thể xem tất cả các synonym của cơ sở dữ liệu bằng cách sử dụng Transact-SQL và SQL Server Management Studio.

Liệt kê các synonym bằng lệnh Transact-SQL

Để liệt kê tất cả các synonym của cơ sở dữ liệu hiện tại, bạn truy vấn từ view sys.synonyms như được trình bày trong truy vấn sau:

SELECT 
    name, 
    base_object_name, 
    type
FROM 
    sys.synonyms
ORDER BY 
    name;

Đây là kết quả:

Liệt kê các synonym bằng lệnh Transact-SQL

Liệt kê các synonym bằng SQL Server Management Studio

Từ SQL Server Management Studio, bạn có thể xem tất cả synonym của cơ sở dữ liệu hiện tại thông qua menu Synonyms như trong hình sau:

Liệt kê các synonym bằng SQL Server Management Studio

Xóa synonym trong SQL Server

Để xóa một synonym, bạn sử dụng câu lệnh DROP SYNONYM với cú pháp sau:

DROP SYNONYM [ IF EXISTS ] [schema.] synonym_name 

Trong cú pháp này:

  • Đầu tiên, hãy chỉ định tên synonym mà bạn muốn xóa sau câu lệnh DROP SYNONYM.
  • Thứ hai, sử dụng tùy chọn IF EXISTS để xóa synonym với điều kiện chỉ khi nó tồn tại. Việc xóa một synonym không tồn tại mà không có tùy chọn IF EXISTS sẽ dẫn đến lỗi.

Ví dụ về xóa synonym

Ví dụ sau sử dụng câu lệnh DROP SYNONYM để xóa synonym orders:

DROP SYNONYM IF EXISTS orders; 

Khi nào sử dụng synonym

Bạn sẽ tìm thấy một số tình huống mà bạn có thể sử dụng synonym một cách hiệu quả.

Đơn giản hóa tên đối tượng

Nếu bạn tham chiếu đến một đối tượng từ cơ sở dữ liệu khác (thậm chí từ máy chủ từ xa), bạn có thể tạo một synonym trong cơ sở dữ liệu của mình và tham chiếu đến đối tượng này như nó nằm trong cơ sở dữ liệu của bạn.

Cho phép thay đổi tên đối tượng liền mạch

Khi bạn muốn đổi tên bảng hoặc bất kỳ đối tượng nào khác, chẳng hạn như view, stored procedure, hàm do người dùng định nghĩasequence, các đối tượng cơ sở dữ liệu hiện có tham chiếu đến bảng này cần được sửa đổi theo cách thủ công để phản ánh tên mới.

Ngoài ra, tất cả các ứng dụng hiện tại sử dụng bảng này cần phải được thay đổi và có thể được biên dịch lại.

Để tránh tất cả những công việc khó khăn này, bạn có thể đổi tên bảng và tạo một synonym cho bảng để giữ cho các ứng dụng hiện có hoạt động bình thường.

Lợi ích của synonym

Synonym mang lại lợi ích sau nếu bạn sử dụng chúng đúng cách:

  • Cung cấp một lớp trừu tượng trên các đối tượng cơ sở.
  • Rút ngắn tên dài, ví dụ: rút ngắn tên rất dài của một đối tượng sau very_long_database_name.with_schema.and_object_name bằng bí danh đơn giản hóa.
  • Cho phép tương thích ngược đối với các ứng dụng hiện có khi bạn đổi tên các đối tượng cơ sở dữ liệu như bảng, view, stored procedure, hàm do người dùng định nghĩa và sequence.

Trong hướng dẫn này, bạn đã tìm hiểu về các synonym trong SQL Server và cách sử dụng chúng một cách hiệu quả trong các ứng dụng của bạn.

SQL ServerĐịnh nghĩa dữ liệu trong SQL Server
Bài Viết Liên Quan:
GUID trong SQL Server
Trung Nguyen 12/03/2022
GUID trong SQL Server

Trong hướng dẫn này, bạn sẽ tìm hiểu về GUID trong SQL Server và cách sử dụng hàm NEWID() để tạo giá trị GUID.

Kiểu dữ liệu DATETIMEOFFSET trong SQL Server
Trung Nguyen 12/03/2022
Kiểu dữ liệu DATETIMEOFFSET trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng kiểu dữ liệu DATETIMEOFFSET trong SQL Server để thao tác datetime với múi giờ.

Kiểu dữ liệu TIME trong SQL Server
Trung Nguyen 12/03/2022
Kiểu dữ liệu TIME trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách lưu trữ thời gian trong ngày trong cơ sở dữ liệu bằng cách sử dụng kiểu dữ liệu TIME trong SQL Server.

Kiểu dữ liệu DATE trong SQL Server
Trung Nguyen 12/03/2022
Kiểu dữ liệu DATE trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng kiểu dữ liệu DATE trong SQL Server để lưu trữ dữ liệu ngày tháng trong một bảng.