एसक्यूएल में पदानुक्रमित और पुनरावर्ती क्वेरी: Difference between revisions

From Vigyanwiki
No edit summary
 
(13 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Short description|none}}
एक पदानुक्रमित क्वेरी एक प्रकार का चयन (एसक्यूएल) है जो [[पदानुक्रमित मॉडल]] डेटा को संभालती है। वे अधिक सामान्य रिकर्सिव [[ fixpoint |फिक्सपॉइंट]] प्रश्नों के विशेष स्थिति हैं जो सकर्मक क्लोजर की गणना करते हैं।
{{Technical|date=April 2018}}


एक पदानुक्रमित क्वेरी एक प्रकार का चयन (एसक्यूएल) है जो [[पदानुक्रमित मॉडल]] डेटा को संभालती है। वे अधिक सामान्य रिकर्सिव [[ fixpoint ]] प्रश्नों के विशेष मामले हैं, जो सकर्मक क्लोजर की गणना करते हैं।
मानक एसक्यूएल में: 1999 पदानुक्रमित प्रश्नों को पुनरावर्ती या ''कॉमन टेबल एक्सप्रेशन'' (सीटीई) के माध्यम से कार्यान्वित किया जाता है। ओरेकल के पहले या कनेक्ट बाय क्लॉज के विपरीत रिकर्सिव सीटीई को प्रारंभ से फिक्सपॉइंट सेमेन्टिक्स के साथ डिजाइन किया गया था।<ref name="JimMelton1">{{cite book|author1=Jim Melton|author2=Alan R. Simon|title=SQL:1999: Understanding Relational Language Components|url=https://books.google.com/books?id=wyhXvU0Eyg0C&pg=PA352|year=2002|publisher=Morgan Kaufmann|isbn=978-1-55860-456-8}}</ref> मानक से पुनरावर्ती सीटीई आईबीएम डीबी 2 संस्करण 2 में वर्तमान कार्यान्वयन के अपेक्षाकृत समीप थे।<ref name="JimMelton1"/> रिकर्सिव सीटीई भी [[माइक्रोसॉफ्ट एसक्यूएल सर्वर]] द्वारा समर्थित हैं (एसक्यूएल सर्वर 2008 आर 2 के बाद से),<ref name="msdnRCTEs">{{cite web |url=http://msdn.microsoft.com/en-us/library/ms186243.aspx |title=सामान्य टेबल एक्सप्रेशंस का उपयोग करके पुनरावर्ती प्रश्न|author=Microsoft |access-date=2009-12-23}}</ref> फायरबर्ड (डेटाबेस सर्वर) फायरबर्ड 2.1,<ref>{{cite web |url=http://firebirdsql.org/rlsnotesh/rlsnotes210.html#rnfb210-cte |title=Firebird 2.1 Release Notes |author=Helen Borrie |date=2008-07-15 |access-date=2015-11-24}}</ref> पोस्टग्रेएसक्यूएल 8.4+,<ref>{{cite web |url=http://www.postgresql.org/docs/current/interactive/queries-with.html |title=प्रश्नों के साथ|date=10 February 2022}} PostgreSQL</ref> एसक्यूलाइट 3.8.3+,<ref>{{cite web |url=http://www.sqlite.org/lang_with.html |title=WITH Clause}} SQLite</ref> [[IBM Informix|आईबीएम इन्फोर्मिक्स]] संस्करण 11.50+, [[CUBRID|क्युब्रिड]] , मारियाडीबी 10.2+ और माई एसक्यूएल 8.0.1+<ref>{{cite web |url=https://mysqlserverteam.com/mysql-8-0-labs-recursive-common-table-expressions-in-mysql-ctes/ |title=MySQL 8.0 Labs: [Recursive] Common Table Expressions in MySQL (CTEs)}} mysqlserverteam.com</ref> [https://kb.tableau.com/articles/howto/use-common-table-expressions झांकी में प्रलेखन है] यह वर्णन करते हुए कि सीटीई का उपयोग कैसे किया जा सकता है। टिब्को स्पॉटफायर सीटीई का समर्थन नहीं करता है, जबकि ओरेकल 11g रिलीज़ 2 के कार्यान्वयन में फ़िक्सपॉइंट सिमेंटिक्स का अभाव है।
 
मानक एसक्यूएल में: 1999 पदानुक्रमित प्रश्नों को पुनरावर्ती ''#कॉमन टेबल एक्सप्रेशन'' (सीटीई) के माध्यम से कार्यान्वित किया जाता है। ओरेकल के पहले #कनेक्ट बाय|कनेक्ट-बाय क्लॉज के विपरीत, रिकर्सिव सीटीई को शुरुआत से फिक्सपॉइंट सेमेन्टिक्स के साथ डिजाइन किया गया था।<ref name="JimMelton1">{{cite book|author1=Jim Melton|author2=Alan R. Simon|title=SQL:1999: Understanding Relational Language Components|url=https://books.google.com/books?id=wyhXvU0Eyg0C&pg=PA352|year=2002|publisher=Morgan Kaufmann|isbn=978-1-55860-456-8}}</ref> मानक से पुनरावर्ती CTE IBM DB2 संस्करण 2 में मौजूदा कार्यान्वयन के अपेक्षाकृत करीब थे।<ref name="JimMelton1"/>रिकर्सिव सीटीई भी [[माइक्रोसॉफ्ट एसक्यूएल सर्वर]] द्वारा समर्थित हैं (एसक्यूएल सर्वर 2008 आर 2 के बाद से),<ref name="msdnRCTEs">{{cite web |url=http://msdn.microsoft.com/en-us/library/ms186243.aspx |title=सामान्य टेबल एक्सप्रेशंस का उपयोग करके पुनरावर्ती प्रश्न|author=Microsoft |access-date=2009-12-23}}</ref> फायरबर्ड (डेटाबेस सर्वर) | फायरबर्ड 2.1,<ref>{{cite web |url=http://firebirdsql.org/rlsnotesh/rlsnotes210.html#rnfb210-cte |title=Firebird 2.1 Release Notes |author=Helen Borrie |date=2008-07-15 |access-date=2015-11-24}}</ref> पोस्टग्रेएसक्यूएल | पोस्टग्रेएसक्यूएल 8.4+,<ref>{{cite web |url=http://www.postgresql.org/docs/current/interactive/queries-with.html |title=प्रश्नों के साथ|date=10 February 2022}} PostgreSQL</ref> SQLite|SQLite 3.8.3+,<ref>{{cite web |url=http://www.sqlite.org/lang_with.html |title=WITH Clause}} SQLite</ref> [[IBM Informix]] संस्करण 11.50+, [[CUBRID]], MariaDB|MariaDB 10.2+ और MySQL|MySQL 8.0.1+<ref>{{cite web |url=https://mysqlserverteam.com/mysql-8-0-labs-recursive-common-table-expressions-in-mysql-ctes/ |title=MySQL 8.0 Labs: [Recursive] Common Table Expressions in MySQL (CTEs)}} mysqlserverteam.com</ref> [https://kb.tableau.com/articles/howto/use-common-table-expressions झांकी में प्रलेखन है] यह वर्णन करते हुए कि सीटीई का उपयोग कैसे किया जा सकता है। TIBCO Spotfire CTE का समर्थन नहीं करता है, जबकि Oracle 11g रिलीज़ 2 के कार्यान्वयन में फ़िक्सपॉइंट सिमेंटिक्स का अभाव है।


सामान्य टेबल एक्सप्रेशंस या कनेक्टेड-बाय क्लॉज के बिना उपयोगकर्ता-परिभाषित पुनरावर्ती कार्यों के साथ पदानुक्रमित प्रश्नों को प्राप्त करना संभव है।<ref>[http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=24 Paragon corporation: Using PostgreSQL User-Defined Functions to solve the Tree Problem], February 15, 2004, accessed September 19, 2015</ref>
सामान्य टेबल एक्सप्रेशंस या कनेक्टेड-बाय क्लॉज के बिना उपयोगकर्ता-परिभाषित पुनरावर्ती कार्यों के साथ पदानुक्रमित प्रश्नों को प्राप्त करना संभव है।<ref>[http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=24 Paragon corporation: Using PostgreSQL User-Defined Functions to solve the Tree Problem], February 15, 2004, accessed September 19, 2015</ref>
Line 10: Line 7:


== सामान्य तालिका अभिव्यक्ति ==
== सामान्य तालिका अभिव्यक्ति ==
{{expand section|date=November 2012}}
एक सामान्य तालिका अभिव्यक्ति, या सीटीई, ([[एसक्यूएल]] में) एक अस्थायी नामित परिणाम सेट है, जो एक साधारण क्वेरी से प्राप्त होता है और <code>SELECT</code>, <code>INSERT</code>, <code>UPDATE</code>, या <code>DELETE</code> कथन के निष्पादन के सीमा में परिभाषित होता है।।
एक सामान्य तालिका अभिव्यक्ति, या सीटीई, ([[एसक्यूएल]] में) एक अस्थायी नामित परिणाम सेट है, जो एक साधारण क्वेरी से प्राप्त होता है और निष्पादन के दायरे में परिभाषित होता है। <code>SELECT</code>, <code>INSERT</code>, <code>UPDATE</code>, या <code>DELETE</code> कथन।


सीटीई को व्युत्पन्न तालिकाओं ([[सबक्वेरी]]), [[ देखें (डेटाबेस) ]] और इनलाइन यूजर-डिफ़ाइंड फ़ंक्शंस के विकल्प के रूप में माना जा सकता है।
सीटीई को व्युत्पन्न तालिकाओं ([[सबक्वेरी]]), [[ देखें (डेटाबेस) |देखें (डेटाबेस)]] और इनलाइन यूजर-डिफ़ाइंड कार्य के विकल्प के रूप में माना जा सकता है।


[[टेराडाटा]] (संस्करण 14 से शुरू), [[IBM Db2]], [[Informix]] (संस्करण 14.1 से शुरू), [[फायरबर्ड (डेटाबेस सर्वर)]] (संस्करण 2.1 से शुरू) द्वारा सामान्य तालिका अभिव्यक्तियों का समर्थन किया जाता है।<ref>https://firebirdsql.org/file/documentation/reference_manuals/reference_material/Firebird-2.5-LangRef-Update.pdf {{Bare URL PDF|date=March 2022}}</ref> Microsoft SQL सर्वर (संस्करण 2005 से शुरू), Oracle डेटाबेस (11g रिलीज़ 2 से पुनरावर्तन के साथ), [[PostgreSQL]] (8.4 से), [[MariaDB]] (10.2 से), [[MySQL]] (8.0 से), [[SQLite]] (3.8.3 से), [[HSQLDB]], IBM सूचना (14.10 से),<ref>possible before 14.10 with temp tables https://stackoverflow.com/questions/42579298/why-does-a-with-clause-give-a-syntax-error-on-informix</ref> Google [[BigQuery]], Sybase (डेटाबेस) (संस्करण 9 से शुरू), [[Vertica]], [[H2 (DBMS)]] (प्रायोगिक),<ref>{{Cite web|url=http://www.h2database.com/html/advanced.html#recursive_queries|title = Advanced}}</ref> और [[संबंधपरक डेटाबेस प्रबंधन प्रणालियों की तुलना]]। Oracle CTEs सबक्वेरी फैक्टरिंग को कॉल करता है।<ref name="MortonSands2010">{{cite book|author1=Karen Morton|author2=Robyn Sands|author3=Jared Still|author4=Riyaj Shamsudeen |author5=Kerry Osborne|title=प्रो ओरेकल एसक्यूएल|url=https://books.google.com/books?id=nrwu-f4JwjcC&pg=PA283|year=2010|publisher=Apress|isbn=978-1-4302-3228-5|page=283}}</ref>
[[टेराडाटा]] (संस्करण 14 से प्रारंभ ), [[IBM Db2|आईबीएम डीबी 2]], [[Informix|इन्फोर्मिक्स]] (संस्करण 14.1 से प्रारंभ ), [[फायरबर्ड (डेटाबेस सर्वर)]] (संस्करण 2.1 से प्रारंभ ) द्वारा सामान्य तालिका अभिव्यक्तियों का समर्थन किया जाता है।<ref>https://firebirdsql.org/file/documentation/reference_manuals/reference_material/Firebird-2.5-LangRef-Update.pdf {{Bare URL PDF|date=March 2022}}</ref> माइक्रोसॉफ्ट एसक्यूएल सर्वर (संस्करण 2005 से प्रारंभ ), ओरेकल डेटाबेस (11g रिलीज़ 2 से पुनरावर्तन के साथ), [[PostgreSQL|पोस्टग्रेएसक्यूएल]] (8.4 से), [[MariaDB|मारियाडीबी]] (10.2 से), [[MySQL|माई एसक्यूएल]] (8.0 से), [[SQLite|एसक्यूलाइट]] (3.8.3 से), [[HSQLDB|एचएसक्यूएलडीबी]], आईबीएम सूचना (14.10 से),<ref>possible before 14.10 with temp tables https://stackoverflow.com/questions/42579298/why-does-a-with-clause-give-a-syntax-error-on-informix</ref> गूगल [[BigQuery|बिगक्वेरी]], साइबेस (डेटाबेस) (संस्करण 9 से प्रारंभ ), [[Vertica|वर्टिका]], [[H2 (DBMS)|एच2 (डीबीएमएस)]] (प्रायोगिक),<ref>{{Cite web|url=http://www.h2database.com/html/advanced.html#recursive_queries|title = Advanced}}</ref> और [[संबंधपरक डेटाबेस प्रबंधन प्रणालियों की तुलना]] ओरेकल सीटीई सबक्वेरी फैक्टरिंग को कॉल करता है।<ref name="MortonSands2010">{{cite book|author1=Karen Morton|author2=Robyn Sands|author3=Jared Still|author4=Riyaj Shamsudeen |author5=Kerry Osborne|title=प्रो ओरेकल एसक्यूएल|url=https://books.google.com/books?id=nrwu-f4JwjcC&pg=PA283|year=2010|publisher=Apress|isbn=978-1-4302-3228-5|page=283}}</ref>
CTE (जो रिकर्सिव हो भी सकता है और नहीं भी) के लिए सिंटैक्स इस प्रकार है:
 
सीटीई (जो रिकर्सिव हो भी सकता है और नहीं भी) के लिए सिंटैक्स इस प्रकार है:


<syntaxhighlight lang="sql">
<syntaxhighlight lang="sql">
Line 22: Line 19:
SELECT ...
SELECT ...
</syntaxhighlight>
</syntaxhighlight>
कहाँ <code>with_query</code>का सिंटैक्स है:
जहाँ <code>with_query</code>का सिंटैक्स है:


<syntaxhighlight lang="sql">
<syntaxhighlight lang="sql">
query_name [ (column_name [,...]) ] AS (SELECT ...)
query_name [ (column_name [,...]) ] AS (SELECT ...)
</syntaxhighlight>
</syntaxhighlight>
पुनरावर्ती CTE का उपयोग संबंधों (ग्राफ़ या पेड़ों के रूप में) को पार करने के लिए किया जा सकता है, हालांकि सिंटैक्स बहुत अधिक शामिल है क्योंकि कोई स्वचालित छद्म-स्तंभ नहीं बनाया गया है (जैसे <code>LEVEL</code> #छद्म-स्तंभ); यदि ये वांछित हैं, तो उन्हें कोड में बनाना होगा। एमएसडीएन दस्तावेज देखें<ref name="msdnRCTEs"/>या आईबीएम प्रलेखन<ref>{{Cite web|url=http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/topic/com.ibm.db2z9.doc.apsg/src/tpc/db2z_xmprecursivecte.htm|title = IBM Docs}}</ref><ref>{{Cite web|url=http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=%2Fsqlp%2Frbafyrecursivequeries.htm|title=IBM Docs}}</ref> ट्यूटोरियल उदाहरण के लिए। <code>RECURSIVE</code> पोस्टग्रेएसक्यूएल के अलावा अन्य सिस्टम में आमतौर पर ई> कीवर्ड की आवश्यकता नहीं होती है।<ref name="ObeHsu2012">{{cite book|author1=Regina Obe|author2=Leo Hsu|title=PostgreSQL: Up and Running|url=https://books.google.com/books?id=Q8jkIZkMTPcC&pg=PA94|year=2012|publisher=O'Reilly Media|isbn=978-1-4493-2633-3|page=94}}</ref>
पुनरावर्ती सीटीई का उपयोग संबंधों (ग्राफ़ या पेड़ों के रूप में) को पार करने के लिए किया जा सकता है, चूँकि सिंटैक्स बहुत अधिक सम्मिलित है क्योंकि कोई स्वचालित छद्म-स्तंभ नहीं बनाया गया है (जैसे <code>LEVEL</code> या छद्म-स्तंभ); यदि ये वांछित हैं, तो उन्हें कोड में बनाना होगा एमएसडीएन दस्तावेज देखें<ref name="msdnRCTEs"/> या आईबीएम प्रलेखन<ref>{{Cite web|url=http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/topic/com.ibm.db2z9.doc.apsg/src/tpc/db2z_xmprecursivecte.htm|title = IBM Docs}}</ref><ref>{{Cite web|url=http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=%2Fsqlp%2Frbafyrecursivequeries.htm|title=IBM Docs}}</ref> ट्यूटोरियल उदाहरण के लिए। <code>RECURSIVE</code> पोस्टग्रेएसक्यूएल के अतिरिक्त अन्य प्रणाली में सामान्यतः ई> कीवर्ड की आवश्यकता नहीं होती है।<ref name="ObeHsu2012">{{cite book|author1=Regina Obe|author2=Leo Hsu|title=PostgreSQL: Up and Running|url=https://books.google.com/books?id=Q8jkIZkMTPcC&pg=PA94|year=2012|publisher=O'Reilly Media|isbn=978-1-4493-2633-3|page=94}}</ref>
SQL:1999 में एक पुनरावर्ती (CTE) क्वेरी कहीं भी प्रकट हो सकती है जहाँ किसी क्वेरी की अनुमति है। उदाहरण के लिए, परिणाम का नाम देना संभव है <code>CREATE</code> [<code>RECURSIVE</code>] <code>VIEW</code>.<ref>{{cite book|author1=Jim Melton|author2=Alan R. Simon|title=SQL:1999: Understanding Relational Language Components|url=https://books.google.com/books?id=wyhXvU0Eyg0C&pg=PA352|year=2002|publisher=Morgan Kaufmann|isbn=978-1-55860-456-8|page=352}}</ref> एक के अंदर CTE का उपयोग करना <code>INSERT INTO</code>, एक पुनरावर्ती क्वेरी से उत्पन्न डेटा के साथ एक तालिका को पॉप्युलेट कर सकता है; बिना किसी प्रक्रियात्मक कथन का उपयोग किए इस तकनीक का उपयोग करके यादृच्छिक डेटा पीढ़ी संभव है।<ref name="ChamberlinChamberlin1998">{{cite book|author1=Don Chamberlin|title=A Complete Guide to DB2 Universal Database|url=https://books.google.com/books?id=hb4zskzHrWYC&pg=PA253|year=1998|publisher=Morgan Kaufmann|isbn=978-1-55860-482-7|pages=253–254}}</ref>
 
कुछ डेटाबेस, जैसे कि PostgreSQL, छोटे क्रिएट रिकर्सिव व्यू फॉर्मेट का समर्थन करते हैं, जिसे आंतरिक रूप से विथ रिकर्सिव कोडिंग में अनुवादित किया जाता है।<ref>{{Cite web|url=https://www.postgresql.org/docs/10/static/sql-createview.html|title = दृश्य बनाएँ|date = 10 February 2022}}</ref>
एसक्यूएल :1999 में एक पुनरावर्ती (सीटीई) क्वेरी कहीं भी प्रकट हो सकती है जहाँ किसी क्वेरी की अनुमति है। उदाहरण के लिए, परिणाम का नाम देना संभव है <code>CREATE</code> [<code>RECURSIVE</code>] <code>VIEW</code>.<ref>{{cite book|author1=Jim Melton|author2=Alan R. Simon|title=SQL:1999: Understanding Relational Language Components|url=https://books.google.com/books?id=wyhXvU0Eyg0C&pg=PA352|year=2002|publisher=Morgan Kaufmann|isbn=978-1-55860-456-8|page=352}}</ref> एक के अंदर सीटीई का उपयोग करना <code>INSERT INTO</code>, एक पुनरावर्ती क्वेरी से उत्पन्न डेटा के साथ एक तालिका को पॉप्युलेट कर सकता है; बिना किसी प्रक्रियात्मक कथन का उपयोग किए इस विधि का उपयोग करके यादृच्छिक डेटा पीढ़ी संभव है।<ref name="ChamberlinChamberlin1998">{{cite book|author1=Don Chamberlin|title=A Complete Guide to DB2 Universal Database|url=https://books.google.com/books?id=hb4zskzHrWYC&pg=PA253|year=1998|publisher=Morgan Kaufmann|isbn=978-1-55860-482-7|pages=253–254}}</ref>
 
कुछ डेटाबेस, जैसे कि पोस्टग्रेएसक्यूएल, छोटे क्रिएट रिकर्सिव व्यू फॉर्मेट का समर्थन करते हैं, जिसे आंतरिक रूप से विथ रिकर्सिव कोडिंग में अनुवादित किया जाता है।<ref>{{Cite web|url=https://www.postgresql.org/docs/10/static/sql-createview.html|title = दृश्य बनाएँ|date = 10 February 2022}}</ref>
 
0 से 9 तक संख्याओं के भाज्य की गणना करने वाली पुनरावर्ती क्वेरी का एक उदाहरण निम्नलिखित है:
0 से 9 तक संख्याओं के भाज्य की गणना करने वाली पुनरावर्ती क्वेरी का एक उदाहरण निम्नलिखित है:
<syntaxhighlight lang="sql">
<syntaxhighlight lang="sql">
Line 48: Line 48:
== द्वारा कनेक्ट करें ==
== द्वारा कनेक्ट करें ==


एक वैकल्पिक सिंटैक्स गैर-मानक है <code>CONNECT BY</code> निर्माण; इसे 1980 के दशक में Oracle द्वारा पेश किया गया था।<ref>{{Cite book
एक वैकल्पिक सिंटैक्स गैर-मानक है <code>CONNECT BY</code> निर्माण; इसे 1980 के दशक में ओरेकल द्वारा प्रस्तुत किया गया था।<ref>{{Cite book
| last1 = Benedikt | first1 = M.  
| last1 = Benedikt | first1 = M.  
| last2 = Senellart | first2 = P.  
| last2 = Senellart | first2 = P.  
Line 61: Line 61:
| editor2-last =  Aho
| editor2-last =  Aho
| editor2-first = Alfred V.  
| editor2-first = Alfred V.  
}}</ref> Oracle 10g से पहले, निर्माण केवल विश्वकोश रेखांकन के लिए उपयोगी था क्योंकि यह किसी भी चक्र का पता लगाने में त्रुटि देता था; 10g संस्करण में Oracle ने NOCYCLE फीचर (और कीवर्ड) पेश किया, जिससे चक्रों की उपस्थिति में ट्रैवर्सल कार्य भी हो गया।<ref name="MishraBeaulieu2004">{{cite book|author1=Sanjay Mishra|author2=Alan Beaulieu|title=ओरेकल एसक्यूएल मास्टरिंग|url=https://books.google.com/books?id=r5vbGgz7TFsC&pg=PT227|year=2004|publisher=O'Reilly Media, Inc.|isbn=978-0-596-00632-7|page=227}}</ref>
}}</ref> ओरेकल 10g से पहले, निर्माण केवल विश्वकोश रेखांकन के लिए उपयोगी था क्योंकि यह किसी भी चक्र का पता लगाने में त्रुटि देता था; 10g संस्करण में ओरेकल ने नोसाइकिल फीचर (और कीवर्ड) प्रस्तुत किया, जिससे चक्रों की उपस्थिति में ट्रैवर्सल कार्य भी हो गया।<ref name="MishraBeaulieu2004">{{cite book|author1=Sanjay Mishra|author2=Alan Beaulieu|title=ओरेकल एसक्यूएल मास्टरिंग|url=https://books.google.com/books?id=r5vbGgz7TFsC&pg=PT227|year=2004|publisher=O'Reilly Media, Inc.|isbn=978-0-596-00632-7|page=227}}</ref>


<code>CONNECT BY</code> स्नोफ्लेक इंक, [[एंटरप्राइजडीबी]] द्वारा समर्थित है,<ref>[http://www.enterprisedb.com/documentation/hierarchical-queries.html Hierarchical Queries] {{Webarchive|url=https://web.archive.org/web/20080621031850/http://www.enterprisedb.com/documentation/hierarchical-queries.html |date=2008-06-21 }}, EnterpriseDB</ref> [[ओरेकल डेटाबेस]],<ref>[http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/queries003.htm Hierarchical Queries], Oracle</ref> घनाकार,<ref>{{cite web|title=CUBRID पदानुक्रमित क्वेरी|url=http://www.cubrid.org/manual/841/en/Hierarchical%20Query|access-date=11 February 2013}}</ref> आईबीएम इनफॉर्मिक्स<ref>[https://www-01.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.sqls.doc/ids_sqs_2033.htm Hierarchical Clause], IBM Informix</ref> और IBM Db2 हालांकि केवल अगर यह एक संगतता मोड के रूप में सक्षम है।<ref name="Gennick2010">{{cite book|author=Jonathan Gennick|title=एसक्यूएल पॉकेट गाइड|url=https://books.google.com/books?id=rEAFRzMe_SMC&pg=PA8|year=2010|publisher=O'Reilly Media, Inc.|isbn=978-1-4493-9409-7|page=8|edition=3rd}}</ref> वाक्य रचना इस प्रकार है:
<code>CONNECT BY</code> स्नोफ्लेक इंक, [[एंटरप्राइजडीबी]] द्वारा समर्थित है,<ref>[http://www.enterprisedb.com/documentation/hierarchical-queries.html Hierarchical Queries] {{Webarchive|url=https://web.archive.org/web/20080621031850/http://www.enterprisedb.com/documentation/hierarchical-queries.html |date=2008-06-21 }}, EnterpriseDB</ref> [[ओरेकल डेटाबेस]],<ref>[http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/queries003.htm Hierarchical Queries], Oracle</ref> घनाकार,<ref>{{cite web|title=CUBRID पदानुक्रमित क्वेरी|url=http://www.cubrid.org/manual/841/en/Hierarchical%20Query|access-date=11 February 2013}}</ref> आईबीएम इनफॉर्मिक्स<ref>[https://www-01.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.sqls.doc/ids_sqs_2033.htm Hierarchical Clause], IBM Informix</ref> और आईबीएम डीबी 2 चूँकि केवल अगर यह एक संगतता मोड के रूप में सक्षम है।<ref name="Gennick2010">{{cite book|author=Jonathan Gennick|title=एसक्यूएल पॉकेट गाइड|url=https://books.google.com/books?id=rEAFRzMe_SMC&pg=PA8|year=2010|publisher=O'Reilly Media, Inc.|isbn=978-1-4493-9409-7|page=8|edition=3rd}}</ref> वाक्य रचना इस प्रकार है:


<syntaxhighlight lang="sql">
<syntaxhighlight lang="sql">
Line 87: Line 87:
   स्तर | कर्मचारी | एम्प्नो | प्रबंधक
   स्तर | कर्मचारी | एम्प्नो | प्रबंधक
  -------+-------------+-------+---------
  -------+-------------+-------+---------
      1 | राजा | 7839 |
  1 | राजा | 7839 |
      2 | जोन्स | 7566 | 7839
  2 | जोन्स | 7566 | 7839
      3 | स्कॉट | 7788 | 7566
  3 | स्कॉट | 7788 | 7566
      4 | एडम्स | 7876 | 7788
  4 | एडम्स | 7876 | 7788
      3 | फोर्ड | 7902 | 7566
  3 | फोर्ड | 7902 | 7566
      4 | स्मिथ | 7369 | 7902
  4 | स्मिथ | 7369 | 7902
      2 | ब्लेक | 7698 | 7839
  2 | ब्लेक | 7698 | 7839
      3 | एलन | 7499 | 7698
  3 | एलन | 7499 | 7698
      3 | वार्ड | 7521 | 7698
  3 | वार्ड | 7521 | 7698
      3 | मार्टिन | 7654 | 7698
  3 | मार्टिन | 7654 | 7698
      3 | टर्नर | 7844 | 7698
  3 | टर्नर | 7844 | 7698
      3 | जेम्स | 7900 | 7698
  3 | जेम्स | 7900 | 7698
      2 | क्लार्क | 7782 | 7839
  2 | क्लार्क | 7782 | 7839
      3 | मिलर | 7934 | 7782
  3 | मिलर | 7934 | 7782
  (14 पंक्तियाँ)
  (14 पंक्तियाँ)


Line 110: Line 110:


=== यूनरी ऑपरेटर ===
=== यूनरी ऑपरेटर ===
निम्नलिखित उदाहरण विभाग 10 में प्रत्येक कर्मचारी का अंतिम नाम देता है, पदानुक्रम में उस कर्मचारी के ऊपर प्रत्येक प्रबंधक, प्रबंधक और कर्मचारी के बीच स्तरों की संख्या, और दोनों के बीच का रास्ता:
निम्नलिखित उदाहरण विभाग 10 में प्रत्येक कर्मचारी का अंतिम नाम देता है, पदानुक्रम में उस कर्मचारी के ऊपर प्रत्येक प्रबंधक, प्रबंधक और कर्मचारी के बीच स्तरों की संख्या और दोनों के बीच का रास्ता:


<syntaxhighlight lang="sql">
<syntaxhighlight lang="sql">
Line 124: Line 124:
=== कार्य ===
=== कार्य ===
* <code>SYS_CONNECT_BY_PATH</code>
* <code>SYS_CONNECT_BY_PATH</code>
 
 
== यह भी देखें                                   ==
== यह भी देखें ==
* [[ संगणक वैज्ञानिक | संगणक वैज्ञानिक]] फिक्सपॉइंट प्रश्नों को भी प्रयुक्त करता है
* [[ संगणक वैज्ञानिक ]] फिक्सपॉइंट प्रश्नों को भी लागू करता है
* [[डिडक्टिव डेटाबेस]]
* [[डिडक्टिव डेटाबेस]]
* पदानुक्रमित मॉडल
* पदानुक्रमित मॉडल
Line 140: Line 139:
== अग्रिम पठन ==
== अग्रिम पठन ==
* {{cite book|author=C. J. Date|author-link=C. J. Date|title=SQL and Relational Theory: How to Write Accurate SQL Code|year=2011|publisher=O'Reilly Media|isbn=978-1-4493-1640-2|edition=2nd|pages=159–163}}
* {{cite book|author=C. J. Date|author-link=C. J. Date|title=SQL and Relational Theory: How to Write Accurate SQL Code|year=2011|publisher=O'Reilly Media|isbn=978-1-4493-1640-2|edition=2nd|pages=159–163}}
'''Academic textbooks'''. Note that these cover only the SQL:1999 standard (and Datalog), but not the Oracle extension.
'''Academic textbooks'''. Note that these cover only the SQL:1999 standard (and Datalog), but not the ओरेकल extension.
* {{cite book|author1=Abraham Silberschatz|author2=Henry Korth|author3=S. Sudarshan|title=Database System Concepts|year=2010|edition=6th|publisher=McGraw-Hill|isbn=978-0-07-352332-3|pages=187–192}}
* {{cite book|author1=Abraham Silberschatz|author2=Henry Korth|author3=S. Sudarshan|title=Database System Concepts|year=2010|edition=6th|publisher=McGraw-Hill|isbn=978-0-07-352332-3|pages=187–192}}
* {{cite book|author1=Raghu Ramakrishnan|author2=Johannes Gehrke|title=Database management systems|year=2003|publisher=McGraw-Hill|isbn=978-0-07-246563-1|edition=3rd}} Chapter 24.
* {{cite book|author1=Raghu Ramakrishnan|author2=Johannes Gehrke|title=Database management systems|year=2003|publisher=McGraw-Hill|isbn=978-0-07-246563-1|edition=3rd}} Chapter 24.
Line 155: Line 154:
{{Databases}}
{{Databases}}


{{DEFAULTSORT:Hierarchical Query}}[[Category: डेटाबेस प्रबंधन तंत्र]] [[Category: एसक्यूएल]] [[Category: SQL कोड उदाहरण के साथ लेख]] [[Category: प्रत्यावर्तन]]
{{DEFAULTSORT:Hierarchical Query}}
 
 


[[Category: Machine Translated Page]]
[[Category:All articles with bare URLs for citations]]
[[Category:Created On 13/05/2023]]
[[Category:Articles with PDF format bare URLs for citations]]
[[Category:Articles with bare URLs for citations from March 2022]]
[[Category:Collapse templates|Hierarchical Query]]
[[Category:Created On 13/05/2023|Hierarchical Query]]
[[Category:Database management systems|Hierarchical Query]]
[[Category:Machine Translated Page|Hierarchical Query]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists|Hierarchical Query]]
[[Category:Pages with script errors|Hierarchical Query]]
[[Category:SQL कोड उदाहरण के साथ लेख|Hierarchical Query]]
[[Category:Sidebars with styles needing conversion|Hierarchical Query]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready|Hierarchical Query]]
[[Category:Templates generating microformats|Hierarchical Query]]
[[Category:Templates that are not mobile friendly|Hierarchical Query]]
[[Category:Templates using TemplateData|Hierarchical Query]]
[[Category:Webarchive template wayback links]]
[[Category:Wikipedia metatemplates|Hierarchical Query]]
[[Category:एसक्यूएल|Hierarchical Query]]
[[Category:डेटाबेस प्रबंधन तंत्र|Hierarchical Query]]
[[Category:प्रत्यावर्तन|Hierarchical Query]]

Latest revision as of 14:44, 12 June 2023

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

मानक एसक्यूएल में: 1999 पदानुक्रमित प्रश्नों को पुनरावर्ती या कॉमन टेबल एक्सप्रेशन (सीटीई) के माध्यम से कार्यान्वित किया जाता है। ओरेकल के पहले या कनेक्ट बाय क्लॉज के विपरीत रिकर्सिव सीटीई को प्रारंभ से फिक्सपॉइंट सेमेन्टिक्स के साथ डिजाइन किया गया था।[1] मानक से पुनरावर्ती सीटीई आईबीएम डीबी 2 संस्करण 2 में वर्तमान कार्यान्वयन के अपेक्षाकृत समीप थे।[1] रिकर्सिव सीटीई भी माइक्रोसॉफ्ट एसक्यूएल सर्वर द्वारा समर्थित हैं (एसक्यूएल सर्वर 2008 आर 2 के बाद से),[2] फायरबर्ड (डेटाबेस सर्वर) फायरबर्ड 2.1,[3] पोस्टग्रेएसक्यूएल 8.4+,[4] एसक्यूलाइट 3.8.3+,[5] आईबीएम इन्फोर्मिक्स संस्करण 11.50+, क्युब्रिड , मारियाडीबी 10.2+ और माई एसक्यूएल 8.0.1+[6] झांकी में प्रलेखन है यह वर्णन करते हुए कि सीटीई का उपयोग कैसे किया जा सकता है। टिब्को स्पॉटफायर सीटीई का समर्थन नहीं करता है, जबकि ओरेकल 11g रिलीज़ 2 के कार्यान्वयन में फ़िक्सपॉइंट सिमेंटिक्स का अभाव है।

सामान्य टेबल एक्सप्रेशंस या कनेक्टेड-बाय क्लॉज के बिना उपयोगकर्ता-परिभाषित पुनरावर्ती कार्यों के साथ पदानुक्रमित प्रश्नों को प्राप्त करना संभव है।[7]


सामान्य तालिका अभिव्यक्ति

एक सामान्य तालिका अभिव्यक्ति, या सीटीई, (एसक्यूएल में) एक अस्थायी नामित परिणाम सेट है, जो एक साधारण क्वेरी से प्राप्त होता है और SELECT, INSERT, UPDATE, या DELETE कथन के निष्पादन के सीमा में परिभाषित होता है।।

सीटीई को व्युत्पन्न तालिकाओं (सबक्वेरी), देखें (डेटाबेस) और इनलाइन यूजर-डिफ़ाइंड कार्य के विकल्प के रूप में माना जा सकता है।

टेराडाटा (संस्करण 14 से प्रारंभ ), आईबीएम डीबी 2, इन्फोर्मिक्स (संस्करण 14.1 से प्रारंभ ), फायरबर्ड (डेटाबेस सर्वर) (संस्करण 2.1 से प्रारंभ ) द्वारा सामान्य तालिका अभिव्यक्तियों का समर्थन किया जाता है।[8] माइक्रोसॉफ्ट एसक्यूएल सर्वर (संस्करण 2005 से प्रारंभ ), ओरेकल डेटाबेस (11g रिलीज़ 2 से पुनरावर्तन के साथ), पोस्टग्रेएसक्यूएल (8.4 से), मारियाडीबी (10.2 से), माई एसक्यूएल (8.0 से), एसक्यूलाइट (3.8.3 से), एचएसक्यूएलडीबी, आईबीएम सूचना (14.10 से),[9] गूगल बिगक्वेरी, साइबेस (डेटाबेस) (संस्करण 9 से प्रारंभ ), वर्टिका, एच2 (डीबीएमएस) (प्रायोगिक),[10] और संबंधपरक डेटाबेस प्रबंधन प्रणालियों की तुलना ओरेकल सीटीई सबक्वेरी फैक्टरिंग को कॉल करता है।[11]

सीटीई (जो रिकर्सिव हो भी सकता है और नहीं भी) के लिए सिंटैक्स इस प्रकार है:

WITH [RECURSIVE] with_query [, ...]
SELECT ...

जहाँ with_queryका सिंटैक्स है:

query_name [ (column_name [,...]) ] AS (SELECT ...)

पुनरावर्ती सीटीई का उपयोग संबंधों (ग्राफ़ या पेड़ों के रूप में) को पार करने के लिए किया जा सकता है, चूँकि सिंटैक्स बहुत अधिक सम्मिलित है क्योंकि कोई स्वचालित छद्म-स्तंभ नहीं बनाया गया है (जैसे LEVEL या छद्म-स्तंभ); यदि ये वांछित हैं, तो उन्हें कोड में बनाना होगा एमएसडीएन दस्तावेज देखें[2] या आईबीएम प्रलेखन[12][13] ट्यूटोरियल उदाहरण के लिए। RECURSIVE पोस्टग्रेएसक्यूएल के अतिरिक्त अन्य प्रणाली में सामान्यतः ई> कीवर्ड की आवश्यकता नहीं होती है।[14]

एसक्यूएल :1999 में एक पुनरावर्ती (सीटीई) क्वेरी कहीं भी प्रकट हो सकती है जहाँ किसी क्वेरी की अनुमति है। उदाहरण के लिए, परिणाम का नाम देना संभव है CREATE [RECURSIVE] VIEW.[15] एक के अंदर सीटीई का उपयोग करना INSERT INTO, एक पुनरावर्ती क्वेरी से उत्पन्न डेटा के साथ एक तालिका को पॉप्युलेट कर सकता है; बिना किसी प्रक्रियात्मक कथन का उपयोग किए इस विधि का उपयोग करके यादृच्छिक डेटा पीढ़ी संभव है।[16]

कुछ डेटाबेस, जैसे कि पोस्टग्रेएसक्यूएल, छोटे क्रिएट रिकर्सिव व्यू फॉर्मेट का समर्थन करते हैं, जिसे आंतरिक रूप से विथ रिकर्सिव कोडिंग में अनुवादित किया जाता है।[17]

0 से 9 तक संख्याओं के भाज्य की गणना करने वाली पुनरावर्ती क्वेरी का एक उदाहरण निम्नलिखित है:

WITH recursive temp (n, fact) AS
(
       SELECT 0,
              1 -- Initial Subquery
       UNION ALL
       SELECT n+1,
              (n+1)*fact
       FROM   temp -- Recursive Subquery
       WHERE  n < 9)
SELECT *
FROM   temp;


द्वारा कनेक्ट करें

एक वैकल्पिक सिंटैक्स गैर-मानक है CONNECT BY निर्माण; इसे 1980 के दशक में ओरेकल द्वारा प्रस्तुत किया गया था।[18] ओरेकल 10g से पहले, निर्माण केवल विश्वकोश रेखांकन के लिए उपयोगी था क्योंकि यह किसी भी चक्र का पता लगाने में त्रुटि देता था; 10g संस्करण में ओरेकल ने नोसाइकिल फीचर (और कीवर्ड) प्रस्तुत किया, जिससे चक्रों की उपस्थिति में ट्रैवर्सल कार्य भी हो गया।[19]

CONNECT BY स्नोफ्लेक इंक, एंटरप्राइजडीबी द्वारा समर्थित है,[20] ओरेकल डेटाबेस,[21] घनाकार,[22] आईबीएम इनफॉर्मिक्स[23] और आईबीएम डीबी 2 चूँकि केवल अगर यह एक संगतता मोड के रूप में सक्षम है।[24] वाक्य रचना इस प्रकार है:

SELECT select_list
FROM table_expression
[ WHERE ... ]
[ START WITH start_expression ]
CONNECT BY [NOCYCLE] { PRIOR child_expr = parent_expr | parent_expr = PRIOR child_expr }
[ ORDER SIBLINGS BY column1 [ ASC | DESC ] [, column2 [ ASC | DESC ] ] ... ]
[ GROUP BY ... ]
[ HAVING ... ]
...
उदाहरण के लिए,
SELECT LEVEL, LPAD (' ', 2 * (LEVEL - 1)) || ename "employee", empno, mgr "manager"
FROM emp START WITH mgr IS NULL
CONNECT BY PRIOR empno = mgr;

उपरोक्त क्वेरी से आउटपुट ऐसा दिखाई देगा:

 स्तर | कर्मचारी | एम्प्नो | प्रबंधक
-------+-------------+-------+---------
 1 | राजा | 7839 |
 2 | जोन्स | 7566 | 7839
 3 | स्कॉट | 7788 | 7566
 4 | एडम्स | 7876 | 7788
 3 | फोर्ड | 7902 | 7566
 4 | स्मिथ | 7369 | 7902
 2 | ब्लेक | 7698 | 7839
 3 | एलन | 7499 | 7698
 3 | वार्ड | 7521 | 7698
 3 | मार्टिन | 7654 | 7698
 3 | टर्नर | 7844 | 7698
 3 | जेम्स | 7900 | 7698
 2 | क्लार्क | 7782 | 7839
 3 | मिलर | 7934 | 7782
(14 पंक्तियाँ)

छद्म-स्तंभ

  • LEVEL
  • CONNECT_BY_ISLEAF
  • CONNECT_BY_ISCYCLE
  • CONNECT_BY_ROOT

यूनरी ऑपरेटर

निम्नलिखित उदाहरण विभाग 10 में प्रत्येक कर्मचारी का अंतिम नाम देता है, पदानुक्रम में उस कर्मचारी के ऊपर प्रत्येक प्रबंधक, प्रबंधक और कर्मचारी के बीच स्तरों की संख्या और दोनों के बीच का रास्ता:

SELECT ename "Employee", CONNECT_BY_ROOT ename "Manager",
LEVEL-1 "Pathlen", SYS_CONNECT_BY_PATH(ename, '/') "Path"
FROM emp
WHERE LEVEL > 1 and deptno = 10
CONNECT BY PRIOR empno = mgr
ORDER BY "Employee", "Manager", "Pathlen", "Path";


कार्य

  • SYS_CONNECT_BY_PATH

यह भी देखें

संदर्भ

  1. 1.0 1.1 Jim Melton; Alan R. Simon (2002). SQL:1999: Understanding Relational Language Components. Morgan Kaufmann. ISBN 978-1-55860-456-8.
  2. 2.0 2.1 Microsoft. "सामान्य टेबल एक्सप्रेशंस का उपयोग करके पुनरावर्ती प्रश्न". Retrieved 2009-12-23.
  3. Helen Borrie (2008-07-15). "Firebird 2.1 Release Notes". Retrieved 2015-11-24.
  4. "प्रश्नों के साथ". 10 February 2022. PostgreSQL
  5. "WITH Clause". SQLite
  6. "MySQL 8.0 Labs: [Recursive] Common Table Expressions in MySQL (CTEs)". mysqlserverteam.com
  7. Paragon corporation: Using PostgreSQL User-Defined Functions to solve the Tree Problem, February 15, 2004, accessed September 19, 2015
  8. https://firebirdsql.org/file/documentation/reference_manuals/reference_material/Firebird-2.5-LangRef-Update.pdf[bare URL PDF]
  9. possible before 14.10 with temp tables https://stackoverflow.com/questions/42579298/why-does-a-with-clause-give-a-syntax-error-on-informix
  10. "Advanced".
  11. Karen Morton; Robyn Sands; Jared Still; Riyaj Shamsudeen; Kerry Osborne (2010). प्रो ओरेकल एसक्यूएल. Apress. p. 283. ISBN 978-1-4302-3228-5.
  12. "IBM Docs".
  13. "IBM Docs".
  14. Regina Obe; Leo Hsu (2012). PostgreSQL: Up and Running. O'Reilly Media. p. 94. ISBN 978-1-4493-2633-3.
  15. Jim Melton; Alan R. Simon (2002). SQL:1999: Understanding Relational Language Components. Morgan Kaufmann. p. 352. ISBN 978-1-55860-456-8.
  16. Don Chamberlin (1998). A Complete Guide to DB2 Universal Database. Morgan Kaufmann. pp. 253–254. ISBN 978-1-55860-482-7.
  17. "दृश्य बनाएँ". 10 February 2022.
  18. Benedikt, M.; Senellart, P. (2011). "Databases". In Blum, Edward K.; Aho, Alfred V. (eds.). Computer Science. The Hardware, Software and Heart of It. p. 189. doi:10.1007/978-1-4614-1168-0_10. ISBN 978-1-4614-1167-3.
  19. Sanjay Mishra; Alan Beaulieu (2004). ओरेकल एसक्यूएल मास्टरिंग. O'Reilly Media, Inc. p. 227. ISBN 978-0-596-00632-7.
  20. Hierarchical Queries Archived 2008-06-21 at the Wayback Machine, EnterpriseDB
  21. Hierarchical Queries, Oracle
  22. "CUBRID पदानुक्रमित क्वेरी". Retrieved 11 February 2013.
  23. Hierarchical Clause, IBM Informix
  24. Jonathan Gennick (2010). एसक्यूएल पॉकेट गाइड (3rd ed.). O'Reilly Media, Inc. p. 8. ISBN 978-1-4493-9409-7.


अग्रिम पठन

Academic textbooks. Note that these cover only the SQL:1999 standard (and Datalog), but not the ओरेकल extension.

  • Abraham Silberschatz; Henry Korth; S. Sudarshan (2010). Database System Concepts (6th ed.). McGraw-Hill. pp. 187–192. ISBN 978-0-07-352332-3.
  • Raghu Ramakrishnan; Johannes Gehrke (2003). Database management systems (3rd ed.). McGraw-Hill. ISBN 978-0-07-246563-1. Chapter 24.
  • Hector Garcia-Molina; Jeffrey D. Ullman; Jennifer Widom (2009). Database systems: the complete book (2nd ed.). Pearson Prentice Hall. pp. 437–445. ISBN 978-0-13-187325-4.


बाहरी संबंध