Khóa chính PRIMARY KEY trong SQL Server

Thứ hai - 06/03/2023 23:42

Khóa chính SQL Server là gì? Tạo khóa chính trong SQL Server như thế nào? Hãy cùng Quantrimang.com tìm hiểu những điều cần biết về khóa chính trong SQL nhé!

Khóa chính - Primary Key là gì?

  • Trong SQL Server, khóa chính là nhân tố ràng buộc xác định duy nhất từng hàng trong bảng. Nó đảm bảo tính toàn vẹn của dữ liệu trong bảng.
  • Một bảng có thể chỉ bao gồm một khóa chính.
  • Một khóa chính có thể được xác định trên một cột hoặc nhiều cột được gọi là khóa chính tổng hợp.
  • Một khóa chính không thể vượt quá 16 cột và tổng chiều dài của khóa là 900 byte.
  • Khóa chính xác định duy nhất mỗi hàng trong bảng. Nó thường được xác định trên cột nhận dạng.
  • Cột khóa chính không cho phép null hoặc trùng lặp giá trị. Nó sẽ phát sinh lỗi nếu bạn làm việc này.
  • Tất cả các cột được xác định trong khóa chính phải là cột Not Null.
  • Nếu nhóm hoặc không nhóm không được chỉ định, thì một chỉ mục nhóm duy nhất cho cột khóa chính sẽ được tạo nếu không có chỉ mục nhóm nào trên bảng. Điều này làm cho việc truy xuất dữ liệu nhanh hơn bất cứ khi nào cột khóa chính được đưa vào truy vấn.

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 kết hợp nhiều trường và được xác định là một bản ghi duy nhất. Không trường nào trong khóa chính được chứa giá trị NULL. Một bảng chỉ có duy nhất một khóa chính. Khóa chính có thể được định nghĩa bằng lệnh CREATE TABLE hoặc lệnh ALTER TABLE.

Tạo khóa chính - bằng lệnh CREATE TABLE

Cú pháp tạo khóa chính bằng lệnh 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 bằng lệnh CREATE TABLE

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

Ở ví dụ này, khóa chính cho bảng nhanvien được tạo thành từ 1 trường là nhanvien_id. Ngoài ra có thể tạo khóa chính 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)
);

Bây giờ là ví dụ tạo khóa chính có 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)
);

Ở ví dụ này, chúng ta đã tạo khóa chính tạo thành từ 2 cột là ho và ten. 2 trường này sẽ xác định một cách duy nhất cho bản ghi trong bảng nhanvien.

Tạo khóa chính - bằng lệnh ALTER TABLE

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

Cú pháp tạo khóa chính bằng lệnh 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 bằng lệnh ALTER TABLE

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

Trong ví dụ này, ta tạo khóa chính nhanvien_pk cho bảng nhanvien có sẵn, gồm trường nhanvien_id. Lưu ý là 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.

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

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

Khóa chính cho bảng nhanvien gồm 2 trường là họ và tên. Cả 2 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 bằng lệnh ALTER TABLE

ALTER TABLE ten_bang
DROP CONSTRAINT ten_rang_buoc;

Ví dụ xóa khóa chính bằng lệnh ALTER TABLE

ALTER TABLE nhanvien
DROP CONSTRAINT nhanvien_pk;

Ví dụ trên xóa khóa chính nhanvien_pk 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 bằng lệnh ALTER INDEX

ALTER INDEX ten_rang_buoc ON ten_bang
DISABLE;

Ví dụ vô hiệu hóa khóa chính bằng lệnh ALTER INDEX

ALTER INDEX nhanvien_pk ON nhanvien
DISABLE;

Ví dụ trên vô hiệu hóa khóa chính nhanvien_pk 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 bằng lệnh ALTER INDEX

ALTER INDEX ten_rang_buoc ON ten_bang
REBUILD;

Ví dụ kích hoạt khóa chính bằng lệnh ALTER INDEX

ALTER INDEX nhanvien_pk ON nhanvien
REBUILD;

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

Nguồn tin: Quantrimang.com

Tổng số điểm của bài viết là: 0 trong 0 đánh giá

  Ý kiến bạn đọc

THỐNG KÊ TRUY CẬP
  • Đang truy cập49
  • Máy chủ tìm kiếm1
  • Khách viếng thăm48
  • Hôm nay14,252
  • Tháng hiện tại156,191
  • Tổng lượt truy cập9,862,043
QUẢNG CÁO
Phan Thanh Phú
Quảng cáo 2
Liên kết site
Đăng nhập Thành viên
Hãy đăng nhập thành viên để trải nghiệm đầy đủ các tiện ích trên site
Thăm dò ý kiến

Bạn thấy Website cần cải tiến những gì?

Lịch Âm dương
Máy tính
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây