MySQL में सभी डेटाबेस (स्कीमा) की सूची प्राप्त करने के लिए, INFORMATION_SCHEMA.SCHEMATA टेबल को क्वेरी करें। यह SHOW DATABASES कमांड का प्रोग्रामेटिक विकल्प है और अधिक लचीला है।
क्वेरी
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 | +---------------------------+
उपयोगी विविधताएं
सिस्टम डेटाबेस को बाहर करें
SELECT schema_name
FROM information_schema.schemata
WHERE schema_name NOT IN ('mysql', 'information_schema', 'performance_schema', 'sys');
पैटर्न द्वारा फ़िल्टर करें
SELECT schema_name FROM information_schema.schemata WHERE schema_name LIKE 'test%';
डेटाबेस काउंट प्राप्त करें
SELECT COUNT(*) FROM information_schema.schemata
WHERE schema_name NOT IN ('mysql', 'information_schema', 'performance_schema', 'sys');
डेटाबेस आकार के साथ सूची
SELECT table_schema AS DatabaseName,
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS Size_MB
FROM information_schema.tables
GROUP BY table_schema
ORDER BY Size_MB DESC;
SHOW DATABASES vs INFORMATION_SCHEMA
| विशेषता | SHOW DATABASES | INFORMATION_SCHEMA |
|---|---|---|
| फ्लेक्सिबिलिटी | सीमित | उच्च (WHERE, JOIN, ORDER BY) |
| प्रोग्रामेटिक एक्सेस | कठिन | आसान (मानक SELECT) |
| अतिरिक्त मेटाडेटा | नहीं | हां (चार्टरसेट, कॉलेशन, आदि) |
नोट
INFORMATION_SCHEMA केवल उन डेटाबेस को दिखाता है जिन पर यूज़र के पास विशेषाधिकार हैं। SHOW DATABASES समान व्यवहार करता है जब तक SHOW_DATABASES विशेषाधिकार न हो।