Bản tóm tắt. trong hướng dẫn này, bạn sẽ học cách xác định ràng buộc
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2 cho cột, thêm ràng buộcCREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2 vào cột hiện có và xóa ràng buộcCREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2 khỏi cộtGiới thiệu về ràng buộc MySQL
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2Ràng buộc
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2 là một ràng buộc cột để đảm bảo các giá trị được lưu trữ trong một cột không phải làCREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)7Cú pháp xác định ràng buộc
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2 như saucolumn_name data_type NOT NULL;
Code language: SQL (Structured Query Language) (sql)Một cột chỉ có thể chứa một ràng buộc
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2 xác định quy tắc rằng cột không được chứa bất kỳ giá trịINSERT INTO tasks(title ,start_date, end_date) VALUES('Learn MySQL NOT NULL constraint', '2017-02-01','2017-02-02'), ('Check and update NOT NULL constraint to your database', '2017-02-01',NULL);
Code language: SQL (Structured Query Language) (sql)0 nào. Nói cách khác, nếu bạn cập nhật hoặc chènINSERT INTO tasks(title ,start_date, end_date) VALUES('Learn MySQL NOT NULL constraint', '2017-02-01','2017-02-02'), ('Check and update NOT NULL constraint to your database', '2017-02-01',NULL);
Code language: SQL (Structured Query Language) (sql)0 vào cộtCREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2, MySQL sẽ báo lỗiCâu lệnh
INSERT INTO tasks(title ,start_date, end_date) VALUES('Learn MySQL NOT NULL constraint', '2017-02-01','2017-02-02'), ('Check and update NOT NULL constraint to your database', '2017-02-01',NULL);
Code language: SQL (Structured Query Language) (sql)3 sau đây tạo bảngINSERT INTO tasks(title ,start_date, end_date) VALUES('Learn MySQL NOT NULL constraint', '2017-02-01','2017-02-02'), ('Check and update NOT NULL constraint to your database', '2017-02-01',NULL);
Code language: SQL (Structured Query Language) (sql)4CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)Trong bảng
INSERT INTO tasks(title ,start_date, end_date) VALUES('Learn MySQL NOT NULL constraint', '2017-02-01','2017-02-02'), ('Check and update NOT NULL constraint to your database', '2017-02-01',NULL);
Code language: SQL (Structured Query Language) (sql)4, chúng tôi xác định rõ ràng các cộtINSERT INTO tasks(title ,start_date, end_date) VALUES('Learn MySQL NOT NULL constraint', '2017-02-01','2017-02-02'), ('Check and update NOT NULL constraint to your database', '2017-02-01',NULL);
Code language: SQL (Structured Query Language) (sql)6 vàINSERT INTO tasks(title ,start_date, end_date) VALUES('Learn MySQL NOT NULL constraint', '2017-02-01','2017-02-02'), ('Check and update NOT NULL constraint to your database', '2017-02-01',NULL);
Code language: SQL (Structured Query Language) (sql)7 với ràng buộcCREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2. CộtINSERT INTO tasks(title ,start_date, end_date) VALUES('Learn MySQL NOT NULL constraint', '2017-02-01','2017-02-02'), ('Check and update NOT NULL constraint to your database', '2017-02-01',NULL);
Code language: SQL (Structured Query Language) (sql)9 có ràng buộcSELECT * FROM tasks WHERE end_date IS NULL;
Code language: SQL (Structured Query Language) (sql)0, do đó, nó ngầm định bao gồm ràng buộcCREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2Cột
SELECT * FROM tasks WHERE end_date IS NULL;
Code language: SQL (Structured Query Language) (sql)2 có thể có giá trịINSERT INTO tasks(title ,start_date, end_date) VALUES('Learn MySQL NOT NULL constraint', '2017-02-01','2017-02-02'), ('Check and update NOT NULL constraint to your database', '2017-02-01',NULL);
Code language: SQL (Structured Query Language) (sql)0, giả sử rằng khi bạn tạo một nhiệm vụ mới, bạn có thể không biết khi nào nhiệm vụ có thể hoàn thànhĐó là một cách thực hành tốt để có ràng buộc
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2 trong mỗi cột của bảng trừ khi bạn có lý do chính đáng để không làm như vậyNói chung, giá trị
INSERT INTO tasks(title ,start_date, end_date) VALUES('Learn MySQL NOT NULL constraint', '2017-02-01','2017-02-02'), ('Check and update NOT NULL constraint to your database', '2017-02-01',NULL);
Code language: SQL (Structured Query Language) (sql)0 làm cho các truy vấn của bạn phức tạp hơn vì bạn phải sử dụng các hàm nhưSELECT * FROM tasks WHERE end_date IS NULL;
Code language: SQL (Structured Query Language) (sql)6,SELECT * FROM tasks WHERE end_date IS NULL;
Code language: SQL (Structured Query Language) (sql)7 vàSELECT * FROM tasks WHERE end_date IS NULL;
Code language: SQL (Structured Query Language) (sql)8 để xử lýINSERT INTO tasks(title ,start_date, end_date) VALUES('Learn MySQL NOT NULL constraint', '2017-02-01','2017-02-02'), ('Check and update NOT NULL constraint to your database', '2017-02-01',NULL);
Code language: SQL (Structured Query Language) (sql)0Thêm ràng buộc
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2 vào cột hiện cóThông thường, bạn thêm các ràng buộc
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2 vào các cột khi tạo bảng. Đôi khi, bạn muốn thêm ràng buộcCREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2 vào cột có thể NULL của bảng hiện có. Trong trường hợp này, bạn sử dụng các bước sau- Kiểm tra các giá trị hiện tại của cột nếu có bất kỳ
INSERT INTO tasks(title ,start_date, end_date) VALUES('Learn MySQL NOT NULL constraint', '2017-02-01','2017-02-02'), ('Check and update NOT NULL constraint to your database', '2017-02-01',NULL);
Code language: SQL (Structured Query Language) (sql)0 - Cập nhật
INSERT INTO tasks(title ,start_date, end_date) VALUES('Learn MySQL NOT NULL constraint', '2017-02-01','2017-02-02'), ('Check and update NOT NULL constraint to your database', '2017-02-01',NULL);
Code language: SQL (Structured Query Language) (sql)0 thành non-INSERT INTO tasks(title ,start_date, end_date) VALUES('Learn MySQL NOT NULL constraint', '2017-02-01','2017-02-02'), ('Check and update NOT NULL constraint to your database', '2017-02-01',NULL);
Code language: SQL (Structured Query Language) (sql)0 nếu tồn tạiUPDATE tasks SET end_date = start_date + 7 WHERE end_date IS NULL;
Code language: SQL (Structured Query Language) (sql)6 - Sửa đổi cột với ràng buộc
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2
Xem xét ví dụ sau
Câu lệnh sau đây chèn một số hàng vào bảng
INSERT INTO tasks(title ,start_date, end_date) VALUES('Learn MySQL NOT NULL constraint', '2017-02-01','2017-02-02'), ('Check and update NOT NULL constraint to your database', '2017-02-01',NULL);
Code language: SQL (Structured Query Language) (sql)4 để minh họaINSERT INTO tasks(title ,start_date, end_date) VALUES('Learn MySQL NOT NULL constraint', '2017-02-01','2017-02-02'), ('Check and update NOT NULL constraint to your database', '2017-02-01',NULL);
Code language: SQL (Structured Query Language) (sql)Giả sử bạn muốn buộc người dùng đưa ra ngày kết thúc ước tính khi tạo tác vụ mới. Để thực hiện quy tắc này, bạn thêm ràng buộc
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2 vào cộtSELECT * FROM tasks WHERE end_date IS NULL;
Code language: SQL (Structured Query Language) (sql)2 của bảngINSERT INTO tasks(title ,start_date, end_date) VALUES('Learn MySQL NOT NULL constraint', '2017-02-01','2017-02-02'), ('Check and update NOT NULL constraint to your database', '2017-02-01',NULL);
Code language: SQL (Structured Query Language) (sql)4Trước tiên, hãy sử dụng toán tử
SELECT * FROM tasks;
Code language: SQL (Structured Query Language) (sql)2 để tìm các hàng cóUPDATE tasks SET end_date = start_date + 7 WHERE end_date IS NULL;
Code language: SQL (Structured Query Language) (sql)6 trong cộtSELECT * FROM tasks WHERE end_date IS NULL;
Code language: SQL (Structured Query Language) (sql)2SELECT * FROM tasks WHERE end_date IS NULL;
Code language: SQL (Structured Query Language) (sql)Truy vấn đã trả về một hàng có
INSERT INTO tasks(title ,start_date, end_date) VALUES('Learn MySQL NOT NULL constraint', '2017-02-01','2017-02-02'), ('Check and update NOT NULL constraint to your database', '2017-02-01',NULL);
Code language: SQL (Structured Query Language) (sql)0 trong cộtSELECT * FROM tasks WHERE end_date IS NULL;
Code language: SQL (Structured Query Language) (sql)2Thứ hai, cập nhật các giá trị
INSERT INTO tasks(title ,start_date, end_date) VALUES('Learn MySQL NOT NULL constraint', '2017-02-01','2017-02-02'), ('Check and update NOT NULL constraint to your database', '2017-02-01',NULL);
Code language: SQL (Structured Query Language) (sql)0 thành các giá trị khác null. Trong trường hợp này, bạn có thể tạo ra một quy tắc rằng nếuSELECT * FROM tasks WHERE end_date IS NULL;
Code language: SQL (Structured Query Language) (sql)2 làINSERT INTO tasks(title ,start_date, end_date) VALUES('Learn MySQL NOT NULL constraint', '2017-02-01','2017-02-02'), ('Check and update NOT NULL constraint to your database', '2017-02-01',NULL);
Code language: SQL (Structured Query Language) (sql)0, thì ngày kết thúc là một tuần sau ngày bắt đầuUPDATE tasks SET end_date = start_date + 7 WHERE end_date IS NULL;
Code language: SQL (Structured Query Language) (sql)Truy vấn này xác minh bản cập nhật
SELECT * FROM tasks;
Code language: SQL (Structured Query Language) (sql)Thứ ba, thêm ràng buộc
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2 vào cộtSELECT * FROM tasks WHERE end_date IS NULL;
Code language: SQL (Structured Query Language) (sql)2 bằng cách sử dụng câu lệnhALTER TABLE table_name CHANGE old_column_name new_column_name column_definition;
Code language: SQL (Structured Query Language) (sql)2 sau đây.ALTER TABLE table_name CHANGE old_column_name new_column_name column_definition;
Code language: SQL (Structured Query Language) (sql)Trong trường hợp này, tên của cột cũ và cột mới giống nhau ngoại trừ cột phải có ràng buộc
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2ALTER TABLE tasks CHANGE end_date end_date DATE NOT NULL;
Code language: SQL (Structured Query Language) (sql)Hãy xác minh sự thay đổi bằng cách sử dụng câu lệnh
ALTER TABLE table_name CHANGE old_column_name new_column_name column_definition;
Code language: SQL (Structured Query Language) (sql)4DESCRIBE tasks;
Code language: SQL (Structured Query Language) (sql)Như bạn thấy, ràng buộc
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2 đã được thêm vào cộtSELECT * FROM tasks WHERE end_date IS NULL;
Code language: SQL (Structured Query Language) (sql)2 thành công.Thả một ràng buộc
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2Để loại bỏ ràng buộc
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2 cho một cột, bạn sử dụng câu lệnhALTER TABLE table_name CHANGE old_column_name new_column_name column_definition;
Code language: SQL (Structured Query Language) (sql)9ALTER TABLE table_name MODIFY column_name column_definition;
Code language: SQL (Structured Query Language) (sql)Lưu ý rằng định nghĩa cột (column_definition) phải trình bày lại định nghĩa cột ban đầu mà không có ràng buộc
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2Ví dụ: câu lệnh sau loại bỏ ràng buộc
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2 khỏi cộtSELECT * FROM tasks WHERE end_date IS NULL;
Code language: SQL (Structured Query Language) (sql)2 trong bảngINSERT INTO tasks(title ,start_date, end_date) VALUES('Learn MySQL NOT NULL constraint', '2017-02-01','2017-02-02'), ('Check and update NOT NULL constraint to your database', '2017-02-01',NULL);
Code language: SQL (Structured Query Language) (sql)4CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)0Để đảm bảo rằng câu lệnh thực sự đã loại bỏ ràng buộc
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2, bạn có thể sử dụng lệnhALTER TABLE tasks CHANGE end_date end_date DATE NOT NULL;
Code language: SQL (Structured Query Language) (sql)5 để xem toàn bộ định nghĩa cộtLưu ý rằng câu lệnh
ALTER TABLE table_name CHANGE old_column_name new_column_name column_definition;
Code language: SQL (Structured Query Language) (sql)4 cũng thực hiện thủ thuậtCREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)1Trong hướng dẫn này, bạn đã học cách xác định ràng buộc
CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2 cho cột, thêm ràng buộcCREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2 vào cột và xóa ràng buộcCREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, start_date DATE NOT NULL, end_date DATE );
Code language: SQL (Structured Query Language) (sql)2 khỏi cột