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

हम एकाधिक कॉलम पर विदेशी कुंजी बाधा कैसे निर्दिष्ट कर सकते हैं?

<घंटा/>

MySQL हमें एक तालिका में एकाधिक कॉलम पर एक विदेशी कुंजी बाधा जोड़ने की अनुमति देता है। शर्त यह है कि चाइल्ड टेबल में प्रत्येक विदेशी कुंजी को अलग-अलग पैरेंट टेबल को संदर्भित करना चाहिए।

उदाहरण

मान लीजिए कि हमारे पास एक तालिका 'customer2' है, जिसमें 'cust_unq_id' फ़ील्ड पर एक प्राथमिक कुंजी बाधा इस प्रकार है -

mysql> describe customer2;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| cust_id     | int(11)     | YES  |     | NULL    |       |
| First_name  | varchar(20) | YES  |     | NULL    |       |
| Last_name   | varchar(20) | YES  |     | NULL    |       |
| City        | varchar(10) | YES  |     | NULL    |       |
| cust_unq_id | int(11)     | NO   | PRI | 0       |       |
+-------------+-------------+------+-----+---------+-------+
5 rows in set (0.06 sec)

और हमारे पास एक टेबल ऑर्डर 1 है जिसमें पहले से ही 'Cust_id' फ़ील्ड पर एक विदेशी कुंजी बाधा है जो मूल तालिका 'ग्राहक' को संदर्भित करती है।

mysql> describe orders1;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| order_id     | int(11)     | NO   | PRI | NULL    |       |
| Product_name | varchar(25) | YES  |     | NULL    |       |
| orderdate    | date        | YES  |     | NULL    |       |
| Cust_id      | int(11)     | YES  | MUL | NULL    |       |
| cust_unq_id  | int(11)     | YES  |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
5 rows in set (0.04 sec)

अब, निम्नलिखित ALTER TABLE क्वेरी की मदद से हम 'cust_unq_id' फ़ील्ड पर पैरेंट टेबल 'customer2' के संदर्भ में एक और विदेशी कुंजी बाधा जोड़ सकते हैं

mysql> Alter table orders1 add FOREIGN KEY(cust_unq_id) REFERENCES Customer2(Cust_unq_id);
Query OK, 0 rows affected (0.25 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> describe orders1;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| order_id     | int(11)     | NO   | PRI | NULL    |       |
| Product_name | varchar(25) | YES  |     | NULL    |       |
| orderdate    | date        | YES  |     | NULL    |       |
| Cust_id      | int(11)     | YES  | MUL | NULL    |       |
| cust_unq_id  | int(11)     | YES  | MUL | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
5 rows in set (0.06 sec)

उपरोक्त परिणाम सेट से, यह देखा जा सकता है कि 'orders1' तालिका में दो हैं, एक 'cust_id' पर और दूसरा 'cust_unq_id' विदेशी कुंजी बाधाओं पर।


  1. मैं MySQL में एकाधिक तालिकाओं में कॉलम कैसे जोड़ सकता हूं?

    एकाधिक तालिकाओं में स्तंभों का योग करने के लिए, UNION ALL का उपयोग करें। अवधारणा को समझने के लिए, आइए हम पहली तालिका बनाएं। पहली तालिका बनाने की क्वेरी इस प्रकार है );क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.50 सेकंड) इंसर्ट कमांड का उपयोग करके पहली तालिका में कुछ रिकॉर्ड डालें। क्वेरी इस प्रकार है -

  1. मैं अपने MySQL टेबल कॉलम के नाम कैसे प्राप्त कर सकता हूं?

    इसके लिए आप SHOW कमांड का इस्तेमाल कर सकते हैं। निम्नलिखित वाक्य रचना है - अपनेTableName से कॉलम दिखाएं; आइए पहले एक टेबल बनाएं - टेबल बनाएं DemoTable(StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentFirstName varchar(20), StudentLastName varchar(20), StudentAge int, StudentAddress varc

  1. MySQL डीबी में विदेशी कुंजी की पहचान कैसे करें?

    आइए पहले एक टेबल बनाएं - टेबल बनाएं DemoTable1 (Id int NOT NULL PRIMARY KEY,EmployeeName varchar(100));क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.50 सेकंड) विदेशी कुंजी बाधाओं के साथ दूसरी तालिका बनाने की क्वेरी निम्नलिखित है - तालिका बनाएं DemoTable2 (Id int NOT NULL, StreetName varchar(100), CityName