SQL में डेटा विश्लेषण करते समय, आपको अक्सर कई तालिकाओं को देखना और इच्छित परिणाम पाने के लिए उन्हें जोड़ना होगा। डेटा का विश्लेषण करने के लिए तालिकाओं को जोड़ना एक डेटा वैज्ञानिक के लिए भी आवश्यक कौशल है। इस ट्यूटोरियल में, आप PostgreSQL में किए जा सकने वाले विभिन्न प्रकार के joins के बारे में जानेंगे। आप पहले SQL में joins की प्रारंभिक अवधारणाओं का अध्ययन करेंगे, फिर विभिन्न प्रकार के joins और PostgreSQL में उनके syntaxes के बारे में सीखेंगे। अंत में, आप दो तालिकाओं का उपयोग करके विभिन्न प्रकार की join क्वेरीज़ चलाएंगे। साथ चलने के लिए, आपको SQL की बुनियादी जानकारी और PostgreSQL में सरल क्वेरी लिखना आता होना चाहिए। यदि आप इन्हें सीखने के संसाधन ढूंढ रहे हैं, तो निम्नलिखित उपयोगी हो सकते हैं -
SQL joins आपको साझा कॉलम का उपयोग करके दो या अधिक तालिकाओं से डेटा संयोजित करने देते हैं।
INNER JOIN केवल मिलते-जुलते rows लौटाता है, जबकि OUTER JOIN के प्रकार (LEFT, RIGHT, FULL) एक या दोनों पक्षों से non-matching rows भी रखते हैं और खाली जगहों को NULL से भरते हैं।
CROSS JOIN rows के सभी संभावित संयोजन (कार्तीय गुणनफल) बनाता है, और SELF JOIN आपको एक तालिका को उसी से जोड़ने देता है — एक ही डेटासेट के भीतर rows की तुलना करने में उपयोगी।
सेमी-जॉइन और एंटी-जॉइन, जिन्हें उप-क्वेरी के रूप में IN या NOT IN के साथ लिखा जाता है, एक तालिका से rows को दूसरी तालिका में शर्तों से मेल खाने या न मिलने के आधार पर फिल्टर करते हैं।
PostgreSQL में डेटाबेस वातावरण स्थापित करना
SQL joins की मूल बातें सीखने से पहले अपने विश्लेषण के लिए कुछ तालिकाएँ बनाना उपयोगी रहेगा। आपको कम से कम दो तालिकाओं की आवश्यकता होगी जिनमें कम से कम एक साझा कॉलम हो। यद्यपि आप एक ही तालिका पर self-join क्वेरी चला सकते हैं, फिलहाल हम उसे अनदेखा करते हैं।
आप सभी SQL ऑपरेशन pgAdmin नामक टूल पर कर सकते हैं जो आमतौर पर PostgreSQL की स्थापना के साथ आता है। आइए pgAdmin खोलें और तालिकाएँ बनाने के लिए एक डेटाबेस बनाएं (इसे अपनी पसंद का नाम दें) यदि आगे बढ़ने के लिए आपके पास मौजूदा डेटाबेस नहीं है। इसके बाद आप निम्नलिखित दो तालिकाएँ इन विनिर्देशों के साथ बना सकते हैं -
student_name (id, name)
student_stream (id, stream)
ध्यान दें कि दोनों तालिकाओं में id कॉलम समान है। आप तालिकाएँ बनाने के लिए निम्नलिखित CREATE कथनों का उपयोग कर सकते हैं -
student_name के लिए -
CREATETABLE student_name
(
id smallint,
name "char"[]);संचालित द्वारा
student_stream के लिए -
CREATETABLE student_stream
(
id smallint,
stream "char"[]);संचालित द्वारा
अब तालिकाओं में कुछ रिकॉर्ड डालते हैं।
student_name के लिए -
INSERTINTO student_name(id, name)VALUES(1,'Sayak');INSERTINTO student_name(id, name)VALUES(2,'Alex');INSERTINTO student_name(id, name)VALUES(3,'Sameer');INSERTINTO student_name(id, name)VALUES(4,'Rick');संचालित द्वारा
student_stream के लिए -
INSERTINTO student_stream(id, stream)VALUES(1,'CS');INSERTINTO student_stream(id, stream)VALUES(1,'IT');INSERTINTO student_stream(id, stream)VALUES(2,'ECE');INSERTINTO student_stream(id, stream)VALUES(9,'ECE');संचालित द्वारा
यदि आपने ऊपर की क्वेरीज़ बिना बदले चलायी हैं, तो तालिकाओं की प्रविष्टियाँ कुछ इस प्रकार होनी चाहिए -
अब आपके पास दो सरल तालिकाएँ तैयार हैं। आइए अब SQL joins की मूल बातें पढ़ते हैं।
SQL Joins - मूल बातें
SQL Joins आपको सामान्य पहचानकर्ताओं का उपयोग करके दो या अधिक (कभी-कभी केवल एक) तालिकाओं को समेकित करने देते हैं। ऊपर बनाई गई दो तालिकाओं का उदाहरण लें — दोनों तालिकाओं में id कॉलम समान है। आप SQL में joining की आवश्यकता पर सवाल कर सकते हैं। आइए संक्षेप में इस पर चर्चा करें।
Normalization प्रतिबंधों के कारण, आवश्यक सभी जानकारी एक ही तालिका में उपलब्ध न हो सकती है। स्थिरता बनाए रखने, अनावश्यकता कम करने और विभिन्न insertion व update विसंगतियों से बचने के लिए normalization न केवल वांछनीय बल्कि आवश्यक है। ऊपर की दो तालिकाओं पर फिर से विचार करें। मान लें कि आप यह जानना चाहते हैं कि Sayak ने किन streams में नामांकन किया है। इस प्रश्न का उत्तर पाने के लिए आपको दोनों तालिकाओं को जोड़ना होगा (उप-क्वेरी भी उपयोग की जा सकती हैं, पर अभी हम उसे नहीं देखते) और फिर तदनुसार आगे बढ़ना होगा।
दो तालिकाओं को जोड़ने के लिए दोनों के बीच कुछ न कुछ समान होना चाहिए। क्या इसका मतलब है कि दोनों तालिकाओं में कम से कम एक कॉलम का नाम एक जैसा होना चाहिए? या सटीक शर्त क्या है?
जिन तालिकाओं को आप जोड़ना चाहते हैं, उनमें ज़रूरी नहीं कि एक ही नाम का कॉलम हो, लेकिन तार्किक रूप से वे समान होने चाहिए, यानी उनके data-types समान होने चाहिए। आप ऐसी दो तालिकाओं को नहीं जोड़ सकते जिनमें कॉलम का नाम समान है लेकिन data-types अलग हैं। अब विभिन्न प्रकार के SQL joins का अध्ययन करते हैं।
SQL Joins के विभिन्न प्रकार
इस अनुभाग में, आप SQL Joins के कई प्रकारों का अध्ययन करेंगे -
INNER JOIN
Self-join
OUTER JOIN
LEFT JOIN
RIGHT JOIN
FULL JOIN
CROSS JOIN
Semi-join और Anti-join
PostgreSQL उपरोक्त सभी प्रकारों के लिए अलग-अलग कीवर्ड प्रदान करता है (सभी बड़े अक्षरों में लिखे गए)। आइए इन्हें एक-एक करके पढ़ते हैं। इसके लिए, आप पहले joins को दृश्य रूप में समझेंगे, और फिर PostgreSQL में संबंधित join क्वेरी चलाएँगे।
INNER JOIN
INNER JOIN को दृश्य रूप में समझने के लिए निम्नलिखित आरेख देखें -
ऊपर के उदाहरण में विचाराधीन कॉलम id है। INNER JOIN उन बाकी कॉलमों को अनदेखा करेगा जिनके मान दोनों तालिकाओं में सामान्य नहीं हैं। अब PostgreSQL में एक क्वेरी चलाते हैं जो student_name और student_stream — इन दो तालिकाओं के बीच INNER JOIN करती है।
निम्नलिखित क्वेरी चलाने पर, आपको ऊपर के चित्र जैसा परिणाम मिलता है -
SELECT s1.id, s1.name, s2.stream
FROM student_name AS s1
INNERJOIN student_stream AS s2
ON s1.id = s2.id;संचालित द्वारा
s1 और s2 दोनों तालिकाओं के उपनाम (aliases) हैं। आपने INNER JOIN के साथ ON कीवर्ड का उपयोग किया। क्वेरी को USING कीवर्ड का उपयोग करके भी चलाया जा सकता है -
SELECT s1.id, s1.name, s2.stream
FROM student_name AS s1
INNERJOIN student_stream AS s2
USING(id);संचालित द्वारा
Self Join आपको एक ही तालिका पर join करने देता है। लेकिन यह कहाँ अच्छा विकल्प हो सकता है? मान लें आपके पास निम्नलिखित कॉलम वाली एक तालिका है -
Country
Continent
अब आप ऐसे दो देशों की सूची बनाना चाहते हैं जिनके महाद्वीप समान हों। निम्नलिखित चित्र अपेक्षित परिणाम का आभास देता है -
OUTER JOIN
OUTER JOIN आगे तीन प्रकारों में बाँटा जा सकता है -
LEFT JOIN या Left Outer JOIN: निम्न आरेख SQL में LEFT JOIN का अच्छा विचार देता है -
ध्यान दें कि INNER JOIN के विपरीत, LEFT JOIN बाएँ (आपकी क्वेरी में निर्दिष्ट क्रम के सापेक्ष) तालिका से वे रिकॉर्ड भी लाता है जिनके लिए दाएँ तालिका में कोई matching प्रविष्टि नहीं है। इससे आपको पता चलता है कि Sameer और Rick ने किसी भी stream में नामांकन नहीं किया है। इसके लिए संबंधित क्वेरी होगी -
SELECT s1.id, s1.name, s2.stream
FROM student_name AS s1
LEFTJOIN student_stream AS s2
ON s1.id = s2.id;संचालित द्वारा
RIGHT JOIN या Right Outer JOIN: RIGHT JOIN, LEFT JOIN का ठीक उल्टा है -
RIGHT JOIN आपको उन stream(s) को खोजने में मदद करता है जिनके लिए किसी छात्र ने नामांकन नहीं किया है। इसकी क्वेरी होगी -
SELECT s1.id, s1.name, s2.stream
FROM student_name AS s1
RIGHTJOIN student_stream AS s2
ON s1.id = s2.id;संचालित द्वारा
FULL JOIN या Full Outer JOIN: FULL JOIN आपको LEFT JOIN और RIGHT JOIN दोनों को एक ही समेकन में जोड़ने देता है -
संबंधित क्वेरी होगी -
SELECT s1.id, s1.name, s2.stream
FROM student_name AS s1
FULLJOIN student_stream AS s2
ON s1.id = s2.id;संचालित द्वारा
ध्यान दें कि आप उपरोक्त सभी OUTER JOIN क्वेरीज़ USING कीवर्ड का उपयोग करके भी चला सकते हैं। अब CROSS JOIN का अध्ययन करते हैं।
CROSS JOIN
CROSS JOIN मूलतः दो तत्वों के बीच कार्तीय गुणनफल को SQL में अभिव्यक्त करता है। मान लें, आपको दो तालिकाओं या यहाँ तक कि एक ही तालिका के बीच सभी संभावित संयोजन चाहिए। इसे करने के लिए आपको CROSS JOIN की आवश्यकता होगी। निम्नलिखित चित्र इस अवधारणा को दृश्य रूप में प्रस्तुत करता है -
आपके पास इसे आज़माने के लिए दो तालिकाएँ पहले से हैं। student_name और student_stream तालिकाओं के id कॉलमों के बीच सभी संभावित संयोजन पाने के लिए, आप निम्नलिखित क्वेरी चला सकते हैं -
SELECT s1.id, s2.id
FROM student_name AS s1
CROSSJOIN student_stream AS s2;संचालित द्वारा
और आपको निम्नलिखित परिणाम मिलता है -
अब उन दो अन्य प्रकार के joins देखते हैं जिनके लिए PostgreSQL सीधे कीवर्ड प्रदान नहीं करता।
Semi-join और Anti-join
आइए ट्यूटोरियल में पहले बनाई गई तालिकाओं पर विचार करें:
Semi Join क्वेरी सामान्यतः उप-क्वेरी के रूप में चलाई जाती हैं, जहाँ rows पहली तालिका से उस शर्त (या शर्तों के समूह) के अनुरूप चुनी जाती हैं जो दूसरी तालिका में मेल खाती हैं। मान लें बाएँ तालिका पहली तालिका है, और दाएँ तालिका दूसरी तालिका।
Anti Join क्वेरी इसका ठीक उल्टा है। Anti Join में, rows पहली तालिका से उस शर्त (या शर्तों के समूह) के अनुरूप चुनी जाती हैं जो दूसरी तालिका में मेल नहीं खाती। इसे दृश्य रूप में समझने के लिए यहाँ एक आरेख है -
Semi Join को साकार करने की क्वेरी होगी -
select id, name
from student_name
where id IN(select id from student_stream where stream
IN('CS','IT','ECE'));संचालित द्वारा
इसी प्रकार, इस मामले में Anti Join को साकार करने वाली क्वेरी होगी -
select id, name
from student_name
where id NOTIN(select id from student_stream where stream
IN('CS','IT','ECE'));संचालित द्वारा
ध्यान दें कि ऊपर की क्वेरी में NOT का उपयोग किया गया है।
अपनी SQL Join महारत को अगले स्तर पर ले जाएँ
इस ट्यूटोरियल के लिए बस इतना ही। आपने इस ट्यूटोरियल में SQL Joins के कई प्रकारों के बारे में पढ़ा और उनके PostgreSQL syntaxes से भी परिचित हुए। यदि आप SQL Join पर कुछ चुनौतीपूर्ण अभ्यास करना चाहते हैं, तो आपको DataCamp का Joining Data in SQL कोर्स करना चाहिए। वास्तव में, इस ट्यूटोरियल को बनाने में कोर्स की सामग्रियों का संदर्भ लिया गया है।
SQL में डेटा विश्लेषण करते समय, आपको अक्सर कई तालिकाओं को देखना और इच्छित परिणाम पाने के लिए उन्हें जोड़ना होगा। डेटा का विश्लेषण करने के लिए तालिकाओं को जोड़ना एक डेटा वैज्ञानिक के लिए भी आवश्यक कौशल है। इस ट्यूटोरियल में, आप PostgreSQL में किए जा सकने वाले विभिन्न प्रकार के joins के बारे में जानेंगे। आप पहले SQL में joins की प्रारंभिक अवधारणाओं का अध्ययन करेंगे, फिर विभिन्न प्रकार के joins और PostgreSQL में उनके syntaxes के बारे में सीखेंगे। अंत में, आप दो तालिकाओं का उपयोग करके विभिन्न प्रकार की join क्वेरीज़ चलाएंगे। साथ चलने के लिए, आपको SQL की बुनियादी जानकारी और PostgreSQL में सरल क्वेरी लिखना आता होना चाहिए। यदि आप इन्हें सीखने के संसाधन ढूंढ रहे हैं, तो निम्नलिखित उपयोगी हो सकते हैं -
आइए शुरू करें।
संक्षेप में
SQL joins आपको साझा कॉलम का उपयोग करके दो या अधिक तालिकाओं से डेटा संयोजित करने देते हैं।
INNER JOINकेवल मिलते-जुलते rows लौटाता है, जबकिOUTER JOINके प्रकार (LEFT,RIGHT,FULL) एक या दोनों पक्षों से non-matching rows भी रखते हैं और खाली जगहों कोNULLसे भरते हैं।CROSS JOINrows के सभी संभावित संयोजन (कार्तीय गुणनफल) बनाता है, औरSELF JOINआपको एक तालिका को उसी से जोड़ने देता है — एक ही डेटासेट के भीतर rows की तुलना करने में उपयोगी।सेमी-जॉइन और एंटी-जॉइन, जिन्हें उप-क्वेरी के रूप में
INयाNOT INके साथ लिखा जाता है, एक तालिका से rows को दूसरी तालिका में शर्तों से मेल खाने या न मिलने के आधार पर फिल्टर करते हैं।PostgreSQL में डेटाबेस वातावरण स्थापित करना
SQL joins की मूल बातें सीखने से पहले अपने विश्लेषण के लिए कुछ तालिकाएँ बनाना उपयोगी रहेगा। आपको कम से कम दो तालिकाओं की आवश्यकता होगी जिनमें कम से कम एक साझा कॉलम हो। यद्यपि आप एक ही तालिका पर self-join क्वेरी चला सकते हैं, फिलहाल हम उसे अनदेखा करते हैं।
आप सभी SQL ऑपरेशन
pgAdminनामक टूल पर कर सकते हैं जो आमतौर पर PostgreSQL की स्थापना के साथ आता है। आइएpgAdminखोलें और तालिकाएँ बनाने के लिए एक डेटाबेस बनाएं (इसे अपनी पसंद का नाम दें) यदि आगे बढ़ने के लिए आपके पास मौजूदा डेटाबेस नहीं है। इसके बाद आप निम्नलिखित दो तालिकाएँ इन विनिर्देशों के साथ बना सकते हैं -ध्यान दें कि दोनों तालिकाओं में
idकॉलम समान है। आप तालिकाएँ बनाने के लिए निम्नलिखितCREATEकथनों का उपयोग कर सकते हैं -अब तालिकाओं में कुछ रिकॉर्ड डालते हैं।
यदि आपने ऊपर की क्वेरीज़ बिना बदले चलायी हैं, तो तालिकाओं की प्रविष्टियाँ कुछ इस प्रकार होनी चाहिए -
अब आपके पास दो सरल तालिकाएँ तैयार हैं। आइए अब SQL joins की मूल बातें पढ़ते हैं।
SQL Joins - मूल बातें
SQL Joins आपको सामान्य पहचानकर्ताओं का उपयोग करके दो या अधिक (कभी-कभी केवल एक) तालिकाओं को समेकित करने देते हैं। ऊपर बनाई गई दो तालिकाओं का उदाहरण लें — दोनों तालिकाओं में
idकॉलम समान है। आप SQL में joining की आवश्यकता पर सवाल कर सकते हैं। आइए संक्षेप में इस पर चर्चा करें।Normalization प्रतिबंधों के कारण, आवश्यक सभी जानकारी एक ही तालिका में उपलब्ध न हो सकती है। स्थिरता बनाए रखने, अनावश्यकता कम करने और विभिन्न insertion व update विसंगतियों से बचने के लिए normalization न केवल वांछनीय बल्कि आवश्यक है। ऊपर की दो तालिकाओं पर फिर से विचार करें। मान लें कि आप यह जानना चाहते हैं कि
Sayakने किन streams में नामांकन किया है। इस प्रश्न का उत्तर पाने के लिए आपको दोनों तालिकाओं को जोड़ना होगा (उप-क्वेरी भी उपयोग की जा सकती हैं, पर अभी हम उसे नहीं देखते) और फिर तदनुसार आगे बढ़ना होगा।दो तालिकाओं को जोड़ने के लिए दोनों के बीच कुछ न कुछ समान होना चाहिए। क्या इसका मतलब है कि दोनों तालिकाओं में कम से कम एक कॉलम का नाम एक जैसा होना चाहिए? या सटीक शर्त क्या है?
जिन तालिकाओं को आप जोड़ना चाहते हैं, उनमें ज़रूरी नहीं कि एक ही नाम का कॉलम हो, लेकिन तार्किक रूप से वे समान होने चाहिए, यानी उनके data-types समान होने चाहिए। आप ऐसी दो तालिकाओं को नहीं जोड़ सकते जिनमें कॉलम का नाम समान है लेकिन data-types अलग हैं। अब विभिन्न प्रकार के SQL joins का अध्ययन करते हैं।
SQL Joins के विभिन्न प्रकार
इस अनुभाग में, आप SQL Joins के कई प्रकारों का अध्ययन करेंगे -
PostgreSQL उपरोक्त सभी प्रकारों के लिए अलग-अलग कीवर्ड प्रदान करता है (सभी बड़े अक्षरों में लिखे गए)। आइए इन्हें एक-एक करके पढ़ते हैं। इसके लिए, आप पहले joins को दृश्य रूप में समझेंगे, और फिर PostgreSQL में संबंधित join क्वेरी चलाएँगे।
INNER JOIN
INNER JOINको दृश्य रूप में समझने के लिए निम्नलिखित आरेख देखें -ऊपर के उदाहरण में विचाराधीन कॉलम
idहै।INNER JOINउन बाकी कॉलमों को अनदेखा करेगा जिनके मान दोनों तालिकाओं में सामान्य नहीं हैं। अब PostgreSQL में एक क्वेरी चलाते हैं जो student_name और student_stream — इन दो तालिकाओं के बीचINNER JOINकरती है।निम्नलिखित क्वेरी चलाने पर, आपको ऊपर के चित्र जैसा परिणाम मिलता है -
s1औरs2दोनों तालिकाओं के उपनाम (aliases) हैं। आपनेINNER JOINके साथONकीवर्ड का उपयोग किया। क्वेरी कोUSINGकीवर्ड का उपयोग करके भी चलाया जा सकता है -Self Join आपको एक ही तालिका पर join करने देता है। लेकिन यह कहाँ अच्छा विकल्प हो सकता है? मान लें आपके पास निम्नलिखित कॉलम वाली एक तालिका है -
अब आप ऐसे दो देशों की सूची बनाना चाहते हैं जिनके महाद्वीप समान हों। निम्नलिखित चित्र अपेक्षित परिणाम का आभास देता है -
OUTER JOIN
OUTER JOINआगे तीन प्रकारों में बाँटा जा सकता है -LEFT JOIN या Left Outer JOIN: निम्न आरेख SQL में
LEFT JOINका अच्छा विचार देता है -ध्यान दें कि
INNER JOINके विपरीत,LEFT JOINबाएँ (आपकी क्वेरी में निर्दिष्ट क्रम के सापेक्ष) तालिका से वे रिकॉर्ड भी लाता है जिनके लिए दाएँ तालिका में कोई matching प्रविष्टि नहीं है। इससे आपको पता चलता है किSameerऔरRickने किसी भी stream में नामांकन नहीं किया है। इसके लिए संबंधित क्वेरी होगी -RIGHT JOIN या Right Outer JOIN:
RIGHT JOIN,LEFT JOINका ठीक उल्टा है -RIGHT JOINआपको उन stream(s) को खोजने में मदद करता है जिनके लिए किसी छात्र ने नामांकन नहीं किया है। इसकी क्वेरी होगी -FULL JOIN या Full Outer JOIN:
FULL JOINआपकोLEFT JOINऔरRIGHT JOINदोनों को एक ही समेकन में जोड़ने देता है -संबंधित क्वेरी होगी -
ध्यान दें कि आप उपरोक्त सभी
OUTER JOINक्वेरीज़USINGकीवर्ड का उपयोग करके भी चला सकते हैं। अबCROSS JOINका अध्ययन करते हैं।CROSS JOIN
CROSS JOINमूलतः दो तत्वों के बीच कार्तीय गुणनफल को SQL में अभिव्यक्त करता है। मान लें, आपको दो तालिकाओं या यहाँ तक कि एक ही तालिका के बीच सभी संभावित संयोजन चाहिए। इसे करने के लिए आपकोCROSS JOINकी आवश्यकता होगी। निम्नलिखित चित्र इस अवधारणा को दृश्य रूप में प्रस्तुत करता है -आपके पास इसे आज़माने के लिए दो तालिकाएँ पहले से हैं।
student_nameऔरstudent_streamतालिकाओं केidकॉलमों के बीच सभी संभावित संयोजन पाने के लिए, आप निम्नलिखित क्वेरी चला सकते हैं -और आपको निम्नलिखित परिणाम मिलता है -
अब उन दो अन्य प्रकार के joins देखते हैं जिनके लिए PostgreSQL सीधे कीवर्ड प्रदान नहीं करता।
Semi-join और Anti-join
आइए ट्यूटोरियल में पहले बनाई गई तालिकाओं पर विचार करें:
Semi Joinक्वेरी सामान्यतः उप-क्वेरी के रूप में चलाई जाती हैं, जहाँ rows पहली तालिका से उस शर्त (या शर्तों के समूह) के अनुरूप चुनी जाती हैं जो दूसरी तालिका में मेल खाती हैं। मान लें बाएँ तालिका पहली तालिका है, और दाएँ तालिका दूसरी तालिका।Anti Joinक्वेरी इसका ठीक उल्टा है।Anti Joinमें, rows पहली तालिका से उस शर्त (या शर्तों के समूह) के अनुरूप चुनी जाती हैं जो दूसरी तालिका में मेल नहीं खाती। इसे दृश्य रूप में समझने के लिए यहाँ एक आरेख है -Semi Joinको साकार करने की क्वेरी होगी -इसी प्रकार, इस मामले में
Anti Joinको साकार करने वाली क्वेरी होगी -ध्यान दें कि ऊपर की क्वेरी में
NOTका उपयोग किया गया है।अपनी SQL Join महारत को अगले स्तर पर ले जाएँ
इस ट्यूटोरियल के लिए बस इतना ही। आपने इस ट्यूटोरियल में SQL Joins के कई प्रकारों के बारे में पढ़ा और उनके PostgreSQL syntaxes से भी परिचित हुए। यदि आप SQL Join पर कुछ चुनौतीपूर्ण अभ्यास करना चाहते हैं, तो आपको DataCamp का Joining Data in SQL कोर्स करना चाहिए। वास्तव में, इस ट्यूटोरियल को बनाने में कोर्स की सामग्रियों का संदर्भ लिया गया है।
अपने प्रश्न मुझे
Commentsसेक्शन में बताएं।