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

MySQL में INFORMATION_SCHEMA से संयुक्त प्राथमिक कुंजी (Composite Primary Key) पहचानें

MySQL में किसी टेबल में संयुक्त प्राथमिक कुंजी (Composite Primary Key - एकाधिक कॉलम वाली PK) है या नहीं, यह जांचने के लिए INFORMATION_SCHEMA.KEY_COLUMN_USAGE टेबल को क्वेरी करें और कॉलम गिनें। यदि गिनती 1 से अधिक है, तो संयुक्त PK है।

सिंटैक्स

SELECT COUNT(*) AS Total
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = 'your_table_name'
  AND TABLE_SCHEMA = DATABASE()
  AND CONSTRAINT_NAME = 'PRIMARY';

व्यावहारिक उदाहरण

टेबल बनाएं:

mysql> CREATE TABLE DemoTable1324 (
    StudentId INT,
    StudentName VARCHAR(20),
    StudentAge INT,
    StudentCountryName VARCHAR(20)
);

संयुक्त प्राथमिक कुंजी जोड़ें (3 कॉलम)

mysql> ALTER TABLE DemoTable1324 
    -> ADD CONSTRAINT constr_IdAgeCountry PRIMARY KEY (StudentId, StudentAge, StudentCountryName);

संयुक्त PK पहचानने की क्वेरी

mysql> SELECT COUNT(*) AS Total
    -> FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    -> WHERE TABLE_NAME = 'DemoTable1324'
    ->   AND TABLE_SCHEMA = DATABASE()
    ->   AND CONSTRAINT_NAME = 'PRIMARY';

परिणाम

+-------+
| Total |
+-------+
| 3     |
+-------+

परिणाम 3 दर्शाता है कि प्राथमिक कुंजी में 3 कॉलम हैं - यह एक **संयुक्त प्राथमिक कुंजी** है।

विस्तृत जानकारी प्राप्त करें

SELECT COLUMN_NAME, ORDINAL_POSITION
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = 'DemoTable1324'
  AND TABLE_SCHEMA = DATABASE()
  AND CONSTRAINT_NAME = 'PRIMARY'
ORDER BY ORDINAL_POSITION;
+-------------------+------------------+
| COLUMN_NAME       | ORDINAL_POSITION |
+-------------------+------------------+
| StudentId         | 1                |
| StudentAge        | 2                |
| StudentCountryName| 3                |
+-------------------+------------------+

सरल जांच: केवल TRUE/FALSE

SELECT COUNT(*) > 1 AS HasCompositePK
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = 'DemoTable1324'
  AND TABLE_SCHEMA = DATABASE()
  AND CONSTRAINT_NAME = 'PRIMARY';

अन्य उपयोगी INFORMATION_SCHEMA क्वेरी

सभी प्राथमिक कुंजियां सूचीबद्ध करें

SELECT TABLE_NAME, COUNT(*) AS PK_Columns
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = DATABASE()
  AND CONSTRAINT_NAME = 'PRIMARY'
GROUP BY TABLE_NAME
HAVING COUNT(*) > 1;

विदेशी कुंजी संबंध देखें

SELECT TABLE_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = DATABASE()
  AND REFERENCED_TABLE_NAME IS NOT NULL;

महत्वपूर्ण नोट्स

  • TABLE_SCHEMA = DATABASE() वर्तमान डेटाबेस तक सीमित करता है
  • CONSTRAINT_NAME = 'PRIMARY' केवल प्राथमिक कुंजी के लिए फ़िल्टर करता है
  • ORDINAL_POSITION PK में कॉलम का क्रम दिखाता है
  • यह विधि किसी भी स्टोरेज इंजन (InnoDB, MyISAM, आदि) के साथ काम करती है

उपयोग के मामले

  • स्कीमा दस्तावेज़ीकरण/ऑडिट
  • माइग्रेशन स्क्रिप्ट में सत्यापन
  • डायनामिक SQL जनरेशन
  • ORM/कोड जनरेशन टूल्स

INFORMATION_SCHEMA.KEY_COLUMN_USAGE MySQL मेटाडेटा का केंद्रीय स्रोत है जो प्रोग्रामेटिक स्कीमा निरीक्षण सक्षम करता है।

  1. - MySQL में SHOW TABLES से डेटाबेस की सभी टेबल नाम देखें

    MySQL में SHOW TABLES स्टेटमेंट का उपयोग करके वर्तमान या निर्दिष्ट डेटाबेस की सभी टेबल नाम सूचीबद्ध कर सकते हैं। सिंटैक्स SHOW TABLES [FROM डेटाबेस_नाम]; उदाहरण 1. विशिष्ट डेटाबेस से टेबल सूची SHOW TABLES FROM hb_student_tracker; 2. परिणाम +------------------------------+ | Tables_in_hb_student

  1. - MySQL में प्राइमरी की कैसे ड्रॉप करें?

    प्राइमरी की ड्रॉप करने के लिए, पहले ALTER का उपयोग करके टेबल को बदलें। इसके साथ, नीचे दिखाए अनुसार की ड्रॉप करने के लिए DROP का उपयोग करें: सिंटैक्स alter table yourTableName drop primary key; आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable -> ( -> StudentId int NOT NULL, -> S

  1. - MySQL में प्राइमरी की को कई टेबल में फॉरेन की के रूप में कैसे रेफ़र करें?

    ALTER TABLE ... ADD CONSTRAINT alter table yourSecondTableName add constraint `yourConstraintName` foreign key(`yourSecondTableNamePrimaryKey`) references yourFirstTableName(yourFirstTablePrimaryKeyColumnName); उदाहरण alter table demo66 add constraint `id_fk` foreign key(`user_id`) references