SQL
संबंधपरक बीजगणित
खोज…
अवलोकन
रिलेशनल अलजेब्रा एक पूर्ण विकसित SQL भाषा नहीं है, बल्कि रिलेशनल प्रोसेसिंग की सैद्धांतिक समझ हासिल करने का एक तरीका है। जैसे कि इसे टेबल, रिकॉर्ड और फ़ील्ड जैसे भौतिक संस्थाओं के संदर्भ नहीं बनाना चाहिए; यह संबंधों, टुपल्स और विशेषताओं जैसे अमूर्त निर्माणों का संदर्भ देना चाहिए। यह कहते हुए कि, मैं इस दस्तावेज़ में शैक्षणिक शब्दों का उपयोग नहीं करूँगा और अधिक व्यापक रूप से ज्ञात सामान्य शब्दों - टेबल, रिकॉर्ड और फ़ील्ड्स पर चिपका रहूँगा।
आरंभ करने से पहले संबंधपरक बीजगणित के कुछ नियम:
- रिलेशनल बीजगणित में उपयोग किए जाने वाले ऑपरेटर व्यक्तिगत रिकॉर्ड के बजाय पूरे टेबल पर काम करते हैं।
- संबंधपरक अभिव्यक्ति का परिणाम हमेशा एक तालिका होगी (इसे क्लोजर प्रॉपर्टी कहा जाता है)
इस दस्तावेज़ के दौरान मैं निम्नलिखित दो तालिकाओं का उल्लेख करूंगा:
चुनते हैं
चयन ऑपरेटर मुख्य तालिका के एक सबसेट देता है।
चयन <table> जहां <हालत>
उदाहरण के लिए, अभिव्यक्ति की जांच करें:
उन लोगों का चयन करें जहां विभाग = 2
इसे इस प्रकार लिखा जा सकता है:
इसका परिणाम तालिका में होगा जिसका रिकॉर्ड पीपल तालिका में सभी रिकॉर्ड शामिल हैं जहां विभागीय मूल्य 2 के बराबर है:
शर्तों को भी अभिव्यक्ति को प्रतिबंधित करने के लिए शामिल किया जा सकता है:
उन लोगों का चयन करें जहां StartYear> 2005 और DepartmentID = 2
परियोजना
प्रोजेक्ट ऑपरेटर एक टेबल से अलग फील्ड वैल्यू लौटाएगा।
प्रोजेक्ट <तालिका> ओवर <फ़ील्ड सूची>
उदाहरण के लिए, निम्नलिखित अभिव्यक्ति की जांच करें:
StartYear पर प्रोजेक्ट लोग
इसे इस प्रकार लिखा जा सकता है:
इसके परिणामस्वरूप एक तालिका होगी जिसमें पीपल तालिका के प्रारंभ क्षेत्र के भीतर अलग-अलग मूल्य शामिल हैं।
परिणामी तालिका से डुप्लिकेट मान को हटा दिया जाता है क्योंकि क्लोजर प्रॉपर्टी एक रिलेशनल टेबल बनाता है: एक रिलेशनल टेबल में सभी रिकॉर्ड अलग-अलग होना आवश्यक है।
यदि फ़ील्ड सूची में एक से अधिक फ़ील्ड शामिल हैं, तो परिणामी तालिका इन क्षेत्रों का एक अलग संस्करण है।
StartYear से अधिक परियोजना लोग, DepartmentID वापस आ जाएगी:
2006 के प्रारंभ और 1 विभाग के दोहराव के कारण एक रिकॉर्ड हटा दिया गया है।
देने
संबंधपरक अभिव्यक्तियों को एक साथ दिए गए कीवर्ड का उपयोग करके, या एक अभिव्यक्ति को दूसरे के भीतर एम्बेड करके व्यक्तिगत अभिव्यक्तियों का नामकरण किया जा सकता है।
<संबंधपरक बीजगणित अभिव्यक्ति> देने वाला <उपनाम नाम>
उदाहरण के लिए, निम्नलिखित भावों पर विचार करें:
उन लोगों का चयन करें जहां विभागीय = 2 ए दे रहा है
प्रोजेक्ट ए ओवर पर्सननेम बी दे रहा है
यह नीचे तालिका बी में परिणाम देगा, तालिका ए पहली अभिव्यक्ति का परिणाम होगा।
पहली अभिव्यक्ति का मूल्यांकन किया जाता है और परिणामी तालिका को उर्फ ए दिया जाता है। इस तालिका को तब दूसरी अभिव्यक्ति के भीतर उपयोग किया जाता है ताकि अंतिम तालिका को बी के उपनाम के साथ दिया जा सके।
इस अभिव्यक्ति को लिखने का एक और तरीका है, दूसरे एक्सप्रेशन में तालिका उपनाम नाम को ब्रैकेट के भीतर संलग्न पहली अभिव्यक्ति के पूरे पाठ के साथ बदलना है:
परियोजना (चुनिंदा लोग जहां DepartmentID = 2) PERSONNAME देने बी से अधिक
इसे नेस्टेड एक्सप्रेशन कहा जाता है।
प्राकृतिक जोइन
तालिकाओं के बीच साझा किए गए एक सामान्य फ़ील्ड का उपयोग करके एक प्राकृतिक जुड़ाव दो तालिकाओं को एक साथ जोड़ता है।
<table 1> और <तालिका 2> जहां <क्षेत्र 1> = <क्षेत्र 2> में शामिल होने के
यह मानते हुए कि <फ़ील्ड 1> <तालिका 1> और <फ़ील्ड 2> <तालिका 2> में है।
उदाहरण के लिए, निम्नलिखित ज्वाइन एक्सप्रेशन संबंधित विभागों में IDID और ID कॉलम के आधार पर लोगों और विभागों में शामिल होंगे:
उन लोगों और विभागों में शामिल हों जहां डिपार्टमेंट = आईडी
ध्यान दें कि केवल पीपुल टेबल से डिपार्टमेंटआईडी दिखाया गया है और डिपार्टमेंट टेबल से आईडी नहीं। केवल उन क्षेत्रों में से एक की तुलना की जानी चाहिए, जो आम तौर पर ज्वाइन ऑपरेशन में पहली टेबल से फील्ड का नाम होता है।
हालांकि इस उदाहरण में नहीं दिखाया गया है कि यह संभव है कि तालिकाओं में शामिल होने से दो क्षेत्रों में एक ही शीर्षक हो सकता है। उदाहरण के लिए, अगर मैं इस्तेमाल किया था शीर्षक नाम PERSONNAME और विभाग क्षेत्रों की पहचान करने (यानी व्यक्ति का नाम और विभाग का नाम पहचान करने के लिए)। People.Name और Departments.Name: जब इस स्थिति उत्पन्न होती है हम डॉट नोटेशन का उपयोग कर फ़ील्ड नाम अर्हता प्राप्त करने के तालिका नाम का उपयोग
चयन और परियोजना के साथ संयुक्त जुड़ने का उपयोग सूचना खींचने के लिए एक साथ किया जा सकता है:
उन लोगों और विभागों में शामिल हों जहां डिपार्टमेंट आईडी = ए दे रहा है
चयन एक जहां StartYear = 2005 और विभाग = 'उत्पादन' देने के बी
प्रोजेक्ट बी ओवर पर्सननेम सी दे रहा है
या एक संयुक्त अभिव्यक्ति के रूप में:
प्रोजेक्ट ( चयन करें (लोगों और विभागों से जुड़ें जहां डिपार्टमेंट आईडी = आईडी) जहां StartYear = 2005 और Dept = 'Production') पर्सननेम सी पर दे