GUID trong SQL Server

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.

Giới thiệu về GUID trong SQL Server

Tất cả mọi thứ trong thế giới của chúng ta đều được đánh số, ví dụ sách có ISBN, ô tô có VIN và mọi người có số an sinh xã hội (SSN).

Các con số hoặc mã định danh giúp chúng ta tham chiếu mọi thứ một cách rõ ràng. Ví dụ: chúng ta có thể xác định John Doe bằng cách sử dụng số an sinh xã hội duy nhất của anh ấy 123-45-6789.

Số nhận dạng duy nhất trên toàn cầu hoặc GUID là phiên bản rộng hơn của loại số ID này.

GUID được đảm bảo là duy nhất trên các bảng, cơ sở dữ liệu và thậm chí cả máy chủ.

Trong SQL Server, GUID là kiểu dữ liệu nhị phân 16 byte, được tạo bằng cách sử dụng hàm NEWID():

SELECT NEWID() AS GUID;

Nếu bạn thực hiện câu lệnh trên nhiều lần, bạn sẽ thấy giá trị khác nhau mỗi lần. Đây là một trong số chúng:

GUID
------------------------------------
3297F0F2-35D3-4231-919D-1CFCF4035975

(1 row affected)

Trong SQL Server, kiểu dữ liệu UNIQUEIDENTIFIER chứa các giá trị GUID.

Các câu lệnh sau khai báo một biến có kiểu UNIQUEIDENTIFIER và gán cho nó một giá trị GUID do hàm NEWID() tạo ra.

DECLARE @id UNIQUEIDENTIFIER;

SET @id = NEWID();

SELECT @id AS GUID;

Đây là kết quả:

GUID
------------------------------------
69AA3BA5-D51E-465E-8447-ECAA1939739A

(1 row affected)

Sử dụng GUID trong SQL Server làm khóa chính

Đôi khi, bạn thích sử dụng các giá trị GUID cho cột khóa chính của bảng hơn là sử dụng số nguyên.

Sử dụng GUID làm khóa chính của bảng mang lại những lợi ích sau:

  • Giá trị GUID là duy nhất trên toàn cầu trên các bảng, cơ sở dữ liệu và thậm chí cả máy chủ. Do đó, nó cho phép bạn hợp nhất dữ liệu từ các máy chủ khác nhau một cách dễ dàng.
  • Các giá trị GUID không tiết lộ thông tin nên chúng an toàn hơn khi sử dụng trong giao diện công khai như URL. Ví dụ: nếu bạn có URL https://www.example.com/customer/100/, không quá khó để tìm ra rằng sẽ có những khách hàng có id 101, 102, v.v. Tuy nhiên với GUID, việc này gần như là không thể: https://www.example.com/customer/F4AB02B7-9D55-483D-9081-CC4E3851E851/

Bên cạnh những ưu điểm này, việc lưu trữ GUID trong cột khóa chính của bảng có những nhược điểm sau:

  • Giá trị GUID (16 byte) chiếm nhiều dung lượng hơn INT (4 byte) hoặc thậm chí BIGINT (8 byte)
  • Các giá trị GUID gây khó khăn cho việc khắc phục sự cố và gỡ lỗi, so sánh WHERE id = 100 với WHERE id = 'F4AB02B7-9D55-483D-9081-CC4E3851E851'.

Ví dụ về GUID của SQL Server

Đầu tiên, tạo một bảng mới có tên customers trong lược đồ marketing:

CREATE SCHEMA marketing;
GO

CREATE TABLE marketing.customers(
    customer_id UNIQUEIDENTIFIER DEFAULT NEWID(),
    first_name NVARCHAR(100) NOT NULL,
    last_name NVARCHAR(100) NOT NULL,
    email VARCHAR(200) NOT NULL
);
GO

Thứ hai, chèn các hàng mới vào bảng marketing.customers:

INSERT INTO 
    marketing.customers(first_name, last_name, email)
VALUES
    ('John','Doe','[email protected]'),
    ('Jane','Doe','[email protected]');

Thứ ba, truy vấn dữ liệu từ bảng marketing.customers:

SELECT 
    customer_id, 
    first_name, 
    last_name, 
    email
FROM 
    marketing.customers;

Đây là kết quả:

Ví dụ về GUID của SQL Server

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

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *