MySQL में टेबल अस्तित्व जांचने के कई तरीके हैं, प्रत्येक अलग उपयोग के लिए उपयुक्त।
तरीका 1: SHOW TABLES (सभी टेबल सूचीबद्ध)
mysql> USE business;
mysql> SHOW TABLES;
+--------------------------+
| Tables_in_business |
+--------------------------+
| addcheckconstraintdemo |
| addcolumntable |
| ... (107 टेबल) |
+--------------------------+
तरीका 2: SHOW TABLES LIKE (विशिष्ट टेबल)
mysql> SHOW TABLES LIKE 'tblstudent';
+---------------------------------+
| Tables_in_business (tblstudent) |
+---------------------------------+
| tblstudent |
+---------------------------------+
mysql> SHOW TABLES LIKE 'sampledemo';
Empty set (0.00 sec) -- टेबल नहीं मिली
तरीका 3: INFORMATION_SCHEMA (प्रोग्रामेटिक, लचीला)
-- बूलियन जांच
SELECT COUNT(*) > 0 AS table_exists
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'business'
AND TABLE_NAME = 'tblstudent';
-- पूरी जानकारी
SELECT TABLE_NAME, TABLE_TYPE, ENGINE, CREATE_TIME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'business'
AND TABLE_NAME = 'tblstudent';
तरीका 4: SHOW TABLE STATUS
mysql> SHOW TABLE STATUS LIKE 'tblstudent';
-- विस्तृत मेटाडेटा: इंजन, पंक्तियाँ, आकार, कॉलेशन, आदि
तरीका 5: TRY-CATCH पैटर्न (एप्लिकेशन कोड में)
-- PHP/PDO उदाहरण
try {
$pdo->query("SELECT 1 FROM tblstudent LIMIT 1");
$exists = true;
} catch (PDOException $e) {
if ($e->getCode() == '42S02') { -- टेबल नहीं मिली
$exists = false;
}
}
तुलना
| विधि | गति | उपयोग | नोट |
|---|---|---|---|
| SHOW TABLES LIKE | तेज़ | मैन्युअल/एडहॉक | केस-असंवेदनशील (डिफ़ॉल्ट) |
| INFORMATION_SCHEMA | मध्यम | एप्लिकेशन/स्क्रिप्ट | अधिक मेटाडेटा, केस-संवेदनशील |
| SHOW TABLE STATUS | धीमा (बड़े DB) | मेटाडेटा चाहिए | आकार, पंक्तियाँ, इंजन जानकारी |
| SELECT 1 FROM table | तेज़ (इंडेक्स) | एप्लिकेशन | अपवाद हैंडलिंग जरूरी |
सर्वोत्तम अभ्यास
- एप्लिकेशन कोड:
INFORMATION_SCHEMAयाSELECT 1ट्राई-कैच के साथ - एडमिन/स्क्रिप्ट:
SHOW TABLES LIKE - मेटाडेटा चाहिए:
SHOW TABLE STATUS