

Tìm Hiểu Ràng Buộc UNIQUE Trong MySQL
- 14-06-2025
- trienkhaiweb
- 0 Comments
Trong bài trước, chúng ta đã tìm hiểu về khóa chính (PRIMARY KEY) – một thành phần quan trọng dùng để xác định duy nhất từng dòng dữ liệu trong bảng. Tuy nhiên, bên cạnh khóa chính, MySQL còn cung cấp một ràng buộc khác cũng có tính duy nhất là UNIQUE.
Mục lục
1. UNIQUE Là Gì?
UNIQUE
là một ràng buộc (constraint) dùng để đảm bảo mỗi giá trị trong cột (hoặc tập cột) được đánh dấu là UNIQUE
là không trùng lặp trong toàn bảng.
✅ Đặc điểm:
- Đảm bảo không có hai record nào có giá trị giống nhau tại cột (hoặc tổ hợp cột) được chỉ định.
- Có thể khai báo nhiều cột UNIQUE trong một bảng.
- Về bản chất,
UNIQUE
là một loại index (chỉ mục), vì vậy nó cũng giúp tăng tốc truy vấn. - Cho phép chứa giá trị
NULL
(mỗiNULL
được coi là một giá trị khác nhau).
2. So Sánh PRIMARY KEY vs UNIQUE
Tiêu chí | PRIMARY KEY | UNIQUE |
---|---|---|
Số lượng trong bảng | Chỉ duy nhất một | Có thể có nhiều |
Cho phép NULL | ❌ Không | ✅ Có (một hoặc nhiều NULL ) |
Mục đích chính | Nhận diện duy nhất mỗi record | Đảm bảo không trùng ở một hoặc vài field |
Tạo chỉ mục tự động | ✅ Có (tên là PRIMARY) | ✅ Có (tên là tên chỉ định hoặc auto) |
3. Cách Tạo UNIQUE Trong MySQL
✅ Cách 1: Tạo UNIQUE khi tạo bảng
CREATE TABLE Users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(50) NOT NULL UNIQUE
);
✅ Cách 2: Khai báo UNIQUE ở phần cuối
CREATE TABLE Users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL,
UNIQUE (username),
UNIQUE (email)
);
✅ Cách 3: Dùng CONSTRAINT để đặt tên UNIQUE
Việc đặt tên giúp bạn dễ quản lý hơn khi cần xóa hoặc chỉnh sửa:
CREATE TABLE Users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL,
CONSTRAINT user_unique UNIQUE (username),
CONSTRAINT email_unique UNIQUE (email)
);
4. Thêm UNIQUE Sau Khi Đã Tạo Bảng
Dùng ALTER TABLE
ALTER TABLE Users ADD UNIQUE(username);
ALTER TABLE Users ADD UNIQUE(email);
Dùng CONSTRAINT
đặt tên
ALTER TABLE Users ADD CONSTRAINT user_unique UNIQUE (username);
ALTER TABLE Users ADD CONSTRAINT email_unique UNIQUE (email);
5. Xóa UNIQUE Trong MySQL
Để xóa một ràng buộc UNIQUE, bạn cần biết tên của index. Đây là lý do nên dùng CONSTRAINT
để đặt tên ngay từ đầu.
ALTER TABLE Users DROP INDEX user_unique;
🔔 Lưu ý:
user_unique
là tên chỉ mục (index name), không phải tên cột.- Nếu không đặt tên, MySQL sẽ tự động tạo tên theo định dạng như
username_UNIQUE
.
6. Kết Luận
Ràng buộc UNIQUE
rất quan trọng trong các hệ thống đòi hỏi tính duy nhất trên một hoặc nhiều cột, ví dụ như email hoặc username trong bảng người dùng. Nó cũng giúp cải thiện hiệu suất truy vấn vì MySQL tự động tạo chỉ mục cho các cột UNIQUE
.
👉 Ở bài tiếp theo, chúng ta sẽ tìm hiểu về AUTO_INCREMENT – cách thiết lập cột tự động tăng, thường áp dụng cho khóa chính (id
) giúp đơn giản hóa việc thêm dữ liệu.
Nếu bạn cần mình biên tập lại toàn bộ các bài về DDL
, PRIMARY KEY
, UNIQUE
, và AUTO_INCREMENT
thành một tài liệu học tập thống nhất hoặc giáo trình PDF, cứ nói nhé!