SQL विदेशी कुंजी: उदाहरण के साथ SQL सर्वर में कैसे बनाएं
विदेशी कुंजी क्या है?
A विदेशी कुंजी SQL सर्वर के भीतर रेफ़रेंशियल अखंडता को लागू करने का एक तरीका प्रदान करता है। सरल शब्दों में, विदेशी कुंजी यह सुनिश्चित करती है कि एक तालिका में मान किसी अन्य तालिका में मौजूद होना चाहिए।
विदेशी कुंजी के लिए नियम
- SQL विदेशी कुंजी में NULL की अनुमति है।
- जिस तालिका को संदर्भित किया जा रहा है उसे पैरेंट तालिका कहा जाता है
- SQL में विदेशी कुंजी वाली तालिका को चाइल्ड टेबल कहा जाता है।
- चाइल्ड टेबल में SQL विदेशी कुंजी पैरेंट टेबल में प्राथमिक कुंजी को संदर्भित करती है।
- यह अभिभावक-संतान संबंध उस नियम को लागू करता है जिसे "रेफरेंशियल" के रूप में जाना जाता है Integrity".
नीचे SQL में विदेशी कुंजी का उदाहरण आरेख के साथ FOREIGN KEY के लिए उपरोक्त सभी बिंदुओं को सारांशित करता है

SQL में FOREIGN KEY कैसे बनाएं?
हम एक बना सकते हैं विदेशी कुंजी SQL सर्वर में 2 तरीके:
- SQL सर्वर प्रबंधन स्टूडियो
- T-SQL
SQL सर्वर प्रबंधन स्टूडियो
मूल तालिका: मान लीजिए, हमारे पास 'कोर्स' के रूप में एक मौजूदा पैरेंट टेबल है। Course_ID और Course_name दो कॉलम हैं, जिनमें Course_Id प्राथमिक कुंजी है।
बाल तालिका: हमें दूसरी टेबल को चाइल्ड टेबल के रूप में बनाना होगा। 'Course_ID' और 'Course_Strength' दो कॉलम के रूप में। हालाँकि, 'Course_ID' फॉरेन की होगी।
चरण 1) टेबल्स>नया>टेबल पर राइट क्लिक करें...
चरण 2) दो कॉलम नाम दर्ज करें जैसे 'Course_ID' और 'Course_Strength'। 'Course_Id' कॉलम पर राइट क्लिक करें। अब रिलेशनशिप पर क्लिक करें।
चरण 3) In 'विदेशी कुंजी संबंध,' क्लिक करें 'जोड़ना'
चरण 4) 'टेबल और कॉलम स्पेक' में क्लिक करें '…' आइकन
चरण 5) ड्रॉप डाउन से 'प्राथमिक कुंजी तालिका' को 'कोर्स' के रूप में चुनें और अब बनाई जा रही नई तालिका को 'विदेशी कुंजी तालिका' के रूप में चुनें।
चरण 6) 'प्राथमिक कुंजी तालिका' - 'Course_Id' कॉलम को 'प्राथमिक कुंजी तालिका' कॉलम के रूप में चुनें।
'विदेशी कुंजी तालिका' - 'कोर्स_आईडी' कॉलम को 'विदेशी कुंजी तालिका' कॉलम के रूप में चुनें। ओके पर क्लिक करें।
चरण 7) पर क्लिक करें जोड़ें.
चरण 8) तालिका को 'Course_Strength' नाम दें और क्लिक करें ठीक है.
रिजल्ट: हमने माता-पिता-बच्चे के बीच संबंध स्थापित किया है 'अवधि' और 'कोर्स_स्ट्रेंथ.'
T-SQL: T-SQL का उपयोग करके पैरेंट-चाइल्ड तालिका बनाएं
मूल तालिका: पुनर्विचार करें, हमारे पास एक मौजूदा पैरेंट टेबल है जिसका नाम 'कोर्स' है।
Course_ID और Course_name दो कॉलम हैं जिनमें Course_Id प्राथमिक कुंजी है।
बाल तालिका: हमें 'Course_Strength_TSQL' नाम से चाइल्ड टेबल के रूप में दूसरी टेबल बनाने की आवश्यकता है।
'Course_ID' और 'Course_Strength' को चाइल्ड टेबल Course_Strength_TSQL के लिए दो कॉलम के रूप में उपयोग किया जाएगा।' हालांकि, 'Course_ID' विदेशी कुंजी होगी।
नीचे FOREIGN KEY के साथ तालिका बनाने का सिंटैक्स दिया गया है
सिंटेक्स:
CREATE TABLE childTable ( column_1 datatype [ NULL |NOT NULL ], column_2 datatype [ NULL |NOT NULL ], ... CONSTRAINT fkey_name FOREIGN KEY (child_column1, child_column2, ... child_column_n) REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n) [ ON DELETE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ] [ ON UPDATE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ] );
उपरोक्त मापदंडों का विवरण इस प्रकार है:
- childTable उस तालिका का नाम है जिसे बनाया जाना है।
- column_1, column_2- तालिका में जोड़े जाने वाले स्तंभ।
- fkey_name- निर्मित की जाने वाली विदेशी कुंजी बाधा का नाम।
- child_column1, child_column2…child_column_n- parentTable में प्राथमिक कुंजी को संदर्भित करने के लिए chidTable कॉलम का नाम।
- पैरेंटटेबल- पैरेंट टेबल का नाम जिसकी कुंजी को चाइल्ड टेबल में संदर्भित किया जाना है।
- parent_column1, parent_column2, … parent_column3- मूल तालिका की प्राथमिक कुंजी बनाने वाले स्तंभ।
- ON DELETE. एक वैकल्पिक पैरामीटर। यह निर्दिष्ट करता है कि पैरेंट डेटा के डिलीट होने के बाद चाइल्ड डेटा का क्या होता है। इस पैरामीटर के कुछ मानों में NO ACTION, SET NULL, CASCADE, या SET DEFAULT शामिल हैं।
- ON UPDATE- एक वैकल्पिक पैरामीटर। यह निर्दिष्ट करता है कि पैरेंट डेटा पर अपडेट के बाद चाइल्ड डेटा का क्या होता है। इस पैरामीटर के कुछ मानों में NO ACTION, SET NULL, CASCADE, या SET DEFAULT शामिल हैं।
- NO ACTION- ON DELETE और ON UPDATE के साथ प्रयोग किया जाता है। इसका मतलब है कि पैरेंट डेटा के अपडेट या डिलीट होने के बाद चाइल्ड डेटा को कुछ नहीं होगा।
- CASCADE- ON DELETE और ON UPDATE के साथ प्रयोग किया जाता है। पैरेंट डेटा के डिलीट या अपडेट होने के बाद चाइल्ड डेटा को डिलीट या अपडेट किया जाएगा।
- SET NULL- ON DELETE और ON UPDATE के साथ प्रयोग किया जाता है। पैरेंट डेटा अपडेट या डिलीट होने के बाद चाइल्ड को शून्य पर सेट कर दिया जाएगा।
- SET DEFAULT- ON DELETE और ON UPDATE के साथ उपयोग किया जाता है। पैरेंट डेटा पर अपडेट या डिलीट के बाद चाइल्ड डेटा डिफ़ॉल्ट मानों पर सेट हो जाएगा।
आइए SQL में एक विदेशी कुंजी का उदाहरण देखें, जिससे एक कॉलम को विदेशी कुंजी के रूप में लेकर तालिका बनाई जा सके:
SQL में विदेशी कुंजी का उदाहरण
प्रश्न:
CREATE TABLE Course_Strength_TSQL ( Course_ID Int, Course_Strength Varchar(20) CONSTRAINT FK FOREIGN KEY (Course_ID) REFERENCES COURSE (Course_ID) )
चरण 1) निष्पादित करें पर क्लिक करके क्वेरी चलाएँ।
रिजल्ट: हमने माता-पिता-बच्चे के बीच संबंध स्थापित किया है 'अवधि' और 'कोर्स_स्ट्रेंथ_TSQL.'
ALTER TABLE का उपयोग करना
अब हम सीखेंगे कि SQL में विदेशी कुंजी का उपयोग कैसे करें और ALTER TABLE कथन का उपयोग करके SQL सर्वर में विदेशी कुंजी कैसे जोड़ें, हम नीचे दिए गए सिंटैक्स का उपयोग करेंगे:
ALTER TABLE childTable ADD CONSTRAINT fkey_name FOREIGN KEY (child_column1, child_column2, ... child_column_n) REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n);
ऊपर प्रयुक्त मापदंडों का विवरण इस प्रकार है:
- childTable उस तालिका का नाम है जिसे बनाया जाना है।
- column_1, column_2- तालिका में जोड़े जाने वाले स्तंभ।
- fkey_name- निर्मित की जाने वाली विदेशी कुंजी बाधा का नाम।
- child_column1, child_column2…child_column_n- parentTable में प्राथमिक कुंजी को संदर्भित करने के लिए chidTable कॉलम का नाम।
- पैरेंटटेबल- पैरेंट टेबल का नाम जिसकी कुंजी को चाइल्ड टेबल में संदर्भित किया जाना है।
- parent_column1, parent_column2, … parent_column3- मूल तालिका की प्राथमिक कुंजी बनाने वाले स्तंभ।
तालिका बदलें विदेशी कुंजी जोड़ें उदाहरण:
ALTER TABLE department ADD CONSTRAINT fkey_student_admission FOREIGN KEY (admission) REFERENCES students (admission);
हमने डिपार्टमेंट टेबल पर fkey_student_admission नाम से एक विदेशी कुंजी बनाई है। यह विदेशी कुंजी छात्रों की तालिका के एडमिशन कॉलम को संदर्भित करती है।
उदाहरण क्वेरी विदेशी कुंजी
सबसे पहले, आइए अपना पैरेंट टेबल डेटा, कोर्स देखें।
प्रश्न:
SELECT * from COURSE;
अब चाइल्ड टेबल में कुछ पंक्ति डालें: 'कोर्स_स्ट्रेंथ_TSQL.'
हम दो प्रकार की पंक्तियाँ सम्मिलित करने का प्रयास करेंगे
- पहला प्रकार, जिसके लिए चाइल्ड टेबल में Course_Id पैरेंट टेबल के Course_Id में मौजूद रहेगा। यानी Course_Id = 1 और 2
- दूसरा प्रकार, जिसके लिए चाइल्ड टेबल में Course_Id पैरेंट टेबल के Course_Id में मौजूद नहीं है। यानी Course_Id = 5
प्रश्न:
Insert into COURSE_STRENGTH values (1,'SQL'); Insert into COURSE_STRENGTH values (2,'Python'); Insert into COURSE_STRENGTH values (5,'PERL');
रिजल्ट: आइए अपने पैरेंट और चाइल्ड टेबल को देखने के लिए एक साथ क्वेरी चलाएं
Course_ID 1 और 2 वाली पंक्ति Course_strength तालिका में मौजूद है। जबकि, Course_ID 5 एक अपवाद है।
सारांश
- विदेशी कुंजी का प्रत्येक मान का भाग होना आवश्यक है प्राथमिक कुंजी अन्य तालिकाओं की.
- RSI MySQL विदेशी कुंजी उसी तालिका में किसी अन्य कॉलम को संदर्भित कर सकती है। इस संदर्भ को स्व-संदर्भ के रूप में जाना जाता है।
- SQL विदेशी कुंजी बाधा: इसका उपयोग तालिकाओं के बीच लिंक को सुरक्षित करने और विदेशी कुंजी कॉलम में डाले जाने वाले अमान्य डेटा के लिए किया जाता है।
- आप Create Table, Alter Table, या का उपयोग करके एक विदेशी कुंजी बना सकते हैं SQL सर्वर प्रबंधन स्टूडियो.
- प्राथमिक कुंजी और विदेशी कुंजी के बीच अंतर इस प्रकार है: यहाँ क्लिक करें