Query INFORMATION_SCHEMA สำหรับ Overview Database และ Tables
ใช้ INFORMATION_SCHEMA.SCHEMATA และ INFORMATION_SCHEMA.TABLES รวมกันด้วย LEFT JOIN
Query หลัก
SELECT
my_schema.SCHEMA_NAME AS `Database`,
GROUP_CONCAT(tbl.TABLE_NAME ORDER BY tbl.TABLE_NAME) AS `Tables`
FROM INFORMATION_SCHEMA.SCHEMATA my_schema
LEFT JOIN INFORMATION_SCHEMA.TABLES tbl
ON my_schema.SCHEMA_NAME = tbl.TABLE_SCHEMA
GROUP BY my_schema.SCHEMA_NAME
ORDER BY my_schema.SCHEMA_NAME;
ผลลัพธ์ตัวอย่าง (ย่อ)
| Database | Tables |
|---|---|
| business | addconstraintdemo, autoincrementtozero, booleandemo, college, ... |
| information_schema | COLUMNS, TABLES, STATISTICS, ENGINES, ... |
| mysql | user, db, tables_priv, columns_priv, procs_priv, ... |
| performance_schema | events_waits_current, file_summary_by_instance, ... |
| sys | host_summary, user_summary, schema_object_overview, ... |
| test | customers, employees, products, orders, ... |
| web | demotable492, demotable500, DemoTable, demotable605, ... |
คำสั่งย่อที่ใช้บ่อย
SHOW DATABASES;- แสดงชื่อ Database ทั้งหมดSHOW TABLES;- แสดง Table ใน Database ปัจจุบันSHOW TABLES FROM db_name;- แสดง Table ใน Database ที่ระบุSHOW TABLE STATUS;- แสดง Table พร้อม Metadata (Rows, Size, Engine, Collation)
Query แบบละเอียด: Database, Table, Engine, Rows, Size
SELECT
TABLE_SCHEMA AS `Database`,
TABLE_NAME AS `Table`,
ENGINE,
TABLE_ROWS,
ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS `Size_MB`,
TABLE_COLLATION,
CREATE_TIME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA NOT IN ('information_schema', 'performance_schema', 'mysql', 'sys')
ORDER BY TABLE_SCHEMA, TABLE_NAME;
Performance Note
- Query INFORMATION_SCHEMA บน Server ที่มี Table > 10,000 อาจช้า (Metadata Lock)
- MySQL 8.0+ มี Data Dictionary ใหม่ เร็วกว่า 5.7 มาก
- ใช้
WHERE TABLE_SCHEMA = 'db_name'จำกัด Scope ให้เฉพาะ DB ที่ต้องการ
Tool แนะนำ
สำหรับ Production ใช้ GUI Tools แทน Query Manual:
- MySQL Workbench (Official, Free)
- DBeaver (Free, Multi-DB)
- DataGrip (JetBrains, Paid)
- phpMyAdmin / Adminer (Web-based)