Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में CASE WHEN और INFORMATION_SCHEMA से टेबल अस्तित्व जांचें

MySQL में INFORMATION_SCHEMA.TABLES और CASE WHEN का उपयोग करके बूलियन परिणाम (हां/नहीं) के रूप में टेबल अस्तित्व जांच सकते हैं।

सिंटैक्स

SELECT MAX(CASE 
    WHEN TABLE_NAME = 'टेबल_नाम' THEN 'Yes (TRUE)' 
    ELSE 'No (FALSE)' 
END) AS isTableExists
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE();

उदाहरण

1. टेबल बनाएं

mysql> CREATE TABLE DemoTable (
    -> Id INT,
    -> Name VARCHAR(20)
    -> );

2. डेटा डालें

mysql> INSERT INTO DemoTable VALUES(101, 'Chris');
mysql> INSERT INTO DemoTable VALUES(102, 'David');

3. टेबल अस्तित्व जांचें

mysql> SELECT MAX(CASE 
    ->     WHEN TABLE_NAME = 'DemoTable' THEN 'Yes the table exist(TRUE)'
    ->     ELSE 'No(FALSE)'
    -> END) AS isTableExists
    -> FROM INFORMATION_SCHEMA.TABLES;

4. परिणाम

+-------------------------------+
| isTableExists                 |
+-------------------------------+
| Yes the table exist(TRUE)     |
+-------------------------------+

बेहतर विकल्प

1. सरल EXISTS जांच

SELECT EXISTS(
    SELECT 1 FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'DemoTable'
) AS table_exists;
+--------------+
| table_exists |
+--------------+
| 1            |  -- 1 = TRUE, 0 = FALSE
+--------------+

2. SHOW TABLES LIKE

SHOW TABLES LIKE 'DemoTable';

3. स्टोर्ड प्रोसीजर में उपयोग

DELIMITER $$
CREATE PROCEDURE CheckTableExists(IN tbl_name VARCHAR(64), OUT exists BOOLEAN)
BEGIN
    SELECT COUNT(*) > 0 INTO exists
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = tbl_name;
END $$
DELIMITER ;

INFORMATION_SCHEMA.TABLES कॉलम

  • TABLE_SCHEMA - डेटाबेस नाम
  • TABLE_NAME - टेबल नाम
  • TABLE_TYPE - 'BASE TABLE', 'VIEW', आदि
  • ENGINE - स्टोरेज इंजन
  1. - MySQL में CASE WHEN के विकल्प: IF() फ़ंक्शन का उपयोग

    MySQL में सरल सशर्त तर्क के लिए CASE WHEN के बजाय IF() फ़ंक्शन अधिक संक्षिप्त और पठनीय हो सकता है। सिंटैक्स तुलना CASE WHEN SELECT CASE WHEN PlayerScore = 0 THEN ELSE PlayerScore END FROM DemoTable; IF() - सरल मामलों के लिए SELECT IF(PlayerScore = 0, , PlayerScore) FROM DemoTable; उदाह

  1. - MySQL में JOIN से दूसरी टेबल के ID द्वारा उपयोगकर्ता नाम कैसे प्राप्त करें?

    JOIN सिंटैक्स select username from table1 join table2 on table1.id = table2.fk_id; उदाहरण टेबल 1 (demo77): userid (PK), username insert into demo77 values(1,John), (2,Bob), (3,Mike); टेबल 2 (demo78): id (PK, FK→demo77), countryname insert into demo78 values(1,US), (2,AUS); JOIN क्वेरी और परिणा

  1. - Python में MySQL का उपयोग करके टेबल में रिकॉर्ड मौजूद है या नहीं जांचना

    कभी-कभी हमें जांचना होता है कि कोई विशेष रिकॉर्ड टेबल में मौजूद है या नहीं। यह EXISTS स्टेटमेंट का उपयोग करके किया जा सकता है। EXISTS स्टेटमेंट तब TRUE लौटाता है जब सबक्वेरी एक या अधिक रिकॉर्ड लौटाती है। सिंटैक्स SELECT * FROM table_name WHERE EXISTS(sub_query) Python में MySQL का उपयोग करके रिकॉर