Để xem chi tiết các cột tham gia vào từng ràng buộc (PRIMARY KEY, FOREIGN KEY, UNIQUE...) trong một database, truy vấn bảng information_schema.key_column_usage.
Cú pháp
SELECT * FROM information_schema.key_column_usage WHERE constraint_schema = 'your_database_name';
Ví dụ với database "business"
mysql> SELECT * FROM information_schema.key_column_usage WHERE constraint_schema = 'business';
Kết quả trả về các cột quan trọng:
| CONSTRAINT_NAME | TABLE_NAME | COLUMN_NAME | ORDINAL_POSITION | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME |
|---|---|---|---|---|---|
| PRIMARY | primarytable | FKPK | 1 | NULL | NULL |
| ConstFK | tabledemo2 | id | 1 | NULL | NULL |
| constFKPK | foreigntable | Fk_pk | 1 | primarytable1 | fk_pk |
| FKConst | foreigntabledemo | FK | 1 | primarytabledemo | fk |
Giải thích các cột chính
- CONSTRAINT_NAME: Tên ràng buộc (PRIMARY, tên FK, tên UNIQUE...)
- TABLE_NAME: Bảng chứa cột này
- COLUMN_NAME: Tên cột tham gia ràng buộc
- ORDINAL_POSITION: Thứ tự cột trong khóa composite
- REFERENCED_TABLE_NAME: Bảng được tham chiếu (chỉ có với FOREIGN KEY)
- REFERENCED_COLUMN_NAME: Cột được tham chiếu (chỉ có với FOREIGN KEY)
Lọc theo loại ràng buộc
Kết hợp với table_constraints để lọc:
SELECT kcu.* FROM information_schema.key_column_usage kcu JOIN information_schema.table_constraints tc ON kcu.constraint_name = tc.constraint_name AND kcu.constraint_schema = tc.constraint_schema WHERE kcu.constraint_schema = 'business' AND tc.constraint_type = 'FOREIGN KEY';