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ộtevent_id
làm khóa chính, bạn phải đảm bảo rằng các giá trị của cộtevent_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.