MySQL में INFORMATION_SCHEMA.COLUMNS का उपयोग करके कॉलम खोजना
MySQL का INFORMATION_SCHEMA.COLUMNS दृश्य वर्तमान डेटाबेस (या सभी डेटाबेस) में सभी टेबल्स और कॉलम्स के बारे में मेटाडेटा प्रदान करता है। आप इसका उपयोग किसी विशिष्ट कॉलम नाम वाली सभी टेबल्स को खोजने के लिए कर सकते हैं।
सिंटैक्स
SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = SCHEMA()
AND COLUMN_NAME = 'yourColumnName';
उदाहरण: 'EmployeeAge' कॉलम वाली टेबल्स खोजना
mysql> SELECT TABLE_NAME, COLUMN_NAME
-> FROM INFORMATION_SCHEMA.COLUMNS
-> WHERE TABLE_SCHEMA = SCHEMA()
-> AND COLUMN_NAME = 'EmployeeAge';
परिणाम
+---------------+-------------+
| TABLE_NAME | COLUMN_NAME |
+---------------+-------------+
| demotable1153 | EmployeeAge |
| demotable1297 | EmployeeAge |
| demotable1303 | EmployeeAge |
| demotable1328 | EmployeeAge |
| demotable1378 | EmployeeAge |
| demotable1530 | EmployeeAge |
| demotable1559 | EmployeeAge |
| demotable1586 | EmployeeAge |
| demotable1798 | EmployeeAge |
| demotable1901 | EmployeeAge |
| demotable511 | EmployeeAge |
| demotable912 | EmployeeAge |
+---------------+-------------+
12 rows in set (0.00 sec)
सत्यापन: एक टेबल की संरचना जांचना
mysql> DESC demotable1153;
+--------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+----------------+
| EmployeeId | int(11) | NO | PRI | NULL | auto_increment |
| EmployeeName | varchar(40) | YES | MUL | NULL | |
| EmployeeAge | int(11) | YES | | NULL | |
+--------------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
INFORMATION_SCHEMA.COLUMNS के उपयोगी कॉलम्स
| कॉलम | विवरण |
|---|---|
| TABLE_SCHEMA | डेटाबेस नाम |
| TABLE_NAME | टेबल नाम |
| COLUMN_NAME | कॉलम नाम |
| ORDINAL_POSITION | टेबल में कॉलम स्थिति |
| COLUMN_DEFAULT | डिफ़ॉल्ट मान |
| IS_NULLABLE | 'YES' या 'NO' |
| DATA_TYPE | डेटा प्रकार (int, varchar, आदि) |
| CHARACTER_MAXIMUM_LENGTH | स्ट्रिंग प्रकारों के लिए अधिकतम लंबाई |
| NUMERIC_PRECISION | संख्यात्मक प्रकारों के लिए परिशुद्धता |
| COLUMN_TYPE | पूर्ण कॉलम परिभाषा |
| COLUMN_KEY | 'PRI', 'UNI', 'MUL', या खाली |
| EXTRA | 'auto_increment', 'VIRTUAL GENERATED', आदि |
उन्नत खोज क्वेरीज़
आंशिक नाम मिलान (LIKE)
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = SCHEMA()
AND COLUMN_NAME LIKE '%email%';
डेटा प्रकार द्वारा खोजें
SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = SCHEMA()
AND DATA_TYPE IN ('VARCHAR', 'CHAR', 'TEXT')
AND CHARACTER_MAXIMUM_LENGTH > 100;
सभी डेटाबेस में खोजें
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'EmployeeAge';
कॉलम मेटाडेटा के साथ
SELECT
TABLE_NAME,
COLUMN_NAME,
DATA_TYPE,
IS_NULLABLE,
COLUMN_DEFAULT,
COLUMN_KEY
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = SCHEMA()
AND COLUMN_NAME = 'EmployeeAge';
व्यावहारिक उपयोग मामले
- स्कीमा ऑडिट: सभी टेबल्स में नामकरण परंपराओं की जांच
- माइग्रेशन योजना: परिवर्तनों से प्रभावित सभी टेबल्स खोजें
- दस्तावेज़ीकरण: डेटा शब्दकोश उत्पन्न करें
- डिबगिंग: "यह कॉलम कहाँ उपयोग किया जाता है?"
- सुरक्षा: संवेदनशील डेटा कॉलम्स (SSN, पासवर्ड, आदि) ढूंढें
प्रदर्शन नोट
INFORMATION_SCHEMA क्वेरीज़ बड़ी संख्या में टेबल्स वाले डेटाबेस पर धीमी हो सकती हैं क्योंकि उन्हें फाइल सिस्टम से मेटाडेटा पढ़ना पड़ता है। MySQL 8.0 में डेटा डिक्शनरी आर्किटेक्चर में सुधार हुआ है।