Ràng buộc unique trong SQL Server

Ràng buộc unique trong sql server thường được sử dụng với mục đích đảm bảo giá trị trong một trường dữ liệu nào đó của bảng là duy nhất. Cùng Comdy tìm hiểu về khái niệm, cú pháp và ví dụ về unique in sql server trong bài viết này nhé.

Giới thiệu về ràng buộc unique SQL Server – Ràng buộc unique là gì?

Giới thiệu về ràng buộc unique SQL Server
Unique SQL Server một điều kiện áp dụng trên một hoặc nhiều cột trong một bảng trong cơ sở dữ liệu để đảm bảo rằng giá trị trong cột không trùng lặp giữa các bản ghi

Unique là ràng buộc duy nhất trong sql. Cùng tìm hiểu khái niệm và ví dụ ngay sau đây.

Ràng buộc duy nhất (unique constraint) là gì?

Unique là gì sql hay ràng buộc duy nhất là gì? Ràng buộc duy nhất (unique constraint) là một điều kiện áp dụng trên một hoặc nhiều cột trong một bảng trong cơ sở dữ liệu để đảm bảo rằng giá trị trong cột (hoặc kết hợp giá trị trong nhiều cột) không thể trùng lặp trong tất cả các bản ghi. Điều này có nghĩa là mỗi giá trị trong cột đó chỉ xuất hiện một lần trong bảng.

Ràng buộc duy nhất unique sql giúp bảo vệ tính nhất quán và độ chính xác của dữ liệu bằng cách ngăn chặn việc chèn hoặc cập nhật các giá trị trùng lặp trong cột được xác định bởi ràng buộc.

Ràng buộc sql server unique cho phép bạn đảm bảo rằng dữ liệu được lưu trữ trong một cột hoặc một nhóm cột, là duy nhất giữa các hàng trong bảng.

SQL server unique key là gì?

SQL server unique key là gì
Unique key có chức năng giống như unique constraint, đảm bảo giá trị trong cột hoặc các cột không thể trùng lặp trong toàn bộ bảng.

Unique key trong sql là một thuật ngữ thường được sử dụng trong cơ sở dữ liệu để mô tả một hoặc nhiều cột có giá trị duy nhất cho mỗi bản ghi trong bảng. Unique key có chức năng giống như unique constraint, nó đảm bảo rằng giá trị trong cột hoặc các cột được định nghĩa bởi unique key in sql server không thể trùng lặp trong toàn bộ bảng.

Set unique sql cho một cột hoặc một nhóm các cột để đảm bảo tính nhất quán và độ chính xác của dữ liệu. Đồng thời ngăn chặn sự xuất hiện của các giá trị trùng lặp trong các cột quan trọng.

Ví dụ về ràng buộc unique in SQL server

Như vậy bạn đã biết được unique sql là gì. Tiếp theo, cùng đi đến ví dụ cụ thể.

Câu lệnh sau tạo một bảng có dữ liệu trong cột email là duy nhất giữa các hàng trong bảng hr.persons:

CREATE SCHEMA hr;
GO

CREATE TABLE hr.persons(
    person_id INT IDENTITY PRIMARY KEY,
    first_name VARCHAR(255) NOT NULL,
    last_name VARCHAR(255) NOT NULL,
    email VARCHAR(255) UNIQUE
);

Trong cú pháp này, bạn xác định ràng buộc UNIQUE là một ràng buộc cột. Bạn cũng có thể xác định ràng buộc UNIQUE dưới dạng ràng buộc bảng, như sau:

CREATE TABLE hr.persons(
    person_id INT IDENTITY PRIMARY KEY,
    first_name VARCHAR(255) NOT NULL,
    last_name VARCHAR(255) NOT NULL,
    email VARCHAR(255),
    UNIQUE(email)
);

SQL Server tự động tạo một index sql unique để thực thi tính duy nhất của dữ liệu được lưu trữ trong các cột tham gia vào ràng buộc UNIQUE. Do đó, nếu bạn cố gắng insert một hàng trùng lặp, SQL Server sẽ từ chối và trả về thông báo lỗi cho biết ràng buộc UNIQUE đã bị vi phạm.

Câu lệnh sau sẽ insert một hàng mới vào bảng hr.persons:

INSERT INTO hr.persons(first_name, last_name, email)
VALUES('John','Doe','j.doe@bike.stores');

Câu lệnh hoạt động như mong đợi. Tuy nhiên, câu lệnh sau không thành công do email bị trùng lặp:

INSERT INTO hr.persons(first_name, last_name, email)
VALUES('Jane','Doe','j.doe@bike.stores');

SQL Server đã đưa ra thông báo lỗi sau:

Violation of UNIQUE KEY constraint 'UQ__persons__AB6E616417240E4E'. Cannot insert duplicate key in object 'hr.persons'. The duplicate key value is (j.doe@bike.stores).

Nếu bạn không chỉ định tên cho ràng buộc UNIQUE, SQL Server sẽ tự động tạo tên cho nó. Trong ví dụ này, tên ràng buộc là UQ__persons__AB6E616417240E4E, không thể đọc được.

Để gán một tên cụ thể cho một ràng buộc UNIQUE, bạn sử dụng từ khóa CONSTRAINT như sau:

CREATE TABLE hr.persons (
    person_id INT IDENTITY PRIMARY KEY,
    first_name VARCHAR(255) NOT NULL,
    last_name VARCHAR(255) NOT NULL,
    email VARCHAR(255),
    CONSTRAINT unique_email UNIQUE(email)
);

Sau đây là những lợi ích của việc gán tên cụ thể cho một ràng buộc UNIQUE:

  • Nó dễ dàng hơn để phân loại thông báo lỗi.
  • Bạn có thể tham chiếu tên ràng buộc khi bạn muốn sửa đổi nó.

Ràng buộc unique so với ràng buộc primary key

Ràng buộc unique so với ràng buộc primary key
Khác với ràng buộc PRIMARY KEY, ràng buộc UNIQUE cho phép NULL

Mặc dù cả hai ràng buộc UNIQUEvà PRIMARY KEY thực thi tính duy nhất của dữ liệu, bạn nên sử dụng ràng buộc UNIQUE thay vì ràng buộc PRIMARY KEY khi bạn muốn thực thi tính duy nhất của một cột hoặc một nhóm cột không phải là cột khóa chính.

Khác với ràng buộc PRIMARY KEY, ràng buộc UNIQUE cho phép NULL. Hơn nữa, các ràng buộc UNIQUE coi NULL như một giá trị thông thường, do đó, nó chỉ cho phép một giá trị NULL trên mỗi cột.

Câu lệnh sau sẽ insert một hàng có giá trị trong cột email là NULL:

INSERT INTO hr.persons(first_name, last_name)
VALUES('John','Smith');

Bây giờ, nếu bạn cố gắng insert thêm một giá trị NULL vào cột email, bạn sẽ gặp lỗi:

INSERT INTO hr.persons(first_name, last_name)
VALUES('Lily','Bush');

Đây là kết quả:

Violation of UNIQUE KEY constraint 'UQ__persons__AB6E616417240E4E'. Cannot insert duplicate key in object 'hr.persons'. The duplicate key value is (<NULL>).

Ràng buộc unique trong SQL cho một nhóm cột

Để tạo ràng buộc UNIQUE cho một nhóm cột, bạn viết nó dưới dạng ràng buộc bảng với các tên cột được phân tách bằng dấu phẩy như sau:

CREATE TABLE table_name (
    key_column data_type PRIMARY KEY,
    column1 data_type,
    column2 data_type,
    column3 data_type,
    ...,
    UNIQUE (column1,column2)
);

Ví dụ sau tạo một ràng buộc UNIQUE bao gồm hai cột person_id và skill_id:

CREATE TABLE hr.person_skills (
    id INT IDENTITY PRIMARY KEY,
    person_id int,
    skill_id int,
    updated_at DATETIME,
    UNIQUE (person_id, skill_id)
);

Thêm ràng buộc unique trong SQL vào các cột hiện có

Thêm unique trong SQL vào cột hiện có
Thêm unique trong SQL vào cột hiện có sử dụng cú pháp gì?

Khi bạn thêm ràng buộc trong SQL UNIQUE vào cột hiện có hoặc một nhóm cột trong bảng, SQL Server trước tiên sẽ kiểm tra dữ liệu hiện có trong các cột này để đảm bảo rằng tất cả các giá trị là duy nhất. Nếu SQL Server tìm thấy các giá trị trùng lặp thì nó sẽ trả về lỗi và không thêm ràng buộc UNIQUE.

Sau đây là cú pháp của việc thêm ràng buộc UNIQUE vào bảng:

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

Giả sử bạn có bảng hr.persons sau :

CREATE TABLE hr.persons (
    person_id INT IDENTITY PRIMARY KEY,
    first_name VARCHAR(255) NOT NULL,
    last_name VARCHAR(255) NOT NULL,
    email VARCHAR(255),
    phone VARCHAR(20),
);

Câu lệnh sau đây thêm ràng buộc UNIQUE vào cột email:

ALTER TABLE hr.persons
ADD CONSTRAINT unique_email UNIQUE(email);

Tương tự, câu lệnh sau thêm ràng buộc UNIQUE vào cột phone:

ALTER TABLE hr.persons
ADD CONSTRAINT unique_phone UNIQUE(phone);

Xóa các ràng buộc unique

Để tạo một ràng buộc UNIQUE, bạn sử dụng câu lệnh ALTER TABLE DROP CONSTRAINT như sau:

ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

Câu lệnh sau xóa ràng buộc unique_phone khỏi bảng hr.persons:

ALTER TABLE hr.persons
DROP CONSTRAINT unique_phone;

Sửa đổi các ràng buộc unique trong SQL

Thêm unique trong SQL vào cột hiện có
Bạn cần phải xóa ràng buộc trước và tạo lại nó nếu bạn muốn thay đổi ràng buộc.

SQL Server không có bất kỳ câu lệnh trực tiếp nào để sửa đổi một ràng buộc UNIQUE. Do đó, bạn cần phải xóa ràng buộc trước và tạo lại nó nếu bạn muốn thay đổi ràng buộc.

Trong hướng dẫn này, bạn đã học cách sử dụng ràng buộc UNIQUE trong SQL Server để đảm bảo rằng dữ liệu chứa trong một cột hoặc một nhóm cột là duy nhất.

Constraint trong SQL server là gì?

Trong SQL, constraint là một quy tắc được áp dụng cho dữ liệu trong cơ sở dữ liệu để đảm bảo tính toàn vẹn và chính xác của dữ liệu đó. Ràng buộc có thể được áp dụng cho toàn bảng hoặc chỉ đối với một hoặc một số cột cụ thể trong bảng. Một số loại ràng buộc phổ biến trong SQL như:

  • Primary Key Constraint
  • Unique Constraint
  • Foreign Key Constraint
  • Check Constraint

Cú pháp thêm ràng buộc not null trong SQL

Để thêm ràng buộc NOT NULL cho một cột trong SQL, bạn có thể sử dụng cú pháp sau khi tạo bảng hoặc khi thay đổi bảng bằng câu lệnh ALTER TABLE. Dưới đây là cú pháp:

Khi tạo bảng:

CREATE TABLE table_name (
column_name1 data_type NOT NULL,
column_name2 data_type NOT NULL,

);

Khi thay đổi bảng:

ALTER TABLE table_name
ALTER COLUMN column_name SET NOT NULL;

Unique index là gì?

Unique index là một loại chỉ mục (index) được tạo để đảm bảo rằng giá trị trong một cột hoặc một nhóm cột là duy nhất trong bảng. Unique index đảm bảo tính duy nhất của dữ liệu, giống như unique constraint, nhưng nó có thể cung cấp hiệu suất tìm kiếm nhanh hơn vì thông tin về duy nhất đã được sắp xếp trong chỉ mục.

Cú pháp xóa ràng buộc trong SQL (drop constraint trong SQL)

Cú pháp xóa ràng buộc trong SQL
Để xóa ràng buộc dữ liệu trong SQL, bạn sử dụng câu lệnh ALTER TABLE cùng với câu lệnh DROP CONSTRAINT

Để xóa ràng buộc dữ liệu trong SQL, bạn sử dụng câu lệnh ALTER TABLE cùng với câu lệnh DROP CONSTRAINT. Cú pháp:

ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

Ý nghĩa của is null trong SQL

IS NULL là một điều kiện được sử dụng để kiểm tra xem giá trị của một cột có là NULL hay không. NULL đại diện cho giá trị thiếu hoặc không tồn tại, và kiểm tra xem một cột có giá trị NULL hay không thường được sử dụng trong các truy vấn để lọc hoặc chọn các bản ghi có giá trị NULL trong một hoặc nhiều cột.

Cú pháp:

SELECT column1, column2, …
FROM table_name
WHERE column_name IS NULL;

Kết lại

Trên đây là toàn bộ chia sẻ của Comdy để giúp bạn hiểu rõ hơn về ràng buộc unique trong SQL server. Hi vọng những kiến thức trong bài viết này là hữu ích và có ý nghĩa đối với bạn. Xin cám ơn!

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *