Ràng buộc khóa chính PRIMARY KEY
Ràng buộc PRIMARY KEY xác định sự duy nhất của mỗi bản ghi trong bảng cơ sở dữ liệu.
Một PRIMARY KEY có thể gồm một trường hoặc nhiều trường.
Các khóa chính phải bao gồm các giá trị duy nhất
Một cột khóa chính không thể chứa giá trị NULL
Mỗi bảng dữ liệu có và chỉ có duy nhất một khóa chính (PRIMARY KEY)
Ràng buộc khóa chính khi tạo bảng
Đoạn mã SQL sau tạo một PRIMARY KEY trên cột PID khi mà bảng Persons được tạo.
MYSQL
CREATE TABLE Persons
(
PID INT NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
CITY varchar(255),
PRIMARY KEY (PID)
)
SQL Server/Oracle/MS Access
CREATE TABLE Persons
(
PID INT NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
CITY varchar(255),
)
Để cho phép đặt tên một ràng buộc khóa chính (PRIMARY KEY), và định nghĩa một khóa chính trên nhiều cột, sử dụng cú pháp SQL sau:
MYSQL/ SQL Server/ Oracle/ MS Access
CREATE TABLE Persons
(
PID INT NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
Address varchar(255),
CITY varchar(255),
CONSTRAINT Pk_psid PRIMARY KEY (PID, LastName)
)
Chú ý: Trong ví dụ trên, chỉ có một PRIMARY KEY có tên là Pk_psid. Tuy vậy giá trị của Pk_psid được tạo thành từ hai cột đó là (PID và LastName)
Ràng buộc khóa chính (PRIMARY KEY) trong ALTER TABLE
Để tạo một ràng buộc khóa chính trên cột “PID” khi mà bảng đã được tạo từ trước, ta có thể làm như đoạn mã SQL sau.
MYSQL/SQL Server/ Oracle/ MS Access
ALTER TABLE Persons
ADD PRIMARY KEY (PID)
Để cho phép đặt tên một ràng buộc khóa chính và định nghĩa một ràng buộc khóa chính trên nhiều cột, sử dụng cú pháp SQL sau.
MYSQL/SQL Server/ Oracle/ MS Access
ALTER TABLE Persons
ADD CONSTRAINT Pk_psid
PRIMARY KEY (PID, LastName)
Chú ý: Nếu bạn sử dụng lệnh ALTER TABLE để thêm một khóa chính, các cột khóa chính phải được khai báo từ trước là không chứa dữ liệu có giá trị NULL (Trong lần đầu tiên tạo bảng)
Xóa (DROP) một ràng buộc khóa chính
Để xóa một ràng buộc khóa chính, sử dụng đoạn mã SQL sau
MYSQL:
ALTER TABLE Persons
DROP PRIMARY KEY
SQL Server/ Oracle/ MS Access
ALTER TABLE Persons
DROP CONSTRAINT Pk_psid