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ấtTạ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