Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách hiển thị tất cả ràng buộc (constraints) trên bảng MySQL


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ạiMô tảVí dụ
PRIMARY KEYKhóa chính, duy nhất, không NULLPRIMARY KEY (id)
UNIQUEGiá trị duy nhất, cho phép NULLUNIQUE KEY (email)
FOREIGN KEYTham chiếu khóa chính bảng khácFOREIGN KEY (user_id) REFERENCES users(id)
CHECKĐiều kiện giá trị (MySQL 8.0.16+)CHECK (age >= 18)
NOT NULLKhông cho phép giá trị NULLname VARCHAR(100) NOT NULL
DEFAULTGiá trị mặc địnhstatus VARCHAR(20) DEFAULT 'active'

Lưu ý

  • SHOW CREATE TABLE cho cái nhìn tổng quan dễ đọc
  • information_schema phù 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