CTEs (Common Table Expressions) sql In Hindi
एसक्यूएल डेटाबेस मैनेजमेंट सिस्टम मे एक कॉमन टेबल एक्सप्रेशन CT एक्सप्रेशन या CTE कमांड स्टेटमेंट एक टेम्पररी डेटाबेस यूजर क्वेरी जनरेटेड टेबल रिजल्ट आउटपुट फॉर्मेट है, जिसे डेटाबेस यूजर SELECT, INSERT, UPDATE, या DELETE कमांड स्टेटमेंट के रूप में अप्लाई कर सकते हैं। सामान्यता यह एक नेम्ड सबक्वेरी डाटा टाइप है. जिसे एक ही डेटाबेस क्वेरी में मल्टीप्ल टाइम यूज़ या अप्लाई किया जा सकता है। एसक्यूएल डेटाबेस टेबल में CTEs फीचर्स काम्प्लेक्स डेटाबेस टेबल क्वेरी को मॉड्यूलर फॉर्मेट में दोबारा यूज़ होने वाले टेबल कंपोनेंट्स को स्माल मॉडुल में ब्रेक कर टेबल क्वेरी की रीडेबिलिटी और मेंटेनेबिलिटी को इम्प्रूव कर सकते हैं।

CTEs फीचर्स को WITH कीवर्ड के साथ टेबल में अप्लाई करके यूज़ किया जाता है, और इन्हें एक टेम्पररी व्यू के रूप में ट्रीट किया जा सकता है. जो सिर्फ़ एक डेटाबेस टेबल क्वेरी एग्जीक्यूशन के समय तक एक्सिस्ट रहते हैं।
CTE syntax in SQL databases.
WITH cte_emp_name AS (
//CTE query statement
SELECT column1, column2, …
FROM table_name
WHERE conditions
)
// Default query use in a CTE
SELECT * FROM cte_emp_name;
Element of a CTE query in SQL.
- cte_name – यहाँ CTE का नाम डिफाइन है, जिसे डेटाबेस टेबल में मेन क्वेरी के रूप में यूज़ किया जा सकता है।
- CTE query – यह डेटाबेस टेबल में वह सबक्वेरी है, जो CTE वैल्यू को डिफाइन करती है। यहाँ यह यूजर डिफाइन कोई भी वैलिड SQL लॉजिक या SELECT स्टेटमेंट या टेबल एक्सप्रेशन हो सकता है।
- Main query – यह डेटाबेस टेबल में वह क्वेरी है, जो CTE को इंडीकेट करती है। यह क्वेरी टेबल में CTE को ऐसे अप्लाई कर सकती है, जैसे यह टेबल में कोई रेगुलर टेबल या व्यू हो।
Advantages of using CTE features in SQL databases.
- Improved query readability – CTE फीचर्स एसक्यूएल डेटाबेस टेबल में कम्प्लेक्स टेबल क्वेरी को स्माल मॉड्यूल में ज़्यादा मैनेजेबल पोरशन में डिवाइड या ब्रेक कर, CTE क्वेरी को एक्सप्लेन एनालाइज और डीबग करना सिंपल करते हैं।
- Reusability – एसक्यूएल डेटाबेस टेबल में एक CTE को मेन क्वेरी में कई बार अप्लाई या इंडीकेट किया जा सकता है, जिससे एक ही डेटाबेस सबक्वेरी डाटा को रिपीट करने की ज़रूरत नहीं होती है।
- Recursion – एसक्यूएल डेटाबेस टेबल में CTE डाटा रिकर्सिव नेचर के हो सकते हैं, जो की डेटाबेस मैनेजमेंट सिस्टम में ऑर्गेनाइज़ेशनल स्ट्रक्चर या सिस्टम डायरेक्टरी ट्री जैसे हायरार्किकल डेटाबेस डेटा की क्वेरी को डील करने में हेल्पफुल हो सकते है।
- Logical grouping – डेटाबेस यूजर को CTE टेबल क्वेरी को मल्टीप्ल पार्ट में डिवाइड कर इंडिविजुअल पोरशन सेक्शन में लॉजिकली ऑर्गनाइज़ ग्रुप या अरेंज करने में हेल्प करते हैं, जिससे उन्हें डेटाबेस में फॉलो करना और मॉडिफाई करना सिंपल हो जाता है।
Example of a basic CTE in a SQL database table.
यहाँ यूजर के पास एक एम्प्लॉई नाम से डेटाबेस टेबल है, जिसमें एम्प्लॉई_आईडी, एम्प_नाम, सैलरी और डिपार्टमेंट_आईडी आदि टेबल कॉलम फील्ड हैं। यहाँ हम हर एम्प्लॉई डिपार्टमेंट की टोटल सैलरी को कैलकुलेट करना चाहते हैं, और फिर उन एम्प्लॉई को लिस्ट कर डिस्प्ले करना चाहते हैं. जोकी अपने डिपार्टमेंट की एवरेज सैलरी से अधिक कमाते हैं।
WITH department_salaries AS (
SELECT department_id, SUM(salary) AS total_salary
FROM employee
GROUP BY department_id
)
SELECT e.employee_id, e.emp_name, e.salary, e.department_id
FROM employee e
JOIN department_salaries ds ON e.department_id = ds.department_id
WHERE e.salary > (ds.total_salary / (SELECT COUNT(*) FROM employee WHERE department_id = e.department_id));
CTE in a SQL database table explanation.
- यहाँ इस एक्साम्प्ल में CTE department_salaries हर डिपार्टमेंट के लिए टोटल सैलरी को कैलकुलेट कर डिस्प्ले करता है।
- इसके बाद मेन टेबल क्वेरी employee टेबल को CTE के साथ ऐड करती है, और उन एम्प्लॉइज लिस्ट को फाइंड कर फिल्टर करती है. जो अपने डिपार्टमेंट में एवरेज सैलरी से अधिक सैलरी पाते हैं।
CTEs with multiple queries to a SQL database table.
एसक्यूएल डेटाबेस टेबल में CTE एक्सप्रेशन का यूज़ किसी काम्प्लेक्स डेटाबेस टेबल क्वेरी को स्माल मॉड्यूल में ब्रेक कर मल्टीप्ल यूज़ किए जा सकने वाले मल्टीप्ल इंडिविजुअल पोरशन में ब्रेक या डिवाइड करने में किया जाता है।
यहाँ आपको एक एक्साम्प्ल दिया गया है, जहा डेटाबेस यूजर एक ही टेबल क्वेरी में मल्टीप्ल CTE फीचर्स को कैसे यूज़ कर सकते हैं.
WITH cteone AS (
SELECT department_id, COUNT(*) AS num_employee
FROM employee
GROUP BY department_id
),
ctetwo AS (
SELECT department_id, AVG(salary) AS avg_salary
FROM employee
GROUP BY department_id
)
SELECT cteone.department_id, cteone.num_employee, ctetwo.avg_salary
FROM cteone
JOIN ctetwo ON cteone.department_id = ctetwo.department_id;
Explanation of CTEs with multiple queries.
- CTE ONE (cteone) – यहाँ यूजर डिफाइन cte हर डिपार्टमेंट में एम्प्लॉई नंबर्स को कैलकुलेट करता है।
- CTE TWO (ctetwo) – यहाँ यह हर डिपार्टमेंट की एवरेज सैलरी को कैलकुलेट करता है। और अंत में डेटाबेस क्वेरी दो CTE में ऐड कर हर डिपार्टमेंट के लिए एम्प्लॉई नंबर्स और एवरेज सैलरी को डिस्प्ले करता है।
CTE Performance in SQL Database Management Systems.
- एसक्यूएल डेटाबेस मैनेजमेंट सिस्टम मे CTEs डेटाबेस क्वेरी रीडेबिलिटी और मेंटेनेबिलिटी को इम्प्रूव करते हैं.
- डेटाबेस टेबल में एक CTE को कई बार अप्लाई या इंडीकेट किया जा सकता है। इसका अर्थ है कि CTE फीचर्स क्वेरी को हर बार टेबल में रेफर करने पर रन होती है, जिससे की यदि डेटाबेस टेबल में CTE फीचर्स को मल्टीप्ल टाइम यूज़ किया जाता है, तो जनरेटेड डेटाबेस टेबल क्वेरी परफॉर्मेंस पर इम्पैक्ट हो सकता है।
- Complexity – एक रिकर्सिव CTEs क्वेरी डेवलपमेंट में बहुत ज़्यादा रिसोर्सेज यूज़ हो सकते हैं, और यदि इन्हे प्रॉपर आर्डर में ऑप्टिमाइज़ या इम्प्लीमेंट नहीं किया गया है, तो टेबल क्वेरी परफॉर्मेंस से जुड़ी कई पॉब्लेम्स डेवलप हो सकती हैं। यहाँ रिकर्सिव डेटाबेस टेबल में क्वेरीज़ में इनफिनिट लूप्स को अवॉयड करने के लिए इन्हे प्रॉपर टर्मिनेशन कंडीशन में अप्लाई होनी चाहिए।
- Optimization – कुछ अन्य डेटाबेस टेबल CTEs को सबक्वेरीज़ या टेम्पररी टेबल्स में मॉडिफाई या ऑप्टिमाइज़ करते हैं, लेकिन यहाँ टेबल क्वेरी ऑप्टिमाइज़ेशन प्रॉपर मेथड डेटाबेस इंजन और स्पेशल क्वेरी पर डिपेंड कर सकता है।
CTE vs. Subqueries in sql database
| Feature | CTE features | Subquery features |
| Readability method | Cte Improves database table query structure and readability by breaking complex large table data or queries into a small part. | In subquery it helps to make table queries harder to read when deeply nested in database. |
| Reusability concept | Cte database query Can be referenced multiple times in the main table query. | Subquery Can be only be referenced once in the table query. |
| Recursive Queries behaviour | Recursive query Supports for hierarchical data analysis and management in cte query. | In subquery it Does not support recursion concept. |
| Execution method | CTE features is executed once per query execution at a time and can be optimized by the database engine when user manage it. | But Subqueries are executed every time they are referenced in main table. |
Conclusion of CTEs (Common Table Expressions).
एसक्यूएल डेटाबेस मैनेजमेंट सिस्टम मे CTEs (कॉमन टेबल एक्सप्रेशन्स) बड़े लार्ज कॉम्प्लेक्स क्वेरीज़ डाटा को स्माल छोटे छोटे मॉड्यूल में ब्रेक में करने का एक पावरफुल टास्क हैं। ये डेटाबेस टेबल क्वेरी की रीडेबिलिटी और मेंटेनेबिलिटी को इम्प्रूव करते हैं, और डेटाबेस टेबल सबक्वेरीज़ में रिकर्सन और अगेन यूज़ करने की परमिशन प्रोवाइड करते हैं। जैसा की ये हमेशा सबक्वेरी में बेहतर परफॉर्म नहीं करते हैं, लेकिन कुछ पर्टिकुलर डेटाबेस काम्प्लेक्स क्वेरी को इजी करने में बहुत काम के हैं. स्पेशली, जब डेटाबेस यूजर हायरार्किकल डेटा के साथ वर्क कर रहे हों या जब डेटाबेस यूजर को मल्टीप्ल टेबल क्वेरी कैलकुलेशन की ज़रूरत हो। जब CTE को प्रॉपर यूज़ किया जाता है. तो CTE डेटाबेस यूजर को SQL क्वेरी को ज़्यादा क्लियर, समझने में आसान और मेंटेन करने में ज़्यादा एफ्फिसिएंट क्रिएट कर सकते हैं।
