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

Tìm cột tồn tại trong tất cả bảng MySQL (INFORMATION_SCHEMA.COLUMNS)

Vấn đề: Xác định các bảng chứa cột tên cụ thể (ví dụ: 'EmployeeAge')

Cần quét toàn bộ database hiện tại để tìm bảng nào có cột EmployeeAge.

Giải pháp: Truy vấn INFORMATION_SCHEMA.COLUMNS

Bảng hệ thống lưu metadata cột của tất cả bảng trong tất cả schema.

1. Truy vấn

SELECT table_name, column_name 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_schema = SCHEMA() 
  AND column_name = 'EmployeeAge';
  • table_schema = SCHEMA() – Lọc database hiện tại (DATABASE() hoặc SCHEMA()).
  • column_name = 'EmployeeAge' – Tên cột cần tìm (không phân biệt hoa/thường mặc định).

2. Kết quả mẫu

+---------------+-------------+
| TABLE_NAME    | COLUMN_NAME |
+---------------+-------------+
| demotable1153 | EmployeeAge |
| demotable1297 | EmployeeAge |
| demotable1303 | EmployeeAge |
| demotable1328 | EmployeeAge |
| demotable1378 | EmployeeAge |
| demotable1530 | EmployeeAge |
| demotable1559 | EmployeeAge |
| demotable1586 | EmployeeAge |
| demotable1798 | EmployeeAge |
| demotable1901 | EmployeeAge |
| demotable511  | EmployeeAge |
| demotable912  | EmployeeAge |
+---------------+-------------+

3. Xác minh (DESC một bảng)

DESC demotable1153;
+--------------+-------------+------+-----+---------+----------------+
| Field        | Type        | Null | Key | Default | Extra          |
+--------------+-------------+------+-----+---------+----------------+
| EmployeeId   | int(11)     | NO   | PRI | NULL    | auto_increment |
| EmployeeName | varchar(40) | YES  | MUL | NULL    |                |
| EmployeeAge  | int(11)     | YES  |     | NULL    |                |
+--------------+-------------+------+-----+---------+----------------+

Mở rộng: Tìm cột theo pattern (LIKE/REGEXP)

-- Tìm cột chứa 'email'
SELECT table_name, column_name 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_schema = SCHEMA() 
  AND column_name LIKE '%email%';

-- Tìm cột kiểu DATE
SELECT table_name, column_name 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE table_schema = SCHEMA() 
  AND data_type IN ('date', 'datetime', 'timestamp');

Ứng dụng

  • Audit schema – kiểm tra naming convention.
  • Tự động sinh code (ORM, DTO) dựa trên schema.
  • Tìm cột nhạy cảm (password, ssn, credit_card) để mã hóa.
  • Phân tích tác động khi đổi tên/kiểu cột.