Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Khai báo UNIQUE trong MySQL để ngăn chèn giá trị trùng lặp

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.