Ngôn ngữ SQL - Khóa chính

KHÓA CHÍNH trong SQL

Một cột hoặc nhều cột được gọi là khóa chính (PK) có tính chất duy nhất mỗi hàng trong bảng.

Nếu bạn muốn tạo khóa chính, bạn nên xác định ràng buộc KHÓA CHÍNH khi bạn tạo hoặc sửa đổi bảng.

Khi nhiều cột được sử dụng làm khóa chính, được gọi là khóa chính tổng hợp.

Khi thiết kế khóa chính tổng hợp, bạn nên sử dụng càng ít cột càng tốt. Làm cho việc lưu trữ và hiệu suất tốt hơn, bạn sử dụng nhiều cột làm khóa chính thì  cần nhiều dung lượng lưu trữ.

Dữ liệu có nghĩa là cơ sở dữ liệu có thể xử lý nhanh hơn.


Những điểm cần nhớ cho khóa chính:

  • Khóa chính thực thi tính toàn vẹn thực thể của bảng.
  • Khóa chính luôn có dữ liệu duy nhất.
  • Độ dài khóa chính không thể vượt quá 900 byte.
  • Khóa chính không thể có giá trị null.
  • Không thể có giá trị trùng lặp cho khóa chính.
  • Một bảng chỉ có thể chứa một ràng buộc khóa chính
Khi chúng ta chỉ định ràng buộc khóa chính cho bảng, cơ sở dữ liệu sẽ tự động tạo một chỉ mục duy nhất cho cột khóa chính.

Ưu điểm chính của khóa chính:
Ưu điểm chính của sự độc đáo này là chúng ta có thể truy cập nhanh.

Trong Orcacle, không được phép cho khóa chính chứa hơn 32 cột.

Câu lệnh SQL tạo khóa chính
Lệnh SQL sau đây tạo ra một KHÓA CHÍNH trên cột "S_Id" khi bảng "STDUENTS" được tạo.

MYSQL

CREATE TABLE students  
(  
S_Id int NOT NULL,  
LastName varchar (255) NOT NULL,  
FirstName varchar (255),  
Address varchar (255),  
City varchar (255),  
PRIMARY KEY (S_Id)  
)  
SQL Server, Oracle, MS Access:
CREATE TABLE students  
(  
S_Id int NOT NULL PRIMARY KEY,  
LastName varchar (255) NOT NULL,  
FirstName varchar (255),  
Address varchar (255),  
City varchar (255),  
)  

Tạo khóa chính trên nhiều cột

MySQL, SQL Server, Oracle, MS Access:

CREATE TABLE students  
(  
S_Id int NOT NULL,  
LastName varchar (255) NOT NULL,  
FirstName varchar (255),  
Address varchar (255),  
City varchar (255),  
CONSTRAINT pk_StudentID PRIMARY KEY (S_Id, LastName)  
)  

Lưu ý:  trong ví dụ trên chỉ có một KHÓA CHÍNH (pk_StudentID). Tuy nhiên, nó được tạo thành từ hai cột (S_Id và LastName).


Dùng lệnh ALTER TABLE

Khi bảng đã được tạo và bạn muốn tạo ràng buộc PRIMARY KEY trên cột "S_Id", bạn nên sử dụng SQL sau:

Khóa chính trên một cột:

ALTER TABLE students  
ADD PRIMARY KEY (S_Id)  

Khóa chính trên nhiều cột:

ALTER TABLE students  
ADD CONSTRAINT pk_StudentID PRIMARY KEY (S_Id,LastName)  
Khi sử dụng câu lệnh ALTER TABLE để thêm khóa chính, các cột khóa chính không được chứa các giá trị NULL (khi bảng được tạo lần đầu tiên).

Làm thế nào để DROP một ràng buộc CHÍNH CHÍNH?
Nếu bạn muốn DROP (loại bỏ) một ràng buộc khóa chính, bạn nên sử dụng cú pháp sau:

MySQL:

ALTER TABLE students  
DROP PRIMARY KEY  

SQL Server / Oracle / MS Access:

ALTER TABLE students  
DROP CONSTRAINT pk_StudentID