Ràng buộc UNIQUE là gì?
Ràng buộc UNIQUE là một cột hoặc tổ hợp các cột xác định duy nhất một bản ghi. Khác với PRIMARY KEY, các cột UNIQUE có thể chứa NULL (miễn là tổ hợp giá trị vẫn duy nhất).
Khác biệt UNIQUE vs PRIMARY KEY
| Đặc điểm | PRIMARY KEY | UNIQUE |
|---|---|---|
| Cho phép NULL | Không | Có (miễn tổ hợp duy nhất) |
| Số lượng trên bảng | 1 | Nhiều |
Tạo UNIQUE khi CREATE TABLE
CREATE TABLE ten_bang (
cot1 kieu_du_lieu [NULL | NOT NULL],
cot2 kieu_du_lieu [NULL | NOT NULL],
...
CONSTRAINT ten_rang_buoc UNIQUE (cot1_rb, cot2_rb, ..., cot_n_rb)
);
Tham số:
- ten_bang: Tên bảng tạo mới.
- cot1, cot2...: Các cột của bảng.
- ten_rang_buoc: Tên ràng buộc UNIQUE.
- cot1_rb, cot2_rb...: Cột cấu thành ràng buộc.
Ví dụ 1: UNIQUE 1 cột
CREATE TABLE nhanvien (
id_nhanvien INT PRIMARY KEY,
so_nhanvien INT NOT NULL,
ho VARCHAR(50) NOT NULL,
ten VARCHAR(50),
luong MONEY,
CONSTRAINT nhanvien_duynhat UNIQUE (so_nhanvien)
);
Ví dụ 2: UNIQUE tổ hợp 2 cột
CREATE TABLE nhanvien (
id_nhanvien INT PRIMARY KEY,
so_nhanvien INT NOT NULL,
ho VARCHAR(50) NOT NULL,
ten VARCHAR(50),
luong MONEY,
CONSTRAINT nhanvien_duynhat UNIQUE (ho, ten)
);
Tạo UNIQUE bằng ALTER TABLE
ALTER TABLE ten_bang
ADD CONSTRAINT ten_rang_buoc UNIQUE (cot1, cot2, ..., cot_n);
Ví dụ
ALTER TABLE nhanvien
ADD CONSTRAINT nhanvien_duynhat UNIQUE (so_nhanvien);
-- Tổ hợp 2 cột
ALTER TABLE nhanvien
ADD CONSTRAINT nhanvien_duynhat UNIQUE (ho, ten);
Xóa ràng buộc UNIQUE
ALTER TABLE ten_bang
DROP CONSTRAINT ten_rang_buoc;
Ví dụ
ALTER TABLE nhanvien
DROP CONSTRAINT nhanvien_duynhat;