MySQL डेटाबेस में जिन टेबलों में **दोनों** विशिष्ट कॉलम (उदाहरण: Id और Name) मौजूद हैं, उन्हें खोजने के लिए INFORMATION_SCHEMA.COLUMNS को क्वेरी करें। यह स्कीमा अन्वेषण, माइग्रेशन, और कोड जनरेशन के लिए उपयोगी है।
सिंटैक्स
SELECT TABLE_NAME AS TableName
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'your_database'
AND COLUMN_NAME IN ('Id', 'Name')
GROUP BY TABLE_NAME
HAVING COUNT(*) = 2;
व्यावहारिक उदाहरण
'web' डेटाबेस में Id और Name दोनों कॉलम वाली टेबल खोजें:
mysql> SELECT TABLE_NAME AS TableNameFromWebDatabase
-> FROM INFORMATION_SCHEMA.COLUMNS
-> WHERE TABLE_SCHEMA = 'web'
-> AND COLUMN_NAME IN ('Id', 'Name')
-> GROUP BY TABLE_NAME
-> HAVING COUNT(*) = 2;
परिणाम
+--------------------------+ | TableNameFromWebDatabase | +--------------------------+ | student | | distinctdemo | | secondtable | | groupconcatenatedemo | | indemo | | ifnulldemo | | demotable211 | | demotable212 | | demotable223 | | demotable233 | | demotable251 | | demotable255 | +--------------------------+ 12 rows in set (0.25 sec)
कैसे काम करता है
WHERE COLUMN_NAME IN ('Id', 'Name')- केवल इन दो कॉलम वाली पंक्तियां चुनता हैGROUP BY TABLE_NAME- टेबल के अनुसार समूहित करता हैHAVING COUNT(*) = 2- केवल वे टेबल जहां **दोनों** कॉलम मौजूद हैं (गिनती = 2)
सत्यापन: एक टेबल का वर्णन देखें
mysql> DESC demotable233;
+-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | Name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+
पुष्टि: demotable233 में Id और Name दोनों हैं।
महत्वपूर्ण: COUNT(*) = 2 क्यों?
- यदि टेबल में
Idदो बार परिभाषित है (असंभव लेकिन सैद्धांतिक), तो गिनती 2 होगी लेकिनNameनहीं होगा - सुरक्षित:
HAVING COUNT(DISTINCT COLUMN_NAME) = 2 - या:
HAVING SUM(COLUMN_NAME = 'Id') = 1 AND SUM(COLUMN_NAME = 'Name') = 1
सामान्यीकरण: N कॉलम के लिए
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'your_db'
AND COLUMN_NAME IN ('col1', 'col2', 'col3', 'col4')
GROUP BY TABLE_NAME
HAVING COUNT(DISTINCT COLUMN_NAME) = 4;
अतिरिक्त कॉलम जानकारी प्राप्त करें
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_KEY, COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'your_db'
AND COLUMN_NAME IN ('Id', 'Name')
ORDER BY TABLE_NAME, COLUMN_NAME;
उपयोग के मामले
- माइग्रेशन: सभी टेबल जिनमें
created_at,updated_atहैं - ऑडिट: प्राथमिक कुंजी
Idऔर नाम कॉलम वाली टेबल - कोड जनरेशन: रिपॉजिटरी/एंटिटी क्लास के लिए उम्मीदवार टेबल
- दस्तावेज़ीकरण: सामान्य कॉलम पैटर्न वाली टेबल सूची
संबंधित: TABLES व्यू से टेबल सूची
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your_db' AND TABLE_TYPE = 'BASE TABLE';
INFORMATION_SCHEMA.COLUMNS MySQL मेटाडेटा का सबसे विस्तृत स्रोत है - प्रोग्रामेटिक स्कीमा विश्लेषण के लिए आवश्यक।