MySQL INFORMATION_SCHEMA: Công Cụ Không Thể Thiếu Khi Audit Database
Khi làm việc với MySQL, chúng ta thường sử dụng các câu lệnh như:
SHOW DATABASES;
SHOW TABLES;
SHOW COLUMNS FROM users;
SHOW CREATE TABLE users;
SHOW INDEX FROM users;
Những câu lệnh này rất tiện khi kiểm tra nhanh một table.
Tuy nhiên, khi cần investigate một database lớn, tìm kiếm trên hàng trăm table, kiểm tra relationship, foreign key, index, charset/collation, thống kê số lượng record hoặc audit schema, INFORMATION_SCHEMA trở thành một công cụ cực kỳ hữu ích.
INFORMATION_SCHEMA là một metadata database được MySQL cung cấp, chứa thông tin mô tả về database, table, column, index, constraint, privilege, partition...
Nói đơn giản:
Data nằm trong table của application. Metadata về những table đó nằm trong
INFORMATION_SCHEMA.
INFORMATION_SCHEMA là gì?
INFORMATION_SCHEMA là một database đặc biệt của MySQL, cung cấp thông tin siêu dữ liệu (metadata) về cấu trúc của cơ sở dữ liệu
Ví dụ:
SELECT *
FROM INFORMATION_SCHEMA.TABLES;
hoặc:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS;
Các bảng trong INFORMATION_SCHEMA không phải là application tables thông thường.
Chúng cung cấp thông tin về cấu trúc database.
Một số bảng quan trọng:
| INFORMATION_SCHEMA | Dùng để |
|---|---|
SCHEMATA |
Database / schema |
TABLES |
Table và thông tin table |
COLUMNS |
Column / field |
STATISTICS |
Index |
KEY_COLUMN_USAGE |
Key và constraint |
TABLE_CONSTRAINTS |
Constraint |
REFERENTIAL_CONSTRAINTS |
Foreign key relationship |
VIEWS |
View |
ROUTINES |
Procedure / Function |
TRIGGERS |
Trigger |
PARTITIONS |
Partition |
Trong thực tế, 5 nhóm thường dùng nhất là:
SCHEMATA
TABLES
COLUMNS
STATISTICS
KEY_COLUMN_USAGE
Xem danh sách Database
Có thể sử dụng:
SHOW DATABASES;
Nhưng nếu muốn query metadata:
SELECT
SCHEMA_NAME
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME LIKE '%app%';
ORDER BY SCHEMA_NAME;
Yêu cầu đăng nhập
Vui lòng đăng nhập để truy cập nội dung này
Additional Resources
Course Guide
Comprehensive PDF guide with examples
GitHub Repository
Example code for all lessons
Discussion
Have a question about this lesson? Post it here and get answers from instructors and peers.
