1. Ràng buộc UNIQUE

Các ràng buộc UNIQUE được sử dụng để đảm bảo rằng tất cả các giá trị trong một cột là khác nhau. Trong SQL ta có 2 ràng buộc đó là UNIQUE PRIMARY KEY đều đảm bảo tính duy nhất cho một cột hoặc tập hợp các cột.

Một ràng buộc PRIMARY KEY khi được thêm vào cột thì mặc định cột đó sẽ được thêm ràng buộc UNIQUE. Tuy nhiên, bạn có thể có nhiều ràng buộc UNIQUE trên mỗi bảng, nhưng chỉ có một ràng buộc PRIMARY KEY làm khóa chính cho bảng. Chúng ta sẽ tìm hiểu về PRIMARY KEY sau.

Cú pháp thêm ràng buộc UNIQUE  cho một vài cột trong câu lệnh tạo bảng như sau:

CREATE TABLE table_name (
    column1 datatype UNIQUE,
    column2 datatype,
    column3 datatype,
   ....
);

Trong trường hợp ta muốn đặt tên cho ràng buộc UNIQUE trong câu lệnh tạo bảng ta sẽ sử dụng cú pháp như sau:

CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    column3 datatype,
    CONSTRAINT name UNIQUE (column1 ,column2, column3 )
   ....
);

Trong đó:

  • CREATE TABLE là câu lệnh hay từ khóa cần có
  • table_name là tên của bảng cần tạo
  • column1, column2, column3… là tên các cột thuộc trong bảng
  • datatype là kiểu dữ liệu của từng cột
  • UNIQUE là ràng buộc cho cột
  • name là tên của ràng buộc UNIQUE do ta tự đặt

Sau khi bảng được tạo, ta hoàn toàn có thể bổ sung ràng buộc UNIQUE vào bảng bằng cú pháp sau:

ALTER TABLE table_name
ADD CONSTRAINT name UNIQUE (column1,column2,...);

Trong đó:

  • ADD CONSTRAINT là câu lệnh thêm ràng buộc
  • name là tên của ràng buộc (ta có thể đặt tên bất kỳ)
  • column1,column2,… là các cột sẽ được bổ sung ràng buộc UNIQUE

Để xóa bỏ ràng buộc UNIQUE ở trong bảng, ta sẽ sử dụng cú pháp như sau:

ALTER TABLE table_name
DROP CONSTRAINT name;

Chú ý: Để xóa bỏ ràng buộc thì ta cần biết name hay tên của ràng buộc mà ta đã thêm!

2. Ví dụ UNIQUE

Ví dụ này, tôi sẽ tạo bảng ConNguoi bao gồm các cột là  ID, Ho, Ten, DiaChi, ThanhPho và đặt ràng buộc UNIQUE có tên là UC_ConNguoi cho cột là ID, Ho, Ten trong câu lệnh tạo bảng như sau:

CREATE TABLE ConNguoi (
    ID int NOT NULL,
    Ho varchar(25) NOT NULL,
    Ten varchar(25) NOT NULL,
    DiaChi nvarchar(255),
    ThanhPho nvarchar(255),
    CONSTRAINT UC_ConNguoi UNIQUE (ID, Ho, Ten)
);

Tiếp theo, sau khi bảng trên đã được tạo ra tôi sẽ bổ xung thêm ràng buộc UNIQUE vào cột  DiaChi như sau:

ALTER TABLE ConNguoi
ADD CONSTRAINT UC_DiaChi UNIQUE (DiaChi);

Trong trường hợp tôi cần xóa đi ràng buộc UNIQUE trong cột DiaChi tôi sẽ thực hiện cú pháp sau:

ALTER TABLE ConNguoi
DROP CONSTRAINT UC_DiaChi;

Chú ý: Khi cột có ràng buộc UNIQUE thì mọi thao tác thêm hoặc cập nhật dữ liệu vào trong bảng phải thỏa mãn điều kiện dữ liệu không được trùng lặp trong cột có ràng buộc UNIQUE. Nếu dữ liệu bị trùng lặp trong cột có ràng buộc UNIQUE sẽ không được thêm vào trong bảng.