PRIMARY KEY trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng ràng buộc PRIMARY KEY trong SQL Server để tạo khóa chính cho một bảng.

Giới thiệu về ràng buộc PRIMARY KEY trong SQL Server

Khóa chính (Primary Key) là một cột hoặc một nhóm cột xác định giá trị duy nhất mỗi hàng trong bảng. Bạn tạo khóa chính cho bảng bằng cách sử dụng ràng buộc PRIMARY KEY.

Nếu khóa chính chỉ bao gồm một cột, bạn có thể xác định ràng buộc PRIMARY KEY sử dụng làm ràng buộc cột như sau:

CREATE TABLE table_name (
    pk_column data_type PRIMARY KEY,
    ...
);

Trong trường hợp khóa chính có hai hoặc nhiều cột, bạn phải sử dụng ràng buộc PRIMARY KEY làm ràng buộc bảng như sau:

CREATE TABLE table_name (
    pk_column_1 data_type,
    pk_column_2 data type,
    ...
    PRIMARY KEY (pk_column_1, pk_column_2)
);

Mỗi bảng chỉ có thể chứa một khóa chính. Tất cả các cột tham gia vào khóa chính phải được định nghĩa là NOT NULL. SQL Server tự động đặt ràng buộc NOT NULL cho tất cả các cột khóa chính nếu ràng buộc NOT NULL không được chỉ định cho các cột này.

SQL Server cũng tự động tạo một unique clustered index (hoặc một non-clustered index nếu được chỉ định như vậy) khi bạn tạo khóa chính.

Ví dụ về ràng buộc PRIMARY KEY trong SQL Server

Ví dụ sau tạo một bảng có khóa chính bao gồm một cột:

CREATE TABLE sales.activities (
    activity_id INT PRIMARY KEY IDENTITY,
    activity_name VARCHAR (255) NOT NULL,
    activity_date DATE NOT NULL
);

Trong bảng sales.activities này, cột activity_id là cột khóa chính. Nó có nghĩa là cột activity_id chứa các giá trị duy nhất.

Thuộc tính IDENTITY được sử dụng cho các cột activity_id để tự động tạo ra giá trị số nguyên duy nhất.

Câu lệnh sau tạo một bảng mới có tên sales.participants có khóa chính của nó bao gồm hai cột:

CREATE TABLE sales.participants(
    activity_id int,
    customer_id int,
    PRIMARY KEY(activity_id, customer_id)
);

Trong ví dụ này, các giá trị trong một trong hai cột activity_id hoặc customer_id có thể trùng lặp, nhưng mỗi kết hợp giá trị từ cả hai cột phải là duy nhất.

Thông thường, một bảng luôn có một khóa chính được xác định tại thời điểm tạo. Tuy nhiên, đôi khi, một bảng hiện có có thể không có khóa chính. Trong trường hợp này, bạn có thể thêm khóa chính vào bảng bằng cách sử dụng câu lệnh ALTER TABLE. Hãy xem xét ví dụ sau:

Câu lệnh sau tạo một bảng không có khóa chính:

CREATE TABLE sales.events(
    event_id INT NOT NULL,
    event_name VARCHAR(255),
    start_date DATE NOT NULL,
    duration DEC(5,2)
);

Để đặt cột event_id làm khóa chính, bạn sử dụng câu lệnh ALTER TABLE như sau:

ALTER TABLE sales.events 
ADD PRIMARY KEY(event_id);
Lưu ý rằng nếu bảng sales.events đã có dữ liệu, trước khi thăng hạng cột event_id làm khóa chính, bạn phải đảm bảo rằng các giá trị của cột event_id trong bảng là duy nhất.

Trong hướng dẫn này, bạn đã học cách sử dụng ràng buộc PRIMARY KEY trong SQL Server để tạo khóa chính cho bảng.

SQL Server
Bài Viết Liên Quan:
Sequence trong SQL Server
Trung Nguyen 31/07/2021
Sequence trong SQL Server

Trong hướng dẫn này, bạn sẽ tìm hiểu về các đối tượng Sequence trong SQL Server để tạo ra một chuỗi các giá trị số dựa trên một đặc tả cụ thể.

Cột Identity trong SQL Server
Trung Nguyen 30/07/2021
Cột Identity trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng thuộc tính IDENTITY trong SQL Server để thêm cột định danh vào bảng.

CREATE TABLE trong SQL Server
Trung Nguyen 29/07/2021
CREATE TABLE trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng câu lệnh CREATE TABLE trong SQL Server để tạo một bảng mới.

Ràng buộc NOT NULL trong SQL Server
Trung Nguyen 28/07/2021
Ràng buộc NOT NULL trong SQL Server

Trong hướng dẫn này, bạn sẽ học cách sử dụng ràng buộc NOT NULL trong SQL Server để đảm bảo một cột không chứa dữ liệu NULL.