Tóm lược. trong hướng dẫn này, bạn sẽ tìm hiểu về ràng buộc
[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0 trong MySQL và cách sử dụng ràng buộc[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0 để thực thi tính duy nhất của các giá trị trong một cột hoặc một nhóm cột trong bảngGiới thiệu về ràng buộc MySQL
[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0Đôi khi, bạn muốn đảm bảo các giá trị trong một cột hoặc một nhóm cột là duy nhất. Ví dụ: địa chỉ email của người dùng trong bảng
[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)3 hoặc số điện thoại của khách hàng trong bảng[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)4 phải là duy nhất. Để thực thi quy tắc này, bạn sử dụng ràng buộc[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0Ràng buộc
[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0 là một ràng buộc toàn vẹn nhằm đảm bảo các giá trị trong một cột hoặc nhóm cột là duy nhất. Ràng buộc[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0 có thể là ràng buộc cột hoặc ràng buộc bảngĐể xác định ràng buộc
[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0 cho một cột khi bạn tạo bảng, bạn sử dụng cú pháp nàyCREATE TABLE table_name( ..., column_name data_type UNIQUE, ... );
Code language: SQL (Structured Query Language) (sql)Trong cú pháp này, bạn bao gồm từ khóa
[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0 trong định nghĩa của cột mà bạn muốn thực thi quy tắc duy nhất. Nếu bạn chèn hoặc cập nhật một giá trị gây ra sự trùng lặp trongCREATE TABLE suppliers ( supplier_id INT AUTO_INCREMENT, name VARCHAR(255) NOT NULL, phone VARCHAR(15) NOT NULL UNIQUE, address VARCHAR(255) NOT NULL, PRIMARY KEY (supplier_id), CONSTRAINT uc_name_address UNIQUE (name , address) );
Code language: SQL (Structured Query Language) (sql)0, MySQL sẽ từ chối thay đổi và thông báo lỗiRàng buộc
[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0 này là một ràng buộc cột. Và bạn có thể sử dụng nó để thực thi quy tắc duy nhất cho một cộtĐể xác định ràng buộc
[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0 cho hai hoặc nhiều cột, bạn sử dụng cú pháp sauCREATE TABLE table_name( ... column_name1 column_definition, column_name2 column_definition, ..., UNIQUE(column_name1,column_name2) );
Code language: SQL (Structured Query Language) (sql)Trong cú pháp này, bạn thêm một danh sách các cột được phân tách bằng dấu phẩy trong dấu ngoặc đơn sau từ khóa
[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0. MySQL sử dụng tổ hợp các giá trị trong cả hai cộtCREATE TABLE suppliers ( supplier_id INT AUTO_INCREMENT, name VARCHAR(255) NOT NULL, phone VARCHAR(15) NOT NULL UNIQUE, address VARCHAR(255) NOT NULL, PRIMARY KEY (supplier_id), CONSTRAINT uc_name_address UNIQUE (name , address) );
Code language: SQL (Structured Query Language) (sql)4 vàCREATE TABLE suppliers ( supplier_id INT AUTO_INCREMENT, name VARCHAR(255) NOT NULL, phone VARCHAR(15) NOT NULL UNIQUE, address VARCHAR(255) NOT NULL, PRIMARY KEY (supplier_id), CONSTRAINT uc_name_address UNIQUE (name , address) );
Code language: SQL (Structured Query Language) (sql)5 để đánh giá tính duy nhấtNếu bạn xác định ràng buộc
[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0 mà không chỉ định tên, MySQL sẽ tự động tạo tên cho nó. Để xác định ràng buộc[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0 với tên, bạn sử dụng cú pháp này[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)Trong cú pháp này, bạn chỉ định tên của ràng buộc
[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0 sau từ khóaCREATE TABLE suppliers ( supplier_id INT AUTO_INCREMENT, name VARCHAR(255) NOT NULL, phone VARCHAR(15) NOT NULL UNIQUE, address VARCHAR(255) NOT NULL, PRIMARY KEY (supplier_id), CONSTRAINT uc_name_address UNIQUE (name , address) );
Code language: SQL (Structured Query Language) (sql)9Ví dụ về ràng buộc MySQL
[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0Đầu tiên, tạo một bảng mới có tên là
phone VARCHAR(12) NOT NULL UNIQUE
Code language: SQL (Structured Query Language) (sql)1 với hai ràng buộc[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0CREATE TABLE suppliers ( supplier_id INT AUTO_INCREMENT, name VARCHAR(255) NOT NULL, phone VARCHAR(15) NOT NULL UNIQUE, address VARCHAR(255) NOT NULL, PRIMARY KEY (supplier_id), CONSTRAINT uc_name_address UNIQUE (name , address) );
Code language: SQL (Structured Query Language) (sql)Trong ví dụ này, ràng buộc
[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0 đầu tiên được xác định cho cộtphone VARCHAR(12) NOT NULL UNIQUE
Code language: SQL (Structured Query Language) (sql)4phone VARCHAR(12) NOT NULL UNIQUE
Code language: SQL (Structured Query Language) (sql)Và ràng buộc thứ hai dành cho các cột
phone VARCHAR(12) NOT NULL UNIQUE
Code language: SQL (Structured Query Language) (sql)5 tên vàphone VARCHAR(12) NOT NULL UNIQUE
Code language: SQL (Structured Query Language) (sql)6CONSTRAINT uc_name_address UNIQUE (name , address)
Code language: SQL (Structured Query Language) (sql)Thứ hai, chèn một hàng vào bảng
phone VARCHAR(12) NOT NULL UNIQUE
Code language: SQL (Structured Query Language) (sql)1INSERT INTO suppliers(name, phone, address) VALUES( 'ABC Inc', '(408)-908-2476', '4000 North 1st Street');
Code language: SQL (Structured Query Language) (sql)Thứ ba, cố gắng chèn một nhà cung cấp khác nhưng có số điện thoại đã tồn tại trong bảng
phone VARCHAR(12) NOT NULL UNIQUE
Code language: SQL (Structured Query Language) (sql)1INSERT INTO suppliers(name, phone, address) VALUES( 'XYZ Corporation','(408)-908-2476','3000 North 1st Street');
Code language: SQL (Structured Query Language) (sql)MySQL đã đưa ra một lỗi
Error Code: 1062. Duplicate entry '(408)-908-2476' for key 'phone'
Code language: JavaScript (javascript)Thứ tư, thay đổi số điện thoại thành một số khác và thực hiện lại câu lệnh chèn
INSERT INTO suppliers(name, phone, address) VALUES( 'XYZ Corporation','(408)-908-3333','3000 North 1st Street');
Code language: SQL (Structured Query Language) (sql)Thứ năm, chèn một hàng vào bảng
phone VARCHAR(12) NOT NULL UNIQUE
Code language: SQL (Structured Query Language) (sql)1 với các giá trị đã tồn tại trong các cộtCONSTRAINT uc_name_address UNIQUE (name , address)
Code language: SQL (Structured Query Language) (sql)0 vàphone VARCHAR(12) NOT NULL UNIQUE
Code language: SQL (Structured Query Language) (sql)6CREATE TABLE table_name( ... column_name1 column_definition, column_name2 column_definition, ..., UNIQUE(column_name1,column_name2) );
Code language: SQL (Structured Query Language) (sql)0MySQL đưa ra lỗi vì ràng buộc
[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0CONSTRAINT uc_name_address UNIQUE (name , address)
Code language: SQL (Structured Query Language) (sql)3 đã bị vi phạmCREATE TABLE table_name( ... column_name1 column_definition, column_name2 column_definition, ..., UNIQUE(column_name1,column_name2) );
Code language: SQL (Structured Query Language) (sql)1Các ràng buộc và chỉ mục của MySQL
[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0Khi bạn xác định một ràng buộc duy nhất, MySQL sẽ tạo một chỉ mục
[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0 tương ứng và sử dụng chỉ mục này để thực thi quy tắcCâu lệnh
CONSTRAINT uc_name_address UNIQUE (name , address)
Code language: SQL (Structured Query Language) (sql)6 hiển thị định nghĩa của bảngphone VARCHAR(12) NOT NULL UNIQUE
Code language: SQL (Structured Query Language) (sql)1CREATE TABLE table_name( ... column_name1 column_definition, column_name2 column_definition, ..., UNIQUE(column_name1,column_name2) );
Code language: SQL (Structured Query Language) (sql)2Như bạn có thể thấy từ đầu ra, MySQL đã tạo hai chỉ mục
[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0 trên bảngphone VARCHAR(12) NOT NULL UNIQUE
Code language: SQL (Structured Query Language) (sql)1.phone VARCHAR(12) NOT NULL UNIQUE
Code language: SQL (Structured Query Language) (sql)4 vàCONSTRAINT uc_name_address UNIQUE (name , address)
Code language: SQL (Structured Query Language) (sql)3Câu lệnh
INSERT INTO suppliers(name, phone, address) VALUES( 'ABC Inc', '(408)-908-2476', '4000 North 1st Street');
Code language: SQL (Structured Query Language) (sql)2 sau đây hiển thị tất cả các chỉ mục được liên kết với bảngphone VARCHAR(12) NOT NULL UNIQUE
Code language: SQL (Structured Query Language) (sql)1CREATE TABLE table_name( ... column_name1 column_definition, column_name2 column_definition, ..., UNIQUE(column_name1,column_name2) );
Code language: SQL (Structured Query Language) (sql)3Bỏ một ràng buộc duy nhất
Để loại bỏ một ràng buộc
[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0, bạn có thể sử dụng câu lệnhINSERT INTO suppliers(name, phone, address) VALUES( 'ABC Inc', '(408)-908-2476', '4000 North 1st Street');
Code language: SQL (Structured Query Language) (sql)5 hoặcINSERT INTO suppliers(name, phone, address) VALUES( 'ABC Inc', '(408)-908-2476', '4000 North 1st Street');
Code language: SQL (Structured Query Language) (sql)6CREATE TABLE table_name( ... column_name1 column_definition, column_name2 column_definition, ..., UNIQUE(column_name1,column_name2) );
Code language: SQL (Structured Query Language) (sql)4CREATE TABLE table_name( ... column_name1 column_definition, column_name2 column_definition, ..., UNIQUE(column_name1,column_name2) );
Code language: SQL (Structured Query Language) (sql)5Ví dụ: câu lệnh sau loại bỏ ràng buộc
CONSTRAINT uc_name_address UNIQUE (name , address)
Code language: SQL (Structured Query Language) (sql)3 trên bảngphone VARCHAR(12) NOT NULL UNIQUE
Code language: SQL (Structured Query Language) (sql)1CREATE TABLE table_name( ... column_name1 column_definition, column_name2 column_definition, ..., UNIQUE(column_name1,column_name2) );
Code language: SQL (Structured Query Language) (sql)6Thực hiện lại câu lệnh
INSERT INTO suppliers(name, phone, address) VALUES( 'ABC Inc', '(408)-908-2476', '4000 North 1st Street');
Code language: SQL (Structured Query Language) (sql)9 để xác minh xem ràng buộcINSERT INTO suppliers(name, phone, address) VALUES( 'XYZ Corporation','(408)-908-2476','3000 North 1st Street');
Code language: SQL (Structured Query Language) (sql)0 đã được gỡ bỏ chưaCREATE TABLE table_name( ... column_name1 column_definition, column_name2 column_definition, ..., UNIQUE(column_name1,column_name2) );
Code language: SQL (Structured Query Language) (sql)3Thêm ràng buộc duy nhất mới
INSERT INTO suppliers(name, phone, address) VALUES( 'XYZ Corporation','(408)-908-2476','3000 North 1st Street');
Code language: SQL (Structured Query Language) (sql)1 sau đây thêm một ràng buộc duy nhất vào một cột của bảng hiện cóCREATE TABLE table_name( ... column_name1 column_definition, column_name2 column_definition, ..., UNIQUE(column_name1,column_name2) );
Code language: SQL (Structured Query Language) (sql)8Câu lệnh này thêm một ràng buộc
[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0CONSTRAINT uc_name_address UNIQUE (name , address)
Code language: SQL (Structured Query Language) (sql)3 trở lại bảngphone VARCHAR(12) NOT NULL UNIQUE
Code language: SQL (Structured Query Language) (sql)1CREATE TABLE table_name( ... column_name1 column_definition, column_name2 column_definition, ..., UNIQUE(column_name1,column_name2) );
Code language: SQL (Structured Query Language) (sql)9Lưu ý rằng MySQL sẽ không thêm ràng buộc duy nhất nếu dữ liệu hiện có trong các cột được chỉ định trong ràng buộc duy nhất không tuân thủ quy tắc duy nhất.
Trong hướng dẫn này, bạn đã học cách sử dụng ràng buộc MySQL
[CONSTRAINT constraint_name] UNIQUE(column_list)
Code language: SQL (Structured Query Language) (sql)0 để thực thi tính duy nhất của các giá trị trong một cột hoặc nhóm cột của bảng