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

MySQL: นับจำนวนฟิลด์ (Columns) ทั้งหมดในทุกตารางของ Database

การนับจำนวนคอลัมน์รวมทุกตารางด้วย INFORMATION_SCHEMA.COLUMNS

View INFORMATION_SCHEMA.COLUMNS เก็บข้อมูลเมตาของคอลัมน์ทุกตารางในทุก Database สามารถนับจำนวนแถว (แต่ละแถว = 1 คอลัมน์) ได้ด้วย COUNT(*) กรองตาม TABLE_SCHEMA

ตัวอย่างการใช้งาน

Database 'sample':

mysql> SELECT COUNT(*) AS TOTAL_NUMBER_OF_FIELDS
    -> FROM INFORMATION_SCHEMA.COLUMNS
    -> WHERE TABLE_SCHEMA = 'sample';
+------------------------+
| TOTAL_NUMBER_OF_FIELDS |
+------------------------+
| 796                    |
+------------------------+
1 row in set (0.04 sec)

Database 'test':

mysql> SELECT COUNT(*) AS TOTAL_NUMBER_OF_FIELDS
    -> FROM INFORMATION_SCHEMA.COLUMNS
    -> WHERE TABLE_SCHEMA = 'test';
+------------------------+
| TOTAL_NUMBER_OF_FIELDS |
+------------------------+
| 1108                   |
+------------------------+
1 row in set (0.03 sec)

คำอธิบาย

  • TABLE_SCHEMA = ชื่อ Database (Schema)
  • แต่ละแถวใน COLUMNS = 1 คอลัมน์ของ 1 ตาราง
  • COUNT(*) นับจำนวนแถว = จำนวนคอลัมน์รวม

Query ขยาย: แยกตามตาราง

SELECT TABLE_NAME, COUNT(*) AS column_count
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'your_database'
GROUP BY TABLE_NAME
ORDER BY column_count DESC;

Query ขยาย: รวมขนาดข้อมูล

SELECT 
    TABLE_SCHEMA AS `Database`,
    COUNT(DISTINCT TABLE_NAME) AS Tables,
    COUNT(*) AS Columns,
    SUM(DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 AS Size_MB
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA NOT IN ('information_schema','mysql','performance_schema','sys')
GROUP BY TABLE_SCHEMA;

Query นี้ให้ภาพรวม: จำนวนตาราง, จำนวนคอลัมน์, ขนาดรวมต่อ Database