Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL แสดง Database ทั้งหมดพร้อม Tables ในแต่ละ Database

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;

ผลลัพธ์ตัวอย่าง (ย่อ)

DatabaseTables
businessaddconstraintdemo, autoincrementtozero, booleandemo, college, ...
information_schemaCOLUMNS, TABLES, STATISTICS, ENGINES, ...
mysqluser, db, tables_priv, columns_priv, procs_priv, ...
performance_schemaevents_waits_current, file_summary_by_instance, ...
syshost_summary, user_summary, schema_object_overview, ...
testcustomers, employees, products, orders, ...
webdemotable492, 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)