Khái niệm ràng buộc (CONSTRAINT) trong MySQL
Trong MySQL, ràng buộc (constraint) là một điều kiện hoặc quy tắc được áp dụng cho dữ liệu trong một bảng để đảm bảo tính toàn vẹn, nhất quán và quản lý mối quan hệ giữa các bảng trong cơ sở dữ liệu quan hệ. Ràng buộc có thể áp dụng cho các cột hoặc nhóm cột trong bảng để kiểm soát và bảo vệ dữ liệu.
Các loại ràng buộc phổ biến trong MySQL:#
Ràng buộc PRIMARY KEY: Đảm bảo rằng mỗi giá trị trong cột (hoặc tập hợp các cột) là duy nhất và không thể có giá trị
NULL. Mỗi bảng chỉ nên có một ràng buộc PRIMARY KEY.Ràng buộc UNIQUE: Đảm bảo rằng mỗi giá trị trong cột (hoặc tập hợp các cột) là duy nhất. Có thể chứa giá trị
NULL(trừ khi kết hợp vớiNOT NULL).Ràng buộc NOT NULL: Đảm bảo rằng mỗi hàng trong bảng phải có giá trị cho cột không được phép để trống (
NULL).Ràng buộc FOREIGN KEY: Xác định mối quan hệ giữa các bảng trong cơ sở dữ liệu. Đảm bảo rằng giá trị trong một cột của bảng con phải xuất hiện trong cột khóa chính của bảng cha.
Ràng buộc CHECK: Đảm bảo rằng giá trị được thêm vào cột phải tuân theo một điều kiện nhất định (MySQL hỗ trợ cách tiếp cận thay thế cho ràng buộc CHECK bằng cách sử dụng trigger hoặc kiểm tra dữ liệu ở mức ứng dụng).
Cách định nghĩa ràng buộc trong MySQL:#
Khi tạo bảng (CREATE TABLE): Các ràng buộc có thể được định nghĩa ngay khi tạo bảng bằng cách sử dụng cụm từ
CONSTRAINT.Khi thêm ràng buộc vào bảng đã tồn tại (ALTER TABLE): Bạn có thể thay đổi cấu trúc của bảng bằng cách thêm, sửa đổi hoặc xóa ràng buộc bằng câu lệnh
ALTER TABLE.
Ví dụ về định nghĩa ràng buộc trong MySQL:#
- Ràng buộc PRIMARY KEY:
CREATE TABLE users ( user_id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE );
- Ràng buộc FOREIGN KEY:
CREATE TABLE orders ( order_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, order_date DATE, FOREIGN KEY (user_id) REFERENCES users(user_id) );
- Ràng buộc UNIQUE:
CREATE TABLE products ( product_id INT AUTO_INCREMENT PRIMARY KEY, product_name VARCHAR(50) NOT NULL, sku VARCHAR(20) UNIQUE );
- Ràng buộc NOT NULL:
CREATE TABLE employees ( employee_id INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(50) NOT NULL, last_name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE, hire_date DATE NOT NULL );
- Thêm ràng buộc sau khi tạo bảng (ALTER TABLE):
ALTER TABLE employees ADD CONSTRAINT chk_salary CHECK (salary > 0);
Trên đây là một số ví dụ và khái niệm cơ bản về ràng buộc trong MySQL. Chúng giúp đảm bảo tính toàn vẹn dữ liệu và quản lý mối quan hệ giữa các bảng trong cơ sở dữ liệu quan hệ.