Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> SQL Server

Khóa chính PRIMARY KEY trong SQL Server

Tìm hiểu cách tạo, xóa, vô hiệu hóa hoặc kích hoạt khóa chính (Primary Key) trong SQL Server với cú pháp và ví dụ.

Khóa chính trong SQL Server là gì?

Trong SQL Server (Transact-SQL), khóa chính là một trường hoặc tổ hợp nhiều trường được định nghĩa để xác định duy nhất một bản ghi. Không trường nào trong khóa chính được chứa giá trị NULL. Một bảng chỉ có một khóa chính. Khóa chính có thể được định nghĩa bằng lệnh CREATE TABLE hoặc ALTER TABLE.

Tạo khóa chính – với lệnh CREATE TABLE

Cú pháp tạo khóa chính với CREATE TABLE

CREATE TABLE ten_bang
(
 cot1 kieu_du_lieu [ NULL | NOT NULL ] [ PRIMARY KEY ],
 cot2 kieu_du_lieu [ NULL | NOT NULL ],
 …
);

Hoặc

CREATE TABLE ten_bang
(
 cot1 kieu_du_lieu [ NULL | NOT NULL ],
 cot2 kieu_du_lieu [ NULL | NOT NULL ],
 …
 CONSTRAINT ten_rang_buoc PRIMARY KEY (cot1, cot2, … cot_n)
);

Ví dụ tạo khóa chính với CREATE TABLE

CREATE TABLE nhanvien
( nhanvien_id INT PRIMARY KEY,
 ho VARCHAR(50) NOT NULL,
 ten VARCHAR(50) NOT NULL,
 luong MONEY
);

Trong ví dụ này, khóa chính cho bảng nhanvien được cấu thành từ một trường tên nhanvien_id. Ngoài ra, khóa chính cũng có thể tạo như sau:

CREATE TABLE nhanvien
( nhanvien_id INT,
 ho VARCHAR(50) NOT NULL,
 ten VARCHAR(50) NOT NULL,
 luong MONEY,
 CONSTRAINT nhanvien_pk PRIMARY KEY (nhanvien_id)
);

Dưới đây là ví dụ tạo khóa chính với nhiều hơn 1 trường trong SQL Server.

CREATE TABLE nhanvien
( ho VARCHAR(50) NOT NULL,
 ten VARCHAR(50) NOT NULL,
 luong MONEY,
 CONSTRAINT nhanvien_pk PRIMARY KEY (ho, ten)
);

Trong ví dụ này, chúng ta tạo khóa chính gồm hai cột ho và ten. Hai trường này sẽ xác định duy nhất bản ghi trong bảng.

Tạo khóa chính – với lệnh ALTER TABLE

Khóa chính chỉ có thể được tạo với lệnh ALTER TABLE trên các cột đã được định nghĩa là NOT NULL. Nếu cột cho phép giá trị NULL, khóa chính không thể được thêm vào mà không xóa hoặc tạo lại bảng.

Cú pháp tạo khóa chính với ALTER TABLE

ALTER TABLE ten_bang
ADD CONSTRAINT ten_rang_buoc PRIMARY KEY (cot1, cot2, … cot_n);

Ví dụ tạo khóa chính với ALTER TABLE

ALTER TABLE nhanvien
ADD CONSTRAINT nhanvien_pk PRIMARY KEY (nhanvien_id);

Trong ví dụ này, chúng ta tạo khóa chính cho bảng đã có, bao gồm trường nhanvien_id. Lưu ý rằng trường nhanvien_id phải được định nghĩa là NOT NULL trước đó, nếu không sẽ phải xóa và tạo lại bảng và định nghĩa trường này là NOT NULL.

Bạn có thể tạo khóa chính với nhiều hơn 1 trường như ví dụ sau.

ALTER TABLE nhanvien
ADD CONSTRAINT nhanvien_pk PRIMARY KEY (ho, ten);

Khóa chính cho bảng bao gồm 2 trường là ho và ten. Cả hai đều phải được định nghĩa là NOT NULL.

Xóa khóa chính trong SQL Server

Cú pháp xóa khóa chính với ALTER TABLE

ALTER TABLE ten_bang
DROP CONSTRAINT ten_rang_buoc;

Ví dụ xóa khóa chính với ALTER TABLE

ALTER TABLE nhanvien
DROP CONSTRAINT nhanvien_pk;

Ví dụ trên xóa khóa chính trong bảng nhanvien.

Vô hiệu hóa khóa chính trong SQL Server

Cú pháp vô hiệu hóa khóa chính với ALTER INDEX

ALTER INDEX ten_rang_buoc ON ten_bang
DISABLE;

Ví dụ vô hiệu hóa khóa chính

ALTER INDEX nhanvien_pk ON nhanvien
DISABLE;

Ví dụ trên vô hiệu hóa khóa chính trong bảng nhanvien.

Kích hoạt khóa chính trong SQL Server

Cú pháp kích hoạt khóa chính với ALTER INDEX

ALTER INDEX ten_rang_buoc ON ten_bang
REBUILD;

Ví dụ kích hoạt khóa chính

ALTER INDEX nhanvien_pk ON nhanvien
REBUILD;

Ví dụ trên kích hoạt lại khóa chính của bảng nhanvien.