Chỉ mục ràng buộc DUY NHẤT của MySQL

Hướng dẫn MySQL này giải thích cách tạo, thêm và loại bỏ các ràng buộc duy nhất trong MySQL với cú pháp và ví dụ

Một ràng buộc duy nhất trong MySQL là gì?

Ràng buộc duy nhất là một trường hoặc tổ hợp các trường xác định duy nhất một bản ghi. Một số trường có thể chứa giá trị null miễn là sự kết hợp của các giá trị là duy nhất

Sự khác biệt giữa ràng buộc duy nhất và khóa chính là gì?

Primary KeyUnique Ràng buộcKhông có trường nào là một phần của khóa chính có thể chứa giá trị null. Một số trường là một phần của ràng buộc duy nhất có thể chứa các giá trị null miễn là sự kết hợp của các giá trị là duy nhất

Tạo Ràng buộc duy nhất - Sử dụng câu lệnh CREATE TABLE

Cú pháp để tạo một ràng buộc duy nhất bằng cách sử dụng câu lệnh CREATE TABLE trong MySQL là

CREATE TABLE table_name
[
  column1 datatype [ NULL | NOT NULL ],
  column2 datatype [ NULL | NOT NULL ],
  ...

  CONSTRAINT constraint_name UNIQUE [uc_col1, uc_col2, .. uc_col_n]
];
table_nameTên của bảng mà bạn muốn tạo. cột1, cột2Các cột muốn tạo trong bảng. constraint_nameTên của ràng buộc duy nhất. uc_col1, uc_col2,. uc_col_nCác cột tạo nên ràng buộc duy nhất

Ví dụ

Hãy xem một ví dụ về cách tạo một ràng buộc duy nhất trong MySQL bằng cách sử dụng câu lệnh CREATE TABLE

CREATE TABLE contacts
[ contact_id INT[11] PRIMARY KEY AUTO_INCREMENT,
reference_number INT[11] NOT NULL,
last_name VARCHAR[30] NOT NULL,
first_name VARCHAR[25],
birthday DATE,
CONSTRAINT reference_unique UNIQUE [reference_number]
];

Trong ví dụ này, chúng tôi đã tạo một ràng buộc duy nhất trên bảng liên hệ hiện có được gọi là tham chiếu_unique. Nó bao gồm trường được gọi là tham chiếu_số

Lập chỉ mục là một quá trình tìm một danh sách không có thứ tự thành một danh sách có thứ tự cho phép chúng ta truy xuất bản ghi nhanh hơn. Nó tạo một mục nhập cho mỗi giá trị xuất hiện trong các cột chỉ mục. Nó giúp tối đa hóa hiệu quả của truy vấn khi tìm kiếm trên các bảng trong MySQL. Không lập chỉ mục, chúng ta cần quét toàn bộ bảng để tìm thông tin liên quan. Hoạt động của việc lập chỉ mục MySQL tương tự như chỉ mục sách

Nói chung, chúng tôi sử dụng ràng buộc khóa chính để thực thi giá trị duy nhất của một hoặc nhiều cột. Tuy nhiên, chúng ta chỉ có thể sử dụng một khóa chính cho mỗi bảng. Vì vậy, nếu chúng ta muốn tạo nhiều nhóm cột với các giá trị duy nhất, ràng buộc khóa chính sẽ không được sử dụng

MySQL cho phép một ràng buộc khác được gọi là CHỈ SỐ ĐỘC ĐÁO để thực thi tính duy nhất của các giá trị trong một hoặc nhiều cột. Chúng ta có thể tạo nhiều hơn một chỉ mục ĐỘC ĐÁO trong một bảng, điều này là không thể với ràng buộc khóa chính

cú pháp

Sau đây là một cú pháp chung được sử dụng để tạo một chỉ mục duy nhất trong bảng MySQL

MySQL cho phép một cách tiếp cận khác để thực thi giá trị duy nhất trong một hoặc nhiều cột bằng cách sử dụng câu lệnh UNIQUE Key. Chúng ta có thể đọc thêm thông tin về UNIQUE KEY tại đây

Nếu chúng ta sử dụng một ràng buộc ĐỘC ĐÁO trong bảng, MySQL sẽ tự động tạo một chỉ mục ĐỘC ĐÁO đằng sau hậu trường. Câu lệnh sau đây giải thích cách tạo một ràng buộc duy nhất khi chúng ta tạo một bảng

GHI CHÚ. Nên sử dụng tên ràng buộc trong khi tạo bảng. Nếu chúng ta bỏ qua tên ràng buộc, MySQL sẽ tự động tạo tên cho cột này

Chỉ mục ĐỘC ĐÁO và NULL

Các giá trị NULL trong MySQL xem xét các giá trị riêng biệt tương tự như các cơ sở dữ liệu khác. Do đó, chúng ta có thể lưu trữ nhiều giá trị NULL trong cột chỉ mục ĐỘC ĐÁO. Tính năng này của MySQL đôi khi được báo cáo là lỗi, nhưng nó không phải là lỗi

Ví dụ về chỉ mục DUY NHẤT của MySQL

Hãy để chúng tôi hiểu nó với sự giúp đỡ của một ví dụ. Giả sử chúng tôi muốn quản lý chi tiết nhân viên trong một ứng dụng cơ sở dữ liệu nơi chúng tôi cần các cột email duy nhất. Thực hiện câu lệnh sau để tạo bảng "Employee_Detail" với ràng buộc ĐỘC ĐÁO

Nếu chúng ta thực hiện câu lệnh dưới đây, chúng ta có thể thấy rằng MySQL đã tạo một chỉ mục ĐỘC ĐÁO cho cột Email của bảng Employee_Detail

Trong màn hình bên dưới, chúng ta có thể thấy rằng cột Email được tạo dưới dạng một chỉ mục duy nhất

Tiếp theo, chúng ta sẽ chèn các bản ghi vào bảng bằng cách sử dụng các câu lệnh sau

Câu lệnh trên được thực hiện thành công vì tất cả các cột là duy nhất. Nếu chúng tôi chèn một bản ghi có email là [email được bảo vệ], chúng tôi sẽ nhận được thông báo lỗi trùng lặp

Đầu ra sau đây giải thích rõ ràng hơn tất cả các bước trên

Giả sử chúng ta muốn Name và Phone của bảng Employee_Detail cũng là duy nhất. Trong trường hợp này, chúng tôi sẽ sử dụng câu lệnh dưới đây để tạo chỉ mục ĐỘC ĐÁO cho các cột đó

Nếu chúng ta thực hiện lại câu lệnh SHOW INDEX, chúng ta có thể thấy rằng MySQL đã tạo một chỉ mục DUY NHẤT index_name_phone cho các cột tên và điện thoại

Thêm bản ghi này vào bảng sẽ tạo ra lỗi. Đó là do sự kết hợp giữa tên và điện thoại đã tồn tại

Ràng buộc duy nhất có tạo chỉ mục MySQL không?

Nếu chúng ta sử dụng ràng buộc ĐỘC ĐÁO trong bảng, MySQL sẽ tự động tạo một chỉ mục ĐỘC ĐÁO phía sau hậu trường . Câu lệnh sau đây giải thích cách tạo một ràng buộc duy nhất khi chúng ta tạo một bảng.

Các ràng buộc duy nhất có được lập chỉ mục không?

Có, chắc chắn rồi. Một ràng buộc duy nhất tạo ra một chỉ mục duy nhất .

Khóa duy nhất cũng là một chỉ mục?

Khóa duy nhất là chỉ mục . Nếu giá trị của bạn được đảm bảo là duy nhất, thì đây là sự lựa chọn tốt nhất. Khóa duy nhất. Khóa duy nhất thực thi tính duy nhất của cột mà chúng được xác định. Khóa duy nhất tạo chỉ mục không được nhóm trên cột.

Cột duy nhất có được lập chỉ mục trong MySQL không?

Trong MySQL, CHỈ SỐ ĐỘC ĐÁO được sử dụng để xác định nhiều cột không trùng lặp cùng một lúc . Mặc dù ràng buộc KHÓA CHÍNH cũng đảm bảo các giá trị không trùng lặp trong một cột, nhưng chỉ có thể xác định một KHÓA CHÍNH cho mỗi bảng. Vì vậy, đối với các tình huống có nhiều cột được phân biệt, CHỈ SỐ ĐỘC ĐÁO được sử dụng.

Chủ Đề