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

ตั้ง Alias ให้ SHOW TABLES ใน MySQL ด้วย INFORMATION_SCHEMA

คำสั่ง SHOW TABLES ไม่รองรับ Aliase โดยตรง แต่สามารถ Query INFORMATION_SCHEMA.TABLES แทน แล้วใช้ AS ตั้งชื่อคอลัมน์ผลลัพธ์

Syntax

SELECT TABLE_NAME AS anyAliasName 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = DATABASE();

ตัวอย่าง: ตั้ง Alias เป็น MY_TABLE_NAME

mysql> SELECT TABLE_NAME AS MY_TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = DATABASE();

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

+------------------------------------+
| MY_TABLE_NAME                      |
+------------------------------------+
| a                                  |
| accumulateddemo                    |
| add10minutedemo                    |
| add1toexistingvalue                |
| addanumbertocurrentvaluedemo       |
| addcolumnandindexdemo              |
| addingcurrentyeardemo              |
| addprefixtocolumndemo              |
| addtoexistingvaluedemo             |
| addtotaltimedemo                   |
| ... (408 rows total)               |
+------------------------------------+

ข้อมูลเพิ่มเติมที่ดึงได้จาก INFORMATION_SCHEMA.TABLES

SELECT 
    TABLE_NAME AS table_name,
    ENGINE,
    TABLE_ROWS,
    ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS size_mb,
    TABLE_COLLATION,
    CREATE_TIME,
    UPDATE_TIME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE()
ORDER BY TABLE_NAME;

กรองเฉพาะ Base Table (ไม่รวม View)

SELECT TABLE_NAME AS my_tables
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE() 
  AND TABLE_TYPE = 'BASE TABLE';

SHOW TABLES vs INFORMATION_SCHEMA

คุณสมบัติSHOW TABLESINFORMATION_SCHEMA.TABLES
Alias Columnไม่ได้ได้ (AS)
Filter/WhereLIKE pattern เท่านั้นWHERE ทุกอย่าง
Join อื่นไม่ได้ได้ (JOIN COLUMNS, STATISTICS)
Metadata เพิ่มไม่มีEngine, Rows, Size, Collation, Time
Performanceเร็วกว่าเล็กน้อยช้ากว่า (Metadata Lock)

MySQL 8.0: SHOW TABLES WITH ALIAS (ไม่มี)

ยังไม่รองรับ ต้องใช้ INFORMATION_SCHEMA