जॉइन ऑपरेटर की उपस्थिति के लिए आवश्यक शर्तें

जैसे-जैसे तालिकाओं में डेटा की मात्रा बढ़ती है, उनमें अक्सर डुप्लिकेट मान दिखाई देते हैं। उदाहरण के लिए, उत्पाद तालिका में ब्रांड नाम हैं। जो कभी-कभी दोहराए जाते हैं। उनके लिए एक अलग ब्रांड तालिका होना उपयोगी होगा, जिसमें उदाहरण के लिए, ऐसा डेटा होगा:

  • आईडी - ब्रांड आईडी;
  • नाम - ब्रांड नाम;
  • company_owner - ब्रांड की कंपनी के मालिक का नाम;
  • company_contacts - ब्रांड के मालिक की कंपनी के संपर्क।

फिर हम पतों की एक तालिका बनाना चाहेंगे जिसमें हम सभी पते डाल सकें:

  • आईडी - आईडी-पते;
  • देश;
  • क्षेत्र;
  • शहर;
  • गली;
  • घर;
  • ज़िप।

इसके अलावा, इस तालिका में न केवल ब्रांड-स्वामित्व वाली कंपनियों के पते, बल्कि ग्राहकों और कर्मचारियों के पते भी संग्रहीत करना संभव होगा। और यह दृष्टिकोण केवल डेटा की मात्रा (तालिकाओं में पंक्तियों की संख्या) में वृद्धि का परिणाम है। इससे तालिकाओं में डेटा में हेरफेर करना और उनकी अखंडता बनाए रखना आसान हो जाता है।

जब आपके पास 5 कर्मचारी हों, तो आप बस व्यवसाय कॉलम में उनका व्यवसाय दर्ज कर सकते हैं । यदि आपकी कंपनी में 5 हजार कर्मचारी हैं, तो आपको x पेशों और उनकी जिम्मेदारियों की सूची के साथ एक तालिका की आवश्यकता है।

जावा भाषा में, वैसे, कुछ समान है। यदि आपके पास एक विधि में बहुत सारे कोड हैं, तो इसे कई तरीकों में तोड़ने की इच्छा है। यदि किसी कक्षा में कई विधियाँ हैं, तो मैं इसे कई वर्गों में तोड़ना चाहता हूँ।

इसीलिए बड़े डेटाबेस में हजारों टेबल होते हैं। और लगभग सभी प्रश्नों को एक साथ कई तालिकाओं पर निष्पादित किया जाता है। और तीन तालिकाओं की पंक्तियों का कार्टेशियन उत्पाद जिसमें से प्रत्येक में एक हजार रिकॉर्ड हैं, पहले से ही एक अरब पंक्तियाँ हैं।

लेकिन WHERE का उपयोग करके एक अरब पंक्तियों को फ़िल्टर करने में घंटों लग सकते हैं। इसलिए, SQL भाषा के रचनाकारों ने अपना समाधान पेश किया - JOIN ऑपरेटर।

जॉइन ऑपरेटर का परिचय

JOIN ऑपरेटर का उपयोग SQL सर्वर को स्पष्ट रूप से यह बताने के लिए किया जाता है कि हमें सभी के लिए तालिकाओं की सभी पंक्तियों के कार्टेशियन उत्पाद की आवश्यकता नहीं है, लेकिन अलग-अलग तालिकाओं की पंक्तियों का एक स्मार्ट ग्लूइंग जो एक आईडी (या किसी अन्य तरीके से) का उपयोग करके एक दूसरे को संदर्भित करता है। . JOIN ऑपरेटर का उपयोग करके प्रोसेसिंग टेबल जॉइन के लिए सर्वर के पास एक अलग एल्गोरिथ्म है, जो इस तरह के ऑपरेशन को बहुत तेजी से करने की अनुमति देता है। जॉइन ऑपरेटर का सामान्य रूप इस प्रकार है:

table 1 JOIN table 2 ON condition

यह यहाँ कहता है कि आपको तालिका तालिका 1 और तालिका 2 को एक तालिका में संयोजित करने की आवश्यकता है, और शर्त को सम्मिलित मानदंड के रूप में उपयोग करें ।

आइए अपना पुराना उदाहरण लें:

SELECT * FROM employee, task WHERE emploee.id = task.emploee_id

और जॉइन ऑपरेटर का उपयोग करके इसे फिर से लिखें:

SELECT * FROM employee JOIN task ON emploee.id = task.emploee_id

हमारे मामले में दोनों प्रश्न समान परिणाम देंगे, लेकिन यह केवल इसलिए है क्योंकि प्रश्न बहुत सरल हैं। भविष्य में, WHERE आपको बिल्कुल पंक्ति फ़िल्टर बनाने की अनुमति देता है, और ON के बाद निर्दिष्ट एक आपको तालिकाओं को जोड़ने के लिए जटिल स्क्रिप्ट लिखने की अनुमति देता है। JOIN स्टेटमेंट का उपयोग करते समय आप उपनाम (तालिका उपनाम) का भी उपयोग कर सकते हैं। उदाहरण:

SELECT * FROM employee e JOIN task t ON e.id = t.emploee_id