Ràng buộc UNIQUE trong MySQL đảm bảo tất cả giá trị trong cột (hoặc nhóm cột) là duy nhất, ngăn chặn việc chèn dữ liệu trùng lặp.
Cú pháp khai báo
create table yourTableName (
yourColumnName1 dataType,
yourColumnName2 dataType,
UNIQUE(yourColumnName1),
UNIQUE(yourColumnName2)
);
Ví dụ minh họa
Tạo bảng với 2 cột UNIQUE:
mysql> create table DemoTable (
Value int,
Value2 int,
UNIQUE(Value),
UNIQUE(Value2)
);
Thử chèn dữ liệu:
mysql> insert into DemoTable values(10,20); -- OK mysql> insert into DemoTable values(10,30); -- LỖI: Duplicate '10' cho key 'Value' mysql> insert into DemoTable values(40,20); -- LỖI: Duplicate '20' cho key 'Value2' mysql> insert into DemoTable values(60,70); -- OK
Kết quả lỗi:
ERROR 1062 (23000): Duplicate entry '10' for key 'Value' ERROR 1062 (23000): Duplicate entry '20' for key 'Value2'
Kiểm tra dữ liệu cuối cùng:
mysql> select * from DemoTable;
Kết quả:
+-------+--------+ | Value | Value2 | +-------+--------+ | 10 | 20 | | 60 | 70 | +-------+--------+
Giải thích:
- Mỗi cột có
UNIQUEđộc lập → Value không trùng, Value2 không trùng - Không thể có 2 hàng cùng Value=10, hoặc cùng Value2=20
- Khác với PRIMARY KEY: UNIQUE cho phép NULL (nhiều NULL), PRIMARY KEY không cho phép NULL
Ứng dụng: Email, username, số CMND, mã sản phẩm - các trường yêu cầu duy nhất nhưng không phải khóa chính.