Phương pháp 1: SHOW CREATE TABLE
Hiển thị câu lệnh CREATE TABLE đầy đủ bao gồm tất cả constraints:
SHOW CREATE TABLE ten_bang;
Phương pháp 2: information_schema.KEY_COLUMN_USAGE
Truy vấn chi tiết các khóa chính, khóa ngoại:
SELECT COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_COLUMN_NAME, REFERENCED_TABLE_NAME FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_NAME = 'ten_bang';
Ví dụ minh họa với bảng ConstraintDemo
Truy vấn information_schema
mysql> SELECT COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_COLUMN_NAME, REFERENCED_TABLE_NAME -> FROM information_schema.KEY_COLUMN_USAGE -> WHERE TABLE_NAME = 'ConstraintDemo';
+-------------+-----------------+------------------------+-----------------------+ | COLUMN_NAME | CONSTRAINT_NAME | REFERENCED_COLUMN_NAME | REFERENCED_TABLE_NAME | +-------------+-----------------+------------------------+-----------------------+ | Id | PRIMARY | NULL | NULL | | Id | Id | NULL | NULL | +-------------+-----------------+------------------------+-----------------------+ 2 rows in set, 2 warnings (0.04 sec)
Sử dụng SHOW CREATE TABLE
mysql> SHOW CREATE TABLE ConstraintDemo;
+----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | ConstraintDemo | CREATE TABLE `constraintdemo` (`Id` int(11) NOT NULL, `Name` varchar(100) NOT NULL, PRIMARY KEY (`Id`), UNIQUE KEY `Id` (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci | +----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
Các loại constraint phổ biến
| Loại | Mô tả | Ví dụ |
|---|---|---|
| PRIMARY KEY | Khóa chính, duy nhất, không NULL | PRIMARY KEY (id) |
| UNIQUE | Giá trị duy nhất, cho phép NULL | UNIQUE KEY (email) |
| FOREIGN KEY | Tham chiếu khóa chính bảng khác | FOREIGN KEY (user_id) REFERENCES users(id) |
| CHECK | Điều kiện giá trị (MySQL 8.0.16+) | CHECK (age >= 18) |
| NOT NULL | Không cho phép giá trị NULL | name VARCHAR(100) NOT NULL |
| DEFAULT | Giá trị mặc định | status VARCHAR(20) DEFAULT 'active' |
Lưu ý
SHOW CREATE TABLEcho cái nhìn tổng quan dễ đọcinformation_schemaphù hợp cho truy vấn lập trình, lọc loại constraint cụ thể- MySQL không hiển thị CHECK constraint cũ (trước 8.0.16) trong KEY_COLUMN_USAGE