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

MySQL में INFORMATION_SCHEMA का उपयोग करके सभी टेबल्स में एक कॉलम की पहचान कैसे करें?

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';

व्यावहारिक उपयोग मामले

  1. स्कीमा ऑडिट: सभी टेबल्स में नामकरण परंपराओं की जांच
  2. माइग्रेशन योजना: परिवर्तनों से प्रभावित सभी टेबल्स खोजें
  3. दस्तावेज़ीकरण: डेटा शब्दकोश उत्पन्न करें
  4. डिबगिंग: "यह कॉलम कहाँ उपयोग किया जाता है?"
  5. सुरक्षा: संवेदनशील डेटा कॉलम्स (SSN, पासवर्ड, आदि) ढूंढें

प्रदर्शन नोट

INFORMATION_SCHEMA क्वेरीज़ बड़ी संख्या में टेबल्स वाले डेटाबेस पर धीमी हो सकती हैं क्योंकि उन्हें फाइल सिस्टम से मेटाडेटा पढ़ना पड़ता है। MySQL 8.0 में डेटा डिक्शनरी आर्किटेक्चर में सुधार हुआ है।

  1. MySQL में विशिष्ट कॉलम नाम वाली टेबल कैसे खोजें MySQL में विशिष्ट कॉलम नाम वाली टेबल कैसे खोजें

    information_schema.columns टेबल को क्वेरी करके डेटाबेस में विशिष्ट कॉलम नाम वाली सभी टेबल खोजें। सिंटैक्स SELECT DISTINCT table_name FROM information_schema.columns WHERE column_name LIKE %yourSearchValue% AND table_schema = DATABASE(); उदाहरण: Client वाली कॉलम खोजना SELECT DISTINCT table_name FR

  1. - MySQL में सभी कॉलम को एक नए कॉलम में संयोजित करना

    CONCAT() फंक्शन का उपयोग करके कई कॉलम मानों को जोड़ना पहले टेबल बनाएं: create table DemoTable1396 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(40), Age int ); Query OK, 0 rows affected (0.93 sec) रिकॉर्ड डालें: insert into DemoTable1396(Name,Age) values(Bob,26); Query OK, 1 row affec

  1. - MySQL में सर्वर पर सभी डेटाबेस की सभी टेबल्स पर GRANT SELECT कैसे करें?

    इसके लिए, आप नीचे दिए गए सिंटैक्स में GRANT SELECT स्टेटमेंट का उपयोग कर सकते हैं: GRANT SELECT ON *.* TO yourUserName@yourHostName; सबसे पहले होस्ट के साथ सभी उपयोगकर्ता नाम सूचीबद्ध करें: mysql> select user,host from mysql.user; इससे निम्न आउटपुट प्राप्त होगा: +------------------+-----------+