MySQL में INFORMATION_SCHEMA का उपयोग करके सभी डेटाबेस और उनकी टेबल सूचीबद्ध करना
MySQL में सभी डेटाबेस और प्रत्येक डेटाबेस की टेबल देखने के लिए INFORMATION_SCHEMA डेटाबेस के SCHEMATA और TABLES टेबल को जॉइन करें।
क्वेरी
SELECT
my_schema.SCHEMA_NAME,
GROUP_CONCAT(tbl.TABLE_NAME)
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;
कार्यान्वयन और आउटपुट
mysql> SELECT my_schema.SCHEMA_NAME, GROUP_CONCAT(tbl.TABLE_NAME)
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;
आउटपुट (संक्षिप्त):
+---------------------------+--------------------------------------------------+
| SCHEMA_NAME | group_concat(tbl.TABLE_NAME) |
+---------------------------+--------------------------------------------------+
| information_schema | COLUMNS, TABLES, VIEWS, ROUTINES, ... |
| mysql | db, user, tables_priv, columns_priv, ... |
| performance_schema | events_waits_current, file_summary_by_instance, |
| sys | host_summary, io_global_by_file, ... |
| web | DemoTable, demotable605, demotable613, ... |
| test | customers, employees, products, ... |
| ... | ... |
+---------------------------+--------------------------------------------------+
36 rows in set, 6 warnings (0.18 sec)
व्याख्या:
INFORMATION_SCHEMA.SCHEMATA- सभी डेटाबेस (स्कीमा) की सूचीINFORMATION_SCHEMA.TABLES- सभी टेबल की सूची उनके स्कीमा के साथLEFT JOIN- डेटाबेस जिनमें कोई टेबल नहीं, वे भी शामिल होंगे (NULL टेबल सूची)GROUP_CONCAT- प्रत्येक डेटाबेस की टेबल को कॉमा-सेपरेटेड सूची में जोड़ता हैGROUP BY SCHEMA_NAME- प्रति डेटाबेस एक पंक्ति
सरल विकल्प: अलग-अलग कमांड
-- सभी डेटाबेस दिखाएं
SHOW DATABASES;
-- विशिष्ट डेटाबेस की टेबल दिखाएं
USE database_name;
SHOW TABLES;
-- या बिना USE किए
SHOW TABLES FROM database_name;
केवल यूजर डेटाबेस (सिस्टम डेटाबेस छोड़कर)
SELECT SCHEMA_NAME
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys');
टेबल काउंट के साथ
SELECT
SCHEMA_NAME,
COUNT(TABLE_NAME) AS table_count
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
GROUP BY SCHEMA_NAME
ORDER BY table_count DESC;
प्रदर्शन नोट
INFORMATION_SCHEMA क्वेरी बड़ी संख्या में टेबल/डेटाबेस पर धीमी हो सकती हैं क्योंकि ये मेटाडेटा लॉक लेती हैं। SHOW DATABASES और SHOW TABLES आमतौर पर तेज़ होते हैं।