INFORMATION_SCHEMA से केवल उन्हीं टेबल को सूचीबद्ध करें जिनमें डेटा है (rows ≥ 1)
सिंटैक्स:
SELECT table_type, table_name, table_schema
FROM information_schema.tables
WHERE table_rows >= 1 AND table_schema = 'yourDatabaseName';
व्यावहारिक उदाहरण: 'test' डेटाबेस
mysql> SELECT table_type, table_name, table_schema
-> FROM information_schema.tables
-> WHERE table_rows >= 1 AND table_schema = 'test';
आउटपुट (80 नॉन-खाली टेबल):
+------------+------------------------------+--------------+
| TABLE_TYPE | TABLE_NAME | TABLE_SCHEMA |
+------------+------------------------------+--------------+
| BASE TABLE | add30minutesdemo | test |
| BASE TABLE | addoneday | test |
| BASE TABLE | agecalculatesdemo | test |
| BASE TABLE | aliasdemo | test |
| BASE TABLE | allcharacterbeforespace | test |
| ... (कुल 80 पंक्तियाँ) ... | ... |
| BASE TABLE | zipcodepadwithzerodemo | test |
+------------+------------------------------+--------------+
80 rows in set (0.00 sec)
महत्वपूर्ण नोट्स:
table_rows InnoDB के लिए अनुमानित है — कुछ टेबल जिनमें डेटा है, 0 दिखा सकते हैं
TABLE_TYPE = 'BASE TABLE' केवल वास्तविक टेबल दिखाता है (व्यू नहीं)
- सटीक जांच के लिए:
SELECT COUNT(*) FROM table_name चलाएं
सटीक जांच के लिए विकल्प (धीमा लेकिन सही):
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'your_db'
AND table_type = 'BASE TABLE'
AND EXISTS (SELECT 1 FROM your_db.your_table LIMIT 1);
संबंधित उपयोगी क्वेरी:
-- खाली टेबल खोजें
SELECT table_name FROM information_schema.tables
WHERE table_schema = 'your_db' AND table_rows = 0;
-- टेबल साइज के साथ (बाइट्स में)
SELECT table_name,
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS size_mb
FROM information_schema.tables
WHERE table_schema = 'your_db'
ORDER BY size_mb DESC;