Hướng dẫn này chỉ cho bạn cách sử dụng ràng buộc UNIQUE của SQL Server để đảm bảo tính duy nhất của dữ liệu chứa trong một cột hoặc một nhóm cột.

Bạn đang xem : máy chủ sql thêm ràng buộc duy nhất

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

Giới thiệu về SQL Server Ràng buộc UNIQUE

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 một bảng.

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

 

TẠO

SCHEMA

hr; ĐI

TẠO

BẢNG

hr.persons ( person_id

INT

IDENTITY

PRIMARY

KEY

, first_name

VARCHAR

(

255

)

KHÔNG

KHÔNG ĐẦY ĐỦ

, last_name

VARCHAR

(

255

)

KHÔNG

KHÔNG ĐẦY ĐỦ

, email

VARCHAR

(

255

)

DUY NHẤT

);

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

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

 

TẠO

BẢNG

hr.persons ( person_id

INT

IDENTITY

PRIMARY

KEY

, first_name

VARCHAR

(

255

)

KHÔNG

KHÔNG ĐẦY ĐỦ

, last_name

VARCHAR

(

255

)

KHÔNG

KHÔNG ĐẦY ĐỦ

, email

VARCHAR

(

255

),

DUY NHẤT

(email) );

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

Hậu trường , SQL Server tự động tạo chỉ mục 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 ràng buộc UNIQUE . Do đó, nếu bạn cố gắng chèn một hàng trùng lặp, SQL Server sẽ từ chối thay đổ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ẽ chèn một hàng mới vào bảng hr.persons :

 

CHÈN

VÀO

hr.persons (first_name, last_name, email)

GIÁ TRỊ

(

'John'

,

'Doe' ,

'j.doe@bike.stores'

);

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

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 trùng lặp:

 

CHÈN

VÀO

hr.persons (first_name, last_name, email)

GIÁ TRỊ

(

'Jane'

,

'Doe' ,

'j.doe@bike.stores'

);

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

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

 

Vi phạm ràng buộc UNIQUE KEY 'UQ__persons__AB6E616417240E4E'. Không thể chèn khóa trùng lặp vào đối tượng 'hr.persons'. Giá trị khóa trùng lặp là (j.doe@bike.stores).

Ngôn ngữ mã:

Phiên Shell

(

shell

)

Nếu bạn không chỉ định tên riêng cho ràng buộc UNIQUE , SQL Server sẽ tự động tạo tên cho ràng buộc đó. 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 ràng buộc UNIQUE , bạn sử dụng CONSTRAINT từ khóa như sau:

 

TẠO

BẢNG

hr.persons ( person_id

INT

IDENTITY

PRIMARY

KEY

, first_name

VARCHAR

(

255

)

KHÔNG

KHÔNG ĐẦY ĐỦ

, last_name

VARCHAR

(

255

)

KHÔNG

KHÔNG ĐẦY ĐỦ

, email

VARCHAR

(

255

),

CONSTRAINT

unique_email

DUY NHẤT

(email) );

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

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

  • Việc phân loại thông báo lỗi dễ dàng hơn.
  • Bạn có thể tham khảo 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

Mặc dù cả hai Ràng buộc UNIQUE 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ì PRIMARY KEY < / code> ràng buộc 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 các ràng buộc PRIMARY KEY , < code> Ràng buộc UNIQUE cho phép NULL < / mã>. 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 NULL trên mỗi cột.

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

 

CHÈN

VÀO

hr.persons (first_name, last_name)

GIÁ TRỊ

(

'John'

,

'Smith' );

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

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

 

CHÈN

VÀO

hr.persons (first_name, last_name)

GIÁ TRỊ

(

'Lily'

,

'Bush' );

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

Đây là đầu ra:

 

Vi phạm ràng buộc UNIQUE KEY 'UQ__persons__AB6E616417240E4E'. Không thể

chèn

trùng lặp

key

trong

đối tượng

'hr.persons'

. Giá trị

trùng lặp

khóa

(& lt;

NULL

& gt;).

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

Ràng buộc UNIQUE cho một nhóm cột

Để xác định một UNIQUERàng buộc 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:

 

TẠO

BẢNG

table_name ( key_column data_type PRIMARY

KEY

, cột1 data_type, column2 data_type, cột 3 data_type, ...,

DUY NHẤT

(column1, column2) );

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

Ví dụ sau tạo ràng buộc DUY NHẤT bao gồm hai cột person_id skill_id :

 

TẠO

BẢNG

hr.woman_skills (

id

INT

IDENTITY

PRIMARY

TỪ KHÓA

, person_id

int

, skill_id

int

, updated_at DATETIME,

DUY NHẤT

(person_id, skill_id) );

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

Thêm Ràng buộc UNIQUE đối với các cột hiện có

Khi bạn thêm ràng buộc 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ó 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 một Ràng buộc DUY NHẤT đối với bảng:

 

ALTER

BẢNG

table_name

THÊM

CONSTRAINT

binding_name

DUY NHẤT

(column1, column2, ...);

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

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

 

TẠO

BẢNG

hr.persons ( person_id

INT

IDENTITY

PRIMARY

KEY

, first_name

VARCHAR

(

255

)

KHÔNG

KHÔNG ĐẦY ĐỦ

, last_name

VARCHAR

(

255

)

KHÔNG

KHÔNG ĐẦY ĐỦ

, email

VARCHAR

(

255

), phone

VARCHAR

(

20

), );

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

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

 

ALTER

BẢNG

hr.persons

THÊM

CONSTRAINT

unique_email

DUY NHẤT

(email);

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

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

 

ALTER

BẢNG

hr.persons

THÊM

CONSTRAINT

unique_phone

DUY NHẤT

(điện thoại);

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

Xóa Ràng buộc UNIQUE

Để xác định một UNIQUE, bạn sử dụng câu lệnh ALTER TABLE DROP CONSTRAINT như sau:

 

ALTER

BẢNG

table_name

DROP

CONSTRAINT

binding_name;

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

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

 

ALTER

BẢNG

hr.persons

DROP

CONSTRAINT

unique_phone;

Ngôn ngữ mã:

SQL (Ngôn ngữ truy vấn có cấu trúc)

(

sql

)

Sửa đổi Ràng buộc UNIQUE

SQL Server không có bất kỳ câu lệnh trực tiếp nào để sửa đổi ràng buộc UNIQUE , do đó, bạn cần phải loại bỏ 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 của 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.


Xem thêm những thông tin liên quan đến chủ đề máy chủ sql thêm ràng buộc duy nhất

Make an Existing Column the Primary Key

  • Tác giả: PG Casts by Hashrocket
  • Ngày đăng: 2019-08-22
  • Đánh giá: 4 ⭐ ( 6783 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: How to make an existing column the primary key to a table in Postgres. This episode is brought to you by Hashrocket, expert consultants in PostgreSQL – learn more at https://hashrocket.com and www.pgcasts.com

    Transcript:

    In this example, we’re going to be dealing with a dummy database that has a table called users, with the columns name, and employee number.

    We can select from this table and see that we already have data:

    “`sql
    select * from users;
    “`

    We can also inspect the table to see the current columns and constraints.

    “`
    \\d users
    “`

    As you can see we currently have one constraint, which is asserting that the employee number is unique.

    To make an existing column the primary key, we can use the “alter table” command, passing the table we’re dealing with, which for us is “users”. We then specify our action, which is “add primary key”, and we pass the name of the column we are making our new primary key.

    “`sql
    alter table users add primary key (employee_number);
    “`

    We can inspect our table again and see that in addition to the uniqueness constraint we already had, the employee number now has a not null constraint, and an index.

    It is important to note that we can only make an existing column a primary key if that column has no null values and no duplicates. If the column fails either of those checks, the alter table command will fail.

    Thanks for watching!

Cách tạo, thêm và xóa các ràng buộc duy nhất trong SQL Server

  • Tác giả: bizflycloud.vn
  • Đánh giá: 3 ⭐ ( 2971 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hãy cùng Bizfly Cloud tìm hiểu các thủ thuật tạo và thêm và xóa các ràng buộc trong SQL Server.

Thiết lập ràng buộc trong sql server (Bài 2)

  • Tác giả: giasutinhoc.vn
  • Đánh giá: 5 ⭐ ( 5788 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Cách Thêm Ràng buộc DUY NHẤT vào Mối quan hệ Một-Một giúp …

  • Tác giả: helpex.vn
  • Đánh giá: 3 ⭐ ( 7089 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Rất nhiều người sử dụng các ràng buộc SQL chủ yếu để thực thi tính toàn vẹn của dữ liệu và đó đã là một điều rất tốt. Ví dụ, một ràng buộc UNIQUE đảm bảo rằng có nhiều nhất một trường hợp…

Ràng buộc DUY NHẤT trong SQL Server là gì?

  • Tác giả: www.greelane.com
  • Đánh giá: 3 ⭐ ( 6817 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Ràng buộc UNIQUE cho phép quản trị viên SQL Server chỉ định một cột không được chứa các giá trị trùng lặp, tương tự như các ràng buộc Khóa chính.

Ràng buộc UNIQUE trong SQL Server

  • Tác giả: freetuts.net
  • Đánh giá: 5 ⭐ ( 1056 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Tìm hiểu Ràng buộc UNIQUE trong SQL Server, cách tạo ra ràng buộc giá trị duy nhất cho SQL Server bằng lệnh UNIQUE, quản lý thêm xóa và sửa UNIQUE trong SQL.

Ràng buộc duy nhất trong SQL Server

  • Tác giả: code24h.com
  • Đánh giá: 4 ⭐ ( 9325 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Bài viết hướng dẫn cách tạo, thêm và xóa các ràng buộc duy nhất trong SQL Server.
    Ràng buộc duy nhất trong SQL Server là gì?
    Ràng buộc duy nhất là một trường hoặc kết hợp các trường dữ liệu, xác định một cách duy nhất một bản ghi. Một số trường có thể chứa …

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  Trả về True hoặc False trong Python - python đúng hay sai

By ads_php