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

แสดงรายชื่อฐานข้อมูลทั้งหมดใน MySQL ด้วย INFORMATION_SCHEMA.SCHEMATA

ใช้ตารางระบบ INFORMATION_SCHEMA.SCHEMATA เพื่อดึงรายชื่อฐานข้อมูล (Database/Schema) ทั้งหมดใน MySQL Server

Syntax

SELECT schema_name AS DatabaseName FROM information_schema.schemata;

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

mysql> select schema_name as DatabaseName from information_schema.schemata;

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

+---------------------------+
| DatabaseName              |
+---------------------------+
| mysql                     |
| information_schema        |
| performance_schema        |
| sys                       |
| business                  |
| sample                    |
| hello                     |
| test                      |
| mybusiness                |
| databasesample            |
| schemasample              |
| universitydatabase        |
| education                 |
| mydatabase                |
| database1                 |
| sampledatabase            |
| test3                     |
| javadatabase2             |
| javasampledatabase        |
| rdb                       |
| onetomanyrelationship     |
| webtracker                |
| web                       |
| commandline               |
| hb_student_tracker        |
| bothinnodbandmyisam       |
| customertracker           |
| tracker                   |
| demo                      |
| customer_tracker_database |
| login                     |
| onlinebookstore           |
| customer-tracker          |
| web_tracker               |
| instant_app               |
| 1233                      |
+---------------------------+
36 rows in set (0.00 sec)

คอลัมน์สำคัญใน SCHEMATA

คอลัมน์ความหมาย
CATALOG_NAMEชื่อ Catalog (ปกติเป็น 'def')
SCHEMA_NAMEชื่อฐานข้อมูล (Database Name)
DEFAULT_CHARACTER_SET_NAMECharset เริ่มต้น (utf8mb4, latin1, etc.)
DEFAULT_COLLATION_NAMECollation เริ่มต้น
SQL_PATHPath สำหรับ Stored Routine (ปกติ NULL)

คำสั่งทางเลือก: SHOW DATABASES

mysql> SHOW DATABASES;

ผลลัพธ์เหมือนกัน แต่ SHOW DATABASES ไม่สามารถ JOIN/WHERE กับตารางอื่นได้ ในขณะที่ INFORMATION_SCHEMA.SCHEMATA เป็นตารางทั่วไป Query ได้ยืดหยุ่น

กรองฐานข้อมูลเฉพาะ User (ไม่รวม System DB)

SELECT schema_name FROM information_schema.schemata 
WHERE schema_name NOT IN ('mysql','information_schema','performance_schema','sys','test');

นับจำนวนฐานข้อมูล

SELECT COUNT(*) FROM information_schema.schemata;

สรุป: ใช้ SELECT schema_name FROM information_schema.schemata เพื่อดึงรายชื่อ Database ทั้งหมด แบบ Query ได้ยืดหยุ่น กรอง JOIN ได้ ต่างจาก SHOW DATABASES ที่เป็นคำสั่งเฉพาะ