Site logo

MySQL INFORMATION_SCHEMA: Công Cụ Không Thể Thiếu Khi Audit Database

5:00 read

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.