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

MySQL में INFORMATION_SCHEMA.COLUMNS से दो विशिष्ट कॉलम (Id, Name) वाली सभी टेबल खोजें

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)

कैसे काम करता है

  1. WHERE COLUMN_NAME IN ('Id', 'Name') - केवल इन दो कॉलम वाली पंक्तियां चुनता है
  2. GROUP BY TABLE_NAME - टेबल के अनुसार समूहित करता है
  3. 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 मेटाडेटा का सबसे विस्तृत स्रोत है - प्रोग्रामेटिक स्कीमा विश्लेषण के लिए आवश्यक।

  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 में टेबल जोड़कर (JOIN) मान कैसे प्राप्त करें?

    JOIN का उपयोग दो टेबल को सामान्य कॉलम (PK-FK) पर जोड़ें। टेबल 1: demo52 insert into demo52 values(1,John), (2,David), (3,Mike); टेबल 2: demo53 (FK से demo52) insert into demo53 values(1,23), (2,22), (3,26); JOIN क्वेरी SELECT name FROM demo52 t1 JOIN demo53 t2 ON t1.id=t2.id WHERE t1.id=1; +-

  1. - MySQL में GROUP BY HAVING COUNT से अद्वितीय अंतिम नाम वाले उपयोगकर्ता खोजें

    सिंटैक्स select max(tbl.firstName), tbl.lastName, count(distinct tbl.firstName) as CountOfFirstName from demo76 as tbl group by tbl.lastName having count(distinct tbl.firstName) = 1; उदाहरण डेटा insert into demo76 values(John,Doe), (David,Smith), (Adam,Smith); परिणाम: केवल अद्वितीय अंतिम नाम (Do