खंड के साथ एसक्यूएल

Khanda Ke Satha Esakyu Ela



जब आप एसक्यूएल और डेटाबेस प्रश्नों में गहराई से उतरते हैं, तो सबसे शक्तिशाली और अविश्वसनीय सुविधाओं में से एक जो आपके सामने आएगी वह है कॉमन टेबल एक्सप्रेशन जिसे आमतौर पर सीटीई के रूप में जाना जाता है।

SQL में,With क्लॉज को CTE के नाम से भी जाना जाता है। यह एक शक्तिशाली सुविधा है जो हमें किसी क्वेरी के भीतर अस्थायी परिणाम सेट बनाने में सक्षम बनाती है। सीटीई की एक प्रमुख भूमिका जटिल प्रश्नों को छोटी और पुन: प्रयोज्य उपश्रेणियों में सरल बनाना है। यह लंबे समय तक कोड को अधिक पठनीय और रखरखाव योग्य बनाने में मदद करता है।

इस ट्यूटोरियल में हमारे साथ जुड़ें क्योंकि हम विद क्लॉज और समर्थित कार्यक्षमता का उपयोग करके कॉमन टेबल एक्सप्रेशंस की कार्यप्रणाली का पता लगाते हैं।







आवश्यकताएं:

प्रदर्शन उद्देश्यों के लिए, हम निम्नलिखित का उपयोग करेंगे:



  1. MySQL संस्करण 8.0 और उससे ऊपर
  2. सकीला नमूना डेटाबेस

दी गई आवश्यकताओं को पूरा करने के साथ, हम सीटीई और विद क्लॉज के बारे में अधिक जानने के लिए आगे बढ़ सकते हैं।



खंड के साथ एसक्यूएल

विद क्लॉज हमें एक या अधिक अस्थायी परिणाम सेट को परिभाषित करने की अनुमति देता है जिन्हें सामान्य तालिका अभिव्यक्ति के रूप में जाना जाता है।





हम किसी अन्य तालिका या परिणाम सेट की तरह मुख्य क्वेरी में परिणामी सीटीई का संदर्भ दे सकते हैं। यह मॉड्यूलर SQL क्वेरीज़ बनाने में महत्वपूर्ण भूमिका निभाता है।

हालाँकि CTE का सिंटैक्स आपकी आवश्यकताओं के आधार पर थोड़ा भिन्न हो सकता है, निम्नलिखित SQL में CTE का मूल सिंटैक्स दिखाता है:



सीटीई_नाम के साथ (कॉलम1, कॉलम2, ...) एएस (
- सीटीई क्वेरी
चुनना ...
से ...
कहाँ ...
)
-- मुख्य प्रश्न
चुनना ...
से ...
Cte_name पर शामिल हों...
कहाँ ...

हम with कीवर्ड से शुरू करते हैं जो SQL डेटाबेस को बताता है जिसे हम CTE बनाना और उपयोग करना चाहते हैं।

इसके बाद, हम CTE के लिए नाम निर्दिष्ट करते हैं जो हमें अन्य प्रश्नों में इसका संदर्भ देने की अनुमति देता है।

यदि CTE में कॉलम उपनाम शामिल हैं तो हम कॉलम नामों की एक वैकल्पिक सूची भी निर्दिष्ट करते हैं।

इसके बाद, हम CTE क्वेरी को परिभाषित करने के लिए आगे बढ़ते हैं। इसमें वे सभी कार्य या डेटा शामिल हैं जिन्हें CTE कोष्ठकों की एक जोड़ी में संलग्न करता है।

अंत में, हम मुख्य क्वेरी निर्दिष्ट करते हैं जो CTE को संदर्भित करती है।

उदाहरण उपयोग:

सीटीई का उपयोग करने और उसके साथ काम करने के तरीके को समझने का सबसे अच्छा तरीका एक व्यावहारिक उदाहरण देखना है।

उदाहरण के लिए सकीला नमूना डेटाबेस लें। मान लीजिए कि हम सबसे अधिक किराये वाले शीर्ष 10 ग्राहकों को ढूंढना चाहते हैं।

निम्नलिखित दिखाए गए CTE पर एक नज़र डालें।

उच्चतम किराये की संख्या वाले शीर्ष 10 ग्राहकों को खोजने के लिए क्लॉज के साथ SQL का उपयोग करना:

ग्राहक किराये के साथ एएस (
रेंटल_काउंट के रूप में c.customer_id, c.first_name, c.last_name, COUNT(r.rental_id) चुनें
ग्राहक से सी
c.customer_id = r.customer_id पर किराये r में शामिल हों
c.customer_id, c.first_name, c.last_name द्वारा समूह बनाएं
)
चुनना *
ग्राहक किराये से
रेंटल_काउंट DESC द्वारा ऑर्डर करें
सीमा 10;

दिए गए उदाहरण में, हम with कीवर्ड का उपयोग करके एक नए CTE को परिभाषित करके शुरू करते हैं जिसके बाद वह नाम आता है जिसे हम CTE को निर्दिष्ट करना चाहते हैं। इस मामले में, हम इसे 'ग्राहक किराया' कहते हैं।

सीटीई निकाय के अंदर, हम ग्राहक और किराये की तालिका को जोड़कर प्रत्येक ग्राहक के लिए किराये की गणना करते हैं।

अंत में, मुख्य क्वेरी में, हम CTE से सभी कॉलमों का चयन करते हैं, किराये की गिनती (अवरोही क्रम) के आधार पर परिणामों को क्रमबद्ध करते हैं, और आउटपुट को केवल शीर्ष 10 पंक्तियों तक सीमित करते हैं।

यह हमें ग्राहकों को सबसे अधिक संख्या में किराये के साथ लाने की अनुमति देता है जैसा कि निम्नलिखित आउटपुट में दिखाया गया है:

  नाम विवरण की एक तालिका स्वचालित रूप से उत्पन्न होती है

पुनरावर्ती सीटीई

कुछ अन्य मामलों में, आप पदानुक्रमित डेटा संरचनाओं से निपट सकते हैं। यहीं पर पुनरावर्ती CTE चलन में आते हैं।

आइए उदाहरण के लिए एक ऐसा मामला लें जहां हम पदानुक्रमित संगठन को नेविगेट करना चाहते हैं या पेड़ जैसी संरचना का प्रतिनिधित्व करना चाहते हैं। हम पुनरावर्ती CTE बनाने के लिए विद रिकर्सिव कीवर्ड का उपयोग कर सकते हैं।

चूँकि कोई पदानुक्रमित डेटा नहीं है जिसका उपयोग हम सकीला डेटाबेस में पुनरावर्ती सीटीई को प्रदर्शित करने के लिए कर सकते हैं, आइए एक बुनियादी उदाहरण स्थापित करें।

टेबल विभाग बनाएं (
विभाग_आईडी INT प्राथमिक कुंजी ऑटो_वृद्धि,
विभाग_नाम VARCHAR(255) शून्य नहीं,
अभिभावक_विभाग_आईडी INT,
विदेशी कुंजी (मूल_विभाग_आईडी) संदर्भ विभाग(विभाग_आईडी)
);
विभाग में सम्मिलित करें (विभाग_नाम, मूल_विभाग_आईडी)
मान
('कॉर्पोरेट', शून्य),
('वित्त', 1),
('एचआर', 1),
('लेखा', 2),
'भर्ती', 3),
('पेरोल', 4);

इस मामले में, हमारे पास कुछ यादृच्छिक डेटा के साथ एक नमूना 'विभाग' तालिका है। विभागों की पदानुक्रमित संरचना को खोजने के लिए, हम निम्नानुसार पुनरावर्ती CTE का उपयोग कर सकते हैं:

पुनरावर्ती विभागपदानुक्रम के साथ (
विभाग_आईडी, विभाग_नाम, मूल_विभाग_आईडी चुनें
विभाग से
जहां पेरेंट_डिपार्टमेंट_आईडी शून्य है
संघ सब
d.department_id, d.department_name, d.parent_department_id चुनें
विभाग से डी
विभागपदानुक्रम में शामिल हों dh ON d.parent_department_id = dh.department_id
)
चुनना *
विभागपदानुक्रम से;

इस मामले में, पुनरावर्ती CTE एक NULL 'parent_department_id' (रूट विभाग) वाले विभागों से शुरू होता है और पुनरावर्ती रूप से बाल विभागों को पुनः प्राप्त करता है।

निष्कर्ष

इस ट्यूटोरियल में, हमने with कीवर्ड के साथ काम करने के तरीके को समझकर कॉमन टेबल एक्सप्रेशन जैसे SQL डेटाबेस में सबसे मौलिक और उपयोगी सुविधाओं के बारे में सीखा।