ऍसक्यूऍल

मुक्त ज्ञानकोश विकिपीडिया से
(एसक्यूएल से अनुप्रेषित)
SQL
प्रकार Multi-paradigm
पहला अवतरण 1974
डिज़ाइनर Donald D. Chamberlin and Raymond F. Boyce
निर्माता IBM
स्थायी विमोचन SQL:2008 (2008)
लिखने का तरिका Static, strong
उपयोग Many
भाषिका SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003, SQL:2008
प्रभावकर्ता Datalog
प्रभावित CQL, LINQ, Windows PowerShell
प्रचालन तन्त्र Cross-platform

संरचित पृच्छा भाषा[1][2] एक डेटाबेस प्रोग्रामिंग भाषा है जिसे रिलेशनल डेटाबेस मैनेजमेंट सिस्टम्स या संबंधपरक डेटाबेस प्रबन्धन प्रणाली में आंकणों के प्रबंधन के लिए बनाया गया है और यह मूलतः रिलेशनल ऐलजेब्रा या संबंधपरक बीजगणित पर आधारित है। इसके दायरे में आंकणों पर प्रश्न (क्वेरी), आँकणों का अद्दतन (अपडेट), स्कीमा (प्रयोगकर्ता) निर्माण और रूपांतरण और डेटा ऐक्सेस कंट्रोल (आँकणों के उपयोग पर नियंत्रण) शामिल है। SQL, एडगर एफ. कॉड के रिलेशनल मॉडल के सबसे प्रारंभिक कम्प्यूटर प्रोग्रामिंग भाषाओं में से एक था जिसे उन्होंने अपने 1970 के प्रभावशाली दस्तावेज़ (पेपर), "ए रिलेशनल मॉडल ऑफ डेटा फॉर लार्ज शेयर्ड डेटा बैंक्स"[3] में प्रस्तुत किया था और यह रिलेशनल डेटाबेसों के लिए सबसे व्यापक रूप से प्रयुक्त होने वाली भाषा बन गयी।[4][5]

इतिहास[संपादित करें]

SQL को 1970 के दशक के शुरुआत में डैनियल रिचर्डसन, डॉनल्ड डी॰ चेम्बरलिन और रेमंड एफ. बॉयस द्वारा आइ०बी०ऍम० में विकसित किया गया था। यह संस्करण, जिसका प्रारंभिक नाम SEQUEL (सिक्वेल) था, आईबीएम के मूल रिलेशनल डेटाबेस उत्पाद सिस्टम आर. (System R) में संग्रहित डेटा के फेर-बदल तथा पुनःप्रतिष्ठापन के लिए डिजाइन किया गया था। IBM ने SQL के इस संस्करण का 1985 में पेटेंट करा लिया।[6]

1970 के दशक के दौरान, IBM सैन जोस रिसर्च लैबॉरेटरी में एक समूह ने सिस्टम रिलेशनल डेटाबेस मैनेजमेंट सिस्टम को विकसित किया। उसके बाद IBM के डॉनल्ड डी. चैंबर्लिन और रेमंड एफ. बॉयस ने सिस्टम आर. (System R) में संग्रहित डेटा के प्रबंधन के लिए स्ट्रक्चर्ड इंग्लिश क्वेरी लैंग्वेज़ (SEQUEL या SEQL) की रचना की। [7] आदिवर्णिक शब्द SEQUEL को बाद में बदल कर SQL कर दिया गया क्योंकि "SEQUEL" UK स्थित हॉकर सिडली नामक विमान कंपनी का ट्रेडमार्क था।[8]

1970 के दशक के आरंभ में MIT में विकसित RDMS और 1974 में यू.सी. बर्कले (U.C. Berkely) में विकसित इन्ग्रेस (Ingres), पहले रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (RDBMS) थे। इन्ग्रेस (Ingres) ने QUEL नामक एक क्वेरी लैंग्वेज़ को कार्यान्वित किया जिसे बाद में बाज़ार में SQL ने विस्थापित कर दिया। [8]

1970 के दशक के आखिर में, रिलेशनल सॉफ्टवेयर, इंक. [Relational Software, Inc.] (अब ओरेकल कॉर्पोरेशन) ने कॉड, चैंबर्लिन और बॉयस द्वारा उल्लेखित अवधारणाओं की संभाव्यता को देखा और स्वयं की SQL आधारित RDBMS को इस आकांक्षा के साथ विकसित किया कि वह उसे यू.एस. नेवी, सेन्ट्रल इंटेलिजेंस एजेंसी और यू.एस. गवर्नमेंट एजेंसियों को बेच सके। 1979 की गर्मियों में, रिलेशनल सॉफ्टवेयर, इंक. ने वैक्स कंप्यूटरों के लिए व्यावसायिक तौर पर उपलब्ध SQL के प्रथम कार्यान्वयन, ओरेकल V2 (संस्करण 2) को प्रस्तुत किया। ओरेकल V2 [Oracle V2] ने बाज़ार में IBM के सिस्टम/38 RDBMS के रिलीज़ को कुछ सप्ताहों में ही मात दे दी।[उद्धरण चाहिए]

सिस्टम की उपयोगिता और व्यवहारिकता का निर्धारण करने हेतु ग्राहक परीक्षण स्थलों पर SQL का परीक्षण करने के बाद IBM ने उनके सिस्टम आर (System R) के मूलरूप पर आधारित व्यावसायिक उत्पादों का विकास करना शुरु किया। सिस्टम आर (System R) के मूलरूप में सिस्टम/38 (System/38), एसक्यूएल/डीएस और डीबी २ शामिल थे और जो क्रमशः 1979, 1981 और 1983 में व्यावसायिक रूप से उपलब्ध थे।[9]

SQL की आम आलोचनाओं में वेंडर्स के बीच विभिन्न प्रचालन तंत्रों पर सुवाह्यता की कमी, खोए हुए डेटा का अनुपयुक्त संचालन (देखें Null(SQL)) और अनावश्यक रूप से जटिल और कभी-कभी अस्पष्ट भाषा व्याकरण और अर्थ शामिल थे। इसमें रिलेशनल ऐलजेब्रा जैसे औपचारिक भाषा की कठोरता का भी अभाव है।

एसक्यूएल का परिचय[संपादित करें]

SQL, या स्ट्रक्चर्ड क्वेरी लैंग्वेज, एक डोमेन-विशिष्ट प्रोग्रामिंग भाषा है जिसका उपयोग रिलेशनल डेटाबेस के प्रबंधन और हेरफेर के लिए किया जाता है। यह डेटाबेस सिस्टम के साथ संचार के एक मानक साधन के रूप में कार्य करता है, जो डेटा के निर्माण, संशोधन और पुनर्प्राप्ति की सुविधा प्रदान करता है। SQL डेटाबेस प्रबंधन के क्षेत्र का अभिन्न अंग है और इसका उपयोग डेवलपर्स, डेटाबेस प्रशासकों और डेटा विश्लेषकों द्वारा किया जाता है। SQL के प्राथमिक कार्यों में डेटाबेस में नया डेटा सम्मिलित करना, मौजूदा रिकॉर्ड को अपडेट करना, डेटा हटाना और विशिष्ट जानकारी के लिए क्वेरी करना शामिल है। SQL एक रिलेशनल डेटाबेस मॉडल की नींव पर काम करता है, जहाँ डेटा को तालिकाओं में व्यवस्थित किया जाता है, जिनमें से प्रत्येक में पंक्तियाँ और स्तंभ होते हैं। SQL विभिन्न प्लेटफार्मों पर डेटाबेस के साथ इंटरैक्ट करने का एक सुसंगत और कुशल तरीका प्रदान करता है। इसके सिंटैक्स और कमांड को मानकीकृत किया गया है, जिससे उपयोगकर्ता विभिन्न डेटाबेस प्रबंधन प्रणालियों, जैसे कि MySQL, PostgreSQL, Oracle, SQL सर्वर और अन्य के साथ निर्बाध रूप से काम कर सकते हैं। [1]

भाषा के तत्त्व[संपादित करें]

इस चार्ट से SQL भाषा के उन तत्वों का पता चलता है जो एक स्टेटमेंट/query की रचना करते हैं।

SQL भाषा कई भाषा तत्वों में उप-विभाजित है, इनमें शामिल हैं:

  • क्लॉजेज़, जो कुछ मामलों में 'स्टेटमेंट्स' और 'क्वेरीज़' की संघटक, वैकल्पिक इकाइयां हैं।[10]
  • एक्सप्रेशंस जो या तो स्कैलर वैल्यूज़ या सारणी में डेटा वाली पंक्तियों और लम्बवत पंक्तियों से बने टेबलों का निर्माण कर सकते हैं।
  • प्रेडिकेट्स जो वैसे 'कंडीशंस' निर्दिष्ट करते हैं जिन्हें SQL थ्री-वैल्यूड लॉजिक (3VL) बूलियन ट्रूथ मानों में मूल्यांकित किया जा सकता है और जो स्टेटमेंट्स और क्वेरीज़ के प्रभावों को कम करने, या प्रोग्राम के प्रवाह को बदलने के लिए प्रयुक्त किए जाते हैं।
  • क्वेरीज जो विशिष्ट मापदंडों के आधार पर डेटा का पुनःप्रतिष्ठापन करते हैं।
  • स्टेटमेंट्स (प्रश्न वाक्य) जिनका स्कीमाज़ और डेटा पर निरंतर प्रभाव रह सकता है, या जो लेनदेन, प्रोग्राम प्रवाह, कनेक्शन, सत्र, या डायग्नोस्टिक्स का नियंत्रण कर सकते हैं।
    • SQL प्रश्न वाक्यों में सेमी कॉलन (";") भी शामिल है। इसे प्रश्न समाप्ति सूचक के तौर पर इस्तेमाल किया जाता है। हालांकि हरेक प्लेटफॉर्म पर इसकी ज़रुरत नहीं होती, इसे SQL व्याकरण के मानक हिस्से के रूप में निरूपित किया जाता है।
  • निरर्थक खाली जगहों को SQL वाक्यों और क्वेरीज़ में सामान्यतः नज़रंदाज़ कर दिया जाता है, इससे SQL वाक्यों को सुपाठ्यता के लिए लिखना आसन हो जाता है।

क्वेरीज़[संपादित करें]

SQL में सबसे आम कार्यवाही क्वेरी करना यानि आँकंणों के बारे में प्रश्न करना है, जो डिक्लेयरेटिव SELECT स्टेटमेंट के साथ निष्पादित किया जाता है। SELECT एक या एक से अधिक टेबल या एक्स्प्रेसंस से डेटा पुनःप्रतिष्ठापित करता है। मानक SELECT स्टेटमेंट्स का डेटाबेस पर कोई स्थायी प्रभाव नहीं होता है। SELECT की कुछ गैर-मानक परिणतियों का स्थायी प्रभाव रह सकता है, जैसे SELECT INTO वाक्यविन्यास (सिन्टैक्स) जो कुछ डेटाबेसों में मौजूद रहता है।[11]

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

एक क्वेरी में SELECT कीवर्ड के तुरंत बाद के परिणाम में सम्मिलित करने के लिए कॉलमों की एक सूची शामिल रहती है। यह निर्दिष्ट करने के लिए कि क्वेरी क्वेरिड टेबलों के सभी कॉलमों को रिटर्न करे, एक ऐस्टेरिस्क (*) का भी उपयोग किया जा सकता है। SELECT, SQL का सबसे जटिल स्टेटमेंट है जिसमें वैकल्पिक कीवर्ड्स और क्लॉजेज़ भी होते हैं। इनमें शामिल हैं:

  • FROM क्लॉज़ जो यह इंगित करता है कि कौन से टेबलों से डेटा को पुनःप्रतिष्ठापित किया जाना है। FROM क्लॉज़ में टेबलों को जोड़ने के लिए वैकल्पिक JOIN सबक्लॉज़ को शामिल किया जा सकता है।
  • WHERE क्लॉज़ में एक 'कम्पॅरिजन प्रेडीकेट' शामिल है जो क्वेरी द्वारा रिटर्न पंक्तियों को सीमित करता है। WHERE क्लॉज़ उन सभी पंक्तियों को रिजल्ट सेट से बाहर कर देता है जिनके लिए 'कम्पॅरिजन प्रेडिकेट्स' का मान 'ट्रू' नहीं हो पाता है।
  • GROUP BY क्लॉज़ का उपयोग समान मान वाली पंक्तियों को पंक्तियों के एक छोटे समूह में बदलने के लिए किया जाता है। GROUP BY का उपयोग अक्सर SQL ऐग्रिग्रेसन फंक्शनों के साथ संयोजन के रूप में डुप्लीकेट पंक्तियों को परिणामी सेट (रिजल्ट सेट) से बाहर करने के लिए होता है। WHERE क्लॉज GROUP BY क्लॉज़ से पहले प्रयुक्त होता है।
  • HAVING क्लॉज़ में GROUP BY क्लॉज़ से उत्पन्न पंक्तियों के निस्पंदन के लिए प्रयुक्त होने वाला एक प्रेडीकेट शामिल रहता है। चूंकि यह GROUP BY क्लॉज़ के परिणामों पर काम करता है, इसलिए HAVING क्लॉज़ प्रेडीकेट में ऐग्रिगेशन फंक्शनों का प्रयोग किया जा सकता है।
  • ORDER BY क्लॉज़ बतलाता है कि कौन से कॉलम परिणामी डेटा को क्रमबद्ध करने में प्रयुक्त होते हैं और कौन से क्रम में वे क्रमबद्ध होने चाहिए (विकल्प हैं, बढ़ते या घटते क्रम में). एक ORDER BY क्लॉज़ के बिना, एक SQL क्वेरी द्वारा रिटर्न किये गए पंक्तियों का अनुक्रम अपरिभाषित रहता है।

निम्नलिखित SELECT क्वेरी का एक उदाहरण है जो महंगी किताबों की एक सूची को रिटर्न करता है। क्वेरी BOOK नामक टेबल से उन पंक्तियों को प्राप्त कर लेता है जिनमें कि Price कॉलम में मौजूद मान 100.00 से ज्यादा है। परिणाम title के अनुसार बढ़ते हुए क्रम में क्रमबद्ध रहता है। select list में मौजूद ऐस्टरिस्क (*) यह दर्शाता है कि Book टेबल के सारे कॉलम रिजल्ट सेट में उपस्थित रहने चाहिए।

SELECT * 
 FROM Book
 WHERE price>100.00
 ORDER BY title;

नीचे दिया गया उदाहरण किताबों की एक सूची और प्रत्येक किताब से संबद्ध लेखकों की संख्या रिटर्न कर मल्टिपल टेबल, ग्रुपिंग और ऐग्रीगेशन की एक क्वेरी को दर्शाता है।

SELECT Book.title,
 count(*)AS Authors
 FROM Book
 JOIN Book_author ON Book.isbn = Book_author.isbn
 GROUP BY Book.title;

उदाहरण आउटपुट निम्नलिखित के जैसा हो कता है:

Title Authors
---------------------- -------
SQL Examples and Guide 4
The Joy of SQL 1
An Introduction to SQL 2
Pitfalls of SQL 1

इस पूर्व शर्त के अंतर्गत कि दोनों टेबलों में सिर्फ isbn ही सामान नाम वाले कॉलमों का नाम है और यह कि title नामक कॉलम सिर्फ Books टेबल में ही मौजूद है, ऊपर लिखित क्वेरी को निम्नलिखित रूप में दुबारा लिखा जा सकता है:

SELECT title,
 count(*) AS Authors
 FROM Book 
 NATURAL JOIN Book_author 
 GROUP BY title;

हालांकि, कई वेंडर्स या तो इस तरीके को सपोर्ट नहीं करते, या फिर उन्हें कॉलम नामकरण की परिपाटियों की ज़रुरत होती है।

SQL में संगृहीत मानों पर गणना करने के लिए ऑपरेटर्स और फंक्शन्स मौजूद होते हैं। SQL, डेटा को परियोजित करने के लिए select list (सेलेक्ट सूची) में एक्सप्रेशंस के प्रयोग की अनुमति देता है, जैसा निम्नलिखित उदाहरण में दर्शाया गया है जो उन पुस्तकों की एक सूची रिटर्न करता है जिनकी कीमत 100.00 से ज्यादा है, साथ में एक अतिरिक्त सेल्स टैक्स कॉलम भी है जिसमें sales tax (सेल्स टैक्स) का मान मौजूद है और यह मान price (कीमत) का 6% है।

SELECT isbn
 title,
 price, 
 price*0.06 AS sales_tax
 FROM Book
 WHERE price>100.00
 ORDER BY title;

नल और थ्री-वैल्यूड लॉजिक (3VL)[संपादित करें]

SQL में नल (Null) की अवधारणा, रिलेशनल मॉडल में अनुपस्थित जानकारी को नियंत्रित करने के लिए डाली गई थी। ट्रू और फॉल्स के साथ नल (या अज्ञात) की स्थापना थ्री-वैल्यूड लॉजिक की नींव है। नल का कोई मान नहीं होता (और न ही यह किसी डेटा अनुक्षेत्र (डोमेन) का सदस्य है), अपितु यह अनुपस्थित जानकारी के लिए प्रयोग किया जाने वाला एक स्थानधारक या चिह्न है। इसलिए नल (Null) के साथ की गयी तुलनाओं का परिणाम कभी भी ट्रू या फॉल्स नहीं हो सकता बल्कि यह सदा तीसरा लॉजिकल परिणाम- 'अननोन'(अज्ञात) होता है।[12]

SQL, नल को अनुपस्थित जानकारी को नियंत्रित करने के लिए प्रयोग करता है। यह थ्री-वैल्यूड लॉजिक (3VL) को सपोर्ट करता है। वो नियम जो SQL थ्री-वैल्यूड लॉजिक को नियमित करते हैं, नीचे दिए गए हैं (p और q लॉजिकल अवस्थाओं को दर्शाते हैं).[13] शब्द NULL SQL में एक आरक्षित कीवर्ड (रिज़र्व्ड कीवर्ड) भी है जो विशेष नल मार्कर (स्पेशल नल मार्कर) की पहचान करने में प्रयोग होता है।

इसके अतिरिक्त, चूंकि जब भी किसी चीज़ की तुलना नल से होती है तो SQL ऑपरेटर्स 'अननोन' रिटर्न करते हैं, इसलिए SQL विशेषतया नल संबंधी दो कम्पैरिजन प्रेडीकेट की सुविधा प्रदान करता है: IS NULL और IS NOT NULL जांच करते हैं कि डेटा नल है या नहीं। [14]

ध्यान दें कि SQL केवल उन परिणामों के लिए मान रिटर्न करता है जिनके लिए WHERE क्लॉज़ एक ट्रू मान रिटर्न करता है। यानी, यह फॉल्स मान वाले परिणाम अपवर्जित कर देता है, लेकिन यह उनको भी अपवर्जित कर देता है जिनके मान मालूम नहीं (अज्ञात) हैं।

valign="top"
p AND q p
True False Unknown
True True False Unknown
False False False False
Unknown Unknown False Unknown
valign="top"
p OR q p
True False Unknown
True True True True
False True False Unknown
Unknown True Unknown Unknown
valign="top"
p NOT p
True False
False True
False Unknown
valign="top"
p=q p
True False Unknown
True True False Unknown
False False True Unknown
Unknown Unknown Unknown Unknown

SQL, यूनिवर्सल क्वांटिफिकेशन (परिमाणन) को स्पष्टतया सपोर्ट नहीं करता और इसे 'निगेटेड एग्जिसटेनशिअल क्वानटिफिकेशन (परिमाणन)' के रूप में निकाला जाना ज़रूरी है।[15][16][17]

'इन फिक्सड कम्पेरिज़न ऑपरेटर' "<row value expression> IS DISTINCT FROM <row value expression>" भी है जो दोनों ऑपरैंड के बराबर होने पर या NULL होने पर TRUE रिटर्न करता है। इसी प्रकार IS NOT DISTINCT FROM को "NOT (<row value expression> IS DISTINCT FROM <row value expression>") के रूप में परिभाषित किया जाता है।

डेटा परिचालन[संपादित करें]

डेटा मैनिप्युलेशन लैंग्वेज़ (DML), SQL का एक सबसेट है जिसे डेटा को जोड़ने (ऐड), अद्यतन करने (अपडेट) और विलोपन करने (डिलीट) के लिए प्रयोग किया जाता है।

  • INSERT, एक मौजूदा टेबल में नई पंक्तियों (पहले टपल्स) को जोड़ता है, उदाहरणार्थ:
INSERT INTO My_table 
 (field1,field2,field3) 
 VALUES 
 ('test','N',NULL);
  • UPDATE, मौजूदा टेबल की पंक्तियों के एक सेट को रूपांतरित करता है।
UPDATE My_table 
 SET field1='updated value' 
 WHERE field2='N';
  • DELETE एक टेबल में मौजूद पंक्तियों को हटाता है, उदाहरणार्थ:
DELETE FROM My_table 
 WHERE field2='N';
  • TRUNCATE एक टेबल से सारे डेटा को बहुत शीघ्रता से मिटा देता है। आमतौर पर यह एक अनुवर्ती COMMIT ऑपरेशन का कार्यान्वयन करता है।
  • MERGE का एकाधिक टेबलों के डेटा को संयुक्त करने में प्रयोग किया जाता है। यह INSERT और UPDATE तत्वों को संयुक्त करता है। यह SQL:2003 मानक में परिभाषित है; इसके पहले, कुछ डेटाबेसों ने समान कार्यात्मकता को अलग सिंटेक्स (वाक्यविन्यास), जो कभी-कभी "upsert" के नाम से जाने जाते थे, के माध्यम से उपलब्ध कराया था।

ट्रांज़ैक्शन कंट्रोल्स[संपादित करें]

ट्रांज़ैक्शंस, यदि उपलब्ध हैं, DML ऑपरेशंस को सम्मिलित कर लेते हैं:

  • START TRANSACTION (या BEGIN WORK, या BEGIN TRANSACTION, SQL डायलेक्ट पर निर्भर), डेटाबेस ट्रांज़ैक्शन के आरम्भ को अंकित करते हैं जो (ट्रांज़ैक्शन) या तो पूरी तरह सम्पूर्ण हो जाते हैं या बिलकुल भी नहीं।
  • COMMIT, एक ट्रांज़ैक्शन में सभी डेटा परिवर्तनों को स्थायी बनाता है।
  • ROLLBACK, पिछले COMMIT या ROLLBACK के बाद से हुए सभी डेटा परिवर्तनों को हटा देता है जिससे डेटा की अवस्था वैसी रह जाती है जैसी उन बदलावों से पहले थी।

एक बार जब COMMIT स्टेटमेंट पूरा हो जाता है, तो ट्रांज़ैक्शन में हुए बदलाव को वापस नहीं लाया जा सकता है।

COMMIT और ROLLBACK वर्तमान ट्रांज़ैक्शन का अंत कर देते हैं और डेटा लॉक्स को रिलीज़ कर देते हैं। एक START TRANSACTION या इस जैसे स्टेटमेंट के अभाव में, SQL के सिमेंटिक्स कार्यान्वयन पर निर्भर होते हैं। उदाहरण: फंड ट्रांज़ैक्शन का एक क्लासिक बैंक हस्तांतरण (ट्रांसफर) .

START TRANSACTION;
 UPDATE Account SET amount=amount-200 WHERE account_number=1234;
 UPDATE Account SET amount=amount-200 WHERE account_number=2345;
IF ERRORS=0 COMMIT;
IF ERRORS<>0 ROLLBACK;

डेटा डेफिनिशन (डेटा निरूपण)[संपादित करें]

डेटा डेफिनिशन लैंग्वेज़ (DDL) टेबल और अनुक्रमणिका संरचना का प्रबंधन करता है। DDL की सबसे बुनियादी इकाइयां हैं- CREATE, ALTER, RENAME, DROP और TRUNCATE स्टेटमेंट्स:

  • CREATE डेटाबेस में एक ऑब्जेक्ट (जैसे, एक टेबल) का निर्माण करता है।
  • DROP डेटाबेस में ऑब्जेक्ट को मिटा देता है, आमतौर पर यह अप्राप्य होता है।
  • ALTER एक मौजूदा ऑब्जेक्ट की संरचना को विभिन्न तरीकों से रूपांतरित करता है—उदाहरण के लिए, एक मौजूदा टेबल में एक कॉलम जोड़ना.

उदाहरण:

CREATE TABLE My_table
(
 my_field1 INT,
 my_field2 VARCHAR (50),
 my_field3 DATE NOT NULL,
 PRIMARY KEY (my_field1, my_field2) 
);

डेटा टाइप्स (प्रकार)[संपादित करें]

SQL टेबल का प्रत्येक कॉलम, उस टाइप/टाइप्स को 'डिक्लेयर' करता है जो कॉलम में समाहित हो सकता है। ANSI SQL में निम्नलिखित डेटाटाइप्स शामिल हैं।[18]

कैरेक्टर स्ट्रिंग्स[संपादित करें]

  • CHARACTER(n) या CHAR(n) — निर्धारित चौड़ाई वाला n-कैरेक्टर स्ट्रिंग, जिसमें आवश्यकता के अनुसार रिक्त स्थानों की समाविष्टि भी की जा सकती है।
  • CHARACTER VARYING (n) या VARCHAR (n) — परिवर्तनीय चौड़ाई वाला स्ट्रिंग जिसका अधिकतम आकर n कैरेक्टरों का हो सकता है।
  • NATIONAL CHARACTER (n) या NCHAR (n) — निर्धारित चौड़ाई वाला स्ट्रिंग जो एक अंतर्राष्ट्रीय कैरेक्टर सेट को सपोर्ट करता है।
  • NATIONAL CHARACTER VARYING (n) या NVARCHAR (n) — परिवर्तनीय चौड़ाई वाला NCHAR स्ट्रिंग

बिट स्ट्रिंग[संपादित करें]

  • BIT (n)n बिट्स का एक एरे
  • BIT VARYING (n)n बिट्स तक के आकार का एक एरे

नम्बर्स (संख्याएं)[संपादित करें]

  • INTEGER और SMALLINT
  • FLOAT REAL और DOUBLE PRECISION
  • NUMERIC (precision, scale) या DECIMAL (precision, scale)

SQL, संख्याओं या तारीखों को 'राउंड' करने हेतु एक फंक्शन की सुविधा प्रदान करता है। इसे (DB2, PostgreSQL [पोस्टग्रीSQL], Oracle [ओरेकल] और MySQL में) TRUNC, या (Sybase [सीबेस], Oracle [ओरेकल] और Microsoft SQL Server [माइक्रोसॉफ्ट SQL सर्वर]) में ROUND कहा जाता है।[19]

दिनांक और समय[संपादित करें]

  • DATE
  • TIME
  • TIMESTAMP
  • INTERVAL

डेटा कंट्रोल (नियंत्रण)[संपादित करें]

डेटा कंट्रोल लैंग्वेज़ (DCL) उपयोगकर्ताओं और उपयोगकर्ताओं के समूहों को डेटा को ऐक्सेस और मेनीप्यूलेट (जोड़-तोड़) करने के लिए अधिकृत करता है। इसके दो मुख्य स्टेटमेंट्स हैं:

  • GRANT एक या अधिक उपयोगकर्ताओं को एक ऑब्जेक्ट पर किसी संक्रिया या संक्रियाओं के समूह के निष्पादन के लिए अधिकृत करता है।
  • REVOKE एक ग्रांट को, जो हो सकता है कि डिफॉल्ट ग्रांट हो, हटा देता है।

उदाहरण:

GRANT SELECT, UPDATE 
 ON My_table 
 TO Some_user, another_user;

REVOKE SELECT,UPDATE 
 ON My_table 
 FROM Some_user, another_user;

प्रोसीडूरल एक्सटेंशंस (प्रक्रियात्मक विस्तारण)[संपादित करें]

SQL एक विशिष्ट प्रयोजन: रिलेशनल डेटाबेस में रखे हुए डेटा के क्वेरी के लिए डिजाइन किया गया है। SQL एक सेट-आधारित, डिक्लेयरेटिव, क्वेरी लैंग्वेज़ है, न कि C या BASIC (बेसिक)की तरह का एक 'इम्पेरेटिव लेंग्वेज'. हालांकि, मानक SQL के विस्तारण मौजूद हैं जो प्रोसीडूरल प्रोगार्मिंग लैंग्वेज़ की क्रियात्मकता, जैसे कि 'कंट्रोल-ऑफ-फ्लो कन्सट्रक्ट्स', प्रदान करते हैं। ये हैं:

सोर्स (स्रोत) सामान्य
नाम
पूरा नाम
ANSI/ISO स्टैंडर्ड SQL/PSM SQL/पर्ज़िस्टेंट स्टोर्ड मॉड्यूल्स
इन्टरबेस (Interbase)/
फायरबर्ड (Firebird)
PSQL प्रोसीज़रल SQL
IBM SQL PL SQL प्रोसीज़रल लैंग्वेज़ (SQL/PSM का परिपालन करता है)
माइक्रोसॉफ्ट (Microsoft)/
सीबेस (Sybase)
T-SQL ट्रांज़ैक्ट-SQL (Transact-SQL)
माइSQL (MySQL) SQL/PSM SQL/पर्ज़िस्टेंट स्टोर्ड मॉड्यूल (SQL/PSM का परिपालन करता है)
ओरेकल (Oracle) PL/SQL प्रोसीज़रल लैंग्वेज़/SQL (Ada पर आधारित)
पोस्टग्रीSQL (PostgreSQL) PL/pgSQL प्रोसीडूरल लैंग्वेज़/पोस्टग्रीSQL स्ट्रक्चर्ड क्वेरी लैंग्वेज़ (ओरेकल PL/SQL पर आधारित)
पोस्टग्रीSQL (PostgreSQL) PL/PSM प्रोसीडूरल लैंग्वेज़/पर्ज़िस्टेंट स्टोर्ड मॉड्यूल्स (SQL/PSM का परिपालन करता है)

मानक SQL/PSM एक्सटेंशंस (विस्तारणों) और प्रोपरायटरी SQL एक्सटेंशंस (विस्तारणों) के अलावा, प्रोसीडूरल और ऑब्जेक्ट ओरिएन्टेड प्रोग्रामिंग विशिष्टताओं की सुविधा DBMS के दूसरे लैंग्वेज़ों के साथ एकीकरण के ज़रिये प्राप्त की जा सकती है। SQL मानक, SQL डेटाबेस में जावा कोड को सपोर्ट करने के लिए, SQL/JRT एक्सटेंशंस (जावा प्रोग्रामिंग लैंगवेज़ के लिए SQL रूटीन्स और टाइप्स) को निरूपित करता है। SQL सर्वर 2005 SQLCLR (SQL सर्वर कॉमन लैंग्वेज़ रन टाइम) का प्रयोग डेटाबेस में प्रबंधित .NET असेम्बलियों की मेजबानी के लिए होता है, जबकि SQL सर्वर के पूर्व संस्करण मुख्यतः C में लिखे गए अप्रबंधित एक्सटेन्डेड स्टोर्ड प्रोसीज़रों के उपयोग तक ही सीमित थे। अन्य डेटाबेस प्लैटफॉर्म्स, जैसे MySQL और पोस्टग्रीस (Postgres), फंक्शनों को पर्ल (Perl), पायथन (python), Tcl और C जैसे विभिन्न प्रकार के लैंग्वेज़ों में लिखने की अनुमति देते हैं।

SQL की आलोचना[संपादित करें]

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

SQL के प्रयोगात्मक आलोचनाओं में शामिल हैं:

  • कार्यान्वयन, असंगत हैं और आम तौर पर विक्रेताओं के मध्य इनका कोई तालमेल नहीं है। विशिष्ट दिनांक और समय पर, वाक्यविन्यास, स्ट्रिंग का जुड़ाव, नल्स और तुलनात्मक वर्ण संवेदनशीलता, एक विक्रेता दूसरे विक्रेता तक अलग-अलग होती है।
  • यह लैंग्वेज़ इसे कार्टीज़ियन जुड़ाव (सभी संभव संयोजनों को जोड़ने) का कार्य करने में इसे बहुत आसान बना डेटा है जिसके परिणामस्वरूप "रन-अवे" परिणाम सेट प्राप्त होते हैं जब WHERE क्लॉज़ों को गलत टाइप कर दिया जाता है। कार्टीज़ियन जुड़ाव का व्यव्हार इतना कम होता है कि एक स्पष्ट CARTESIAN कीवर्ड की आवश्यकता का समर्थन प्राप्त हो सकता है। (SQL 1992 में CROSS JOIN कीवर्ड को समाविष्ट किया गया जो प्रयोक्ता को यह निर्दिष्ट करने की अनुमति प्रदान करता है कि एक कार्टीज़ियन जुड़ाव की आवश्यकता है लेकिन आशुलिपि "अल्पविराम-जुड़ाव", जिसमें कोई विधेय न हों, अभी भी स्वीकार्य वाक्यविन्यास है जो उसी गलती को फिर भी आमंत्रित करता है।)
  • यह भी संभव है कि अपडेट या डिलीट करते समय WHERE की संरचना में गलती हो जाए जो टेबल के वांछनीय पंक्तियों से भी ज्यादा पंक्तियों को प्रभावित कर देता है। (सबसे पहले WHERE क्लॉज़ में लेनदेन या आदतन प्रकार का प्रयोग करने के लिए एक वर्क-अराउंड होता है, तब जाकर बाकी सब को भरा जाता है।)
  • SQL का व्याकरण शायद अनावश्यक रूप से जटिल होता है और एक COBOL-जैसी कीवर्ड दृष्टिकोण का अनुकरण करता है जब एक कार्य-प्रभावित वाक्यविन्यास के परिणामस्वरूप कुछ व्याकरण और वाक्यविन्यास नियमों का पुनः प्रयोग किया जाता है।

क्रॉस-वेंडर पोर्टेबिलिटी[संपादित करें]

SQL के अधिकांश कार्यान्वयनों में सामान्यतः DATE या TIME डेटा प्रकारों जैसे स्टैंडर्ड SQL के बुनियादी विशेषताओं के समर्थन को भुला दिया जाता है। जिसके परिणामस्वरूप, शायद ही कभी SQL कोड को बिना संशोधनों के डेटाबेस सिस्टमों में रखा जा सकता है।

डेटाबेस सिस्टमों में पोर्टेबिलिटी (संगतता) के इस अभाव के पीछे कई कारण हैं:

  • SQL मानक की जटिलता और आकार का तात्पर्य यही है कि अधिकांश कार्यान्वयक संपूर्ण मानक का समर्थन नहीं करते हैं।
  • मानक, कई महत्वपूर्ण क्षेत्रों (जैसे, अनुक्रम, फ़ाइल भंडारण...) में डेटाबेस के आचरण को निर्दिष्ट नहीं करता है लेकिन यह कार्यान्वयन को निर्दिष्ट करता है ताकि इसके आचरण का निर्णय लिया जा सके।
  • SQL मानक सटीक रूप से वाक्यविन्यास को निर्दिष्ट करता है कि एक अनुरूप डेटाबेस सिस्टम को अवश्य ही कार्यान्वित किया जाना चाहिए। हालांकि, लैंग्वेज़ की संरचनाओं के सिमेंटिक्स के प्रति मानक के विनिर्देश का बहुत कम निरूपण प्राप्त होता है जो संदिग्धता की ओर ले जाती है।
  • कई डेटाबेस विक्रेताओं के पास बड़े-बड़े मौजूदा ग्राहक डेटाबेस हैं; जब SQL मानक, विक्रेता के डेटाबेस के पूर्व आचरण का विरोध करता है तो विक्रेता, पिछड़ी संगतता को छोड़ने के लिए अनिच्छुक हो सकता है।
  • सॉफ्टवेयर विक्रेता अक्सर अन्य उत्पादों के साथ असंगतता का निर्माण करने के इच्छुक रहते हैं क्योंकि इससे उसके मौजूदा प्रयोक्ता उसके प्रति वफादार बने रहते हैं (वेंडर लॉक-इन देखें).

मानकीकरण[संपादित करें]

SQL को 1986 में अमेरिकन नैशनल स्टैंडर्ड्स इंस्टिट्यूट [अमरीकी राष्ट्रीय मानक संस्थान] (ANSI) ने एक मानक के रूप में और 1987 में इंटरनैशनल ऑर्गनाइज़ेशन फॉर स्टैंडर्डाइज़ेशन [अंतर्राष्ट्रीय मनाकीकरण संगठन] (ISO) ने SQL-86[20] के रूप में ग्रहण किया। मूल SQL मानक ने घोषणा की कि SQL का आधिकारिक उच्चारण, "es queue el [एस क्यू एल]" है।[1] कई अंग्रेज़ी-बोलने वाले डेटाबेस संव्यावसायिक अभी भी गैरमानक[21] उच्चारण /ˈsiːkwəl/ (शब्द "सिक्वल" की तरह) का प्रयोग करते हैं। SEQUEL, एक प्रारंभिक IBM डेटाबेस लैंग्वेज़, SQL लैंग्वेज़ का एक पूर्ववर्ती लैंग्वेज़ था।[22]

1996 तक, [[नैशनल इंस्टिट्यूट ऑफ़ स्टैंडर्ड्स ऐंड टेक्नोलॉजी [राष्ट्रीय मानक और प्रौद्योगिकी संस्थान]]] (NIST) के डेटा प्रबंधन मानक कार्यक्रम के तहत SQL मानक के साथ SQL DBMS अनुपालन को प्रमाणिकता दी गई। विक्रेता अब अपने उत्पादों के अनुपालन को स्वयं ही प्रमाणिकता प्रदान करते हैं।[23]

SQL मानक को कई बार संशोधित किया गया है जैसा कि नीचे दर्शाया गया है:

वर्ष नाम उर्फ टिप्पणियां (comments)
1986 SQL-86 SQL-87 ANSI ने पहली बार इसे निर्दिष्ट आकार प्रदान किया।
1989 SQL-89 FIPS 127-1 मामूली संशोधन, FIPS 127-1 के रूप में अपनाया.
1992 SQL-92 SQL2, FIPS 127-2 प्रमुख संशोधन (ISO 9075), प्रवेश स्तर SQL-92 को FIPS 127-2 के रूप में अपनाया.
1999 SQL:1999 SQL3 नियमित अभिव्यक्ति मिलान, पुनरावर्ती प्रश्नों, ट्रिगरों, प्रक्रियात्मक और कंट्रोल-ऑफ़-फ्लो स्टेटमेंट्स का समर्थन, गैर-अदिश प्रकार और लक्ष्य-उन्मुख विशेषताओं को शामिल किया गया।
2003 SQL:2003   XML-संबंधित विशेषताओं, विंडो फंक्शंस, मानकीकृत अनुक्रमों और स्व-उत्पन्न मूल्यों वाले कॉलमों (परिचय-कॉलमों सहित) का आरंभ हुआ।
2006 SQL:2006   ISO/IEC 9075-14:2006 ने उन तरीकों को परिभाषित किया जिसमें SQL को XML के साथ संयोजन में प्रयुक्त किया जा सकता है। इसने उन तरीकों को भी परिभाषित किया जिसके अंतर्गत एक SQL डेटाबेस में XML डेटा को लाया जाता है और संग्रह किया जाता है और डेटाबेस के अंतर्गत इसमें फेर बदल किया जाता है और XML तथा पारंपरिक SQL-डेटा दोनों को XML रूप में प्रकाशित किया जाता है। इसके अलावा, इसने अनुप्रयोगों को उनके SQL कोड में एकीकृत होने और Xक्वेरी (XQuery) का प्रयोग करने के साथ-साथ साधारण SQL-डेटा और XML दस्तावेजों को ऐक्सेस करने में सक्षम बनाया। XML क्वेरी लैंग्वेज़ को वर्ल्ड वाइड वेब कंसोर्टियम (W3C) ने प्रकाशित किया था।
2008 SQL:2008   कर्सर परिभाषा के बाहर ORDER BY (ऑर्डर बाइ) को कानूनी रूप प्रदान किया गया। INSTEAD OF (इंस्टीड ऑफ़) ट्रिगरों को भी जोड़ा गया। TRUNCATE (ट्रंकेट) स्टेटमेंट को भी शामिल किया गया।[24]

इच्छुक पार्टियां, इन SQL मानक दस्तावेजों को ISO या ANSI से खरीद सकती हैं। SQL:2008 का एक ड्राफ्ट, एक ज़िप आर्काइव के रूप में निःशुल्क उपलब्ध है।[25]

मानक संरचना[संपादित करें]

SQL मानक को कई भागों में बांटा गया हैं जिनमें शामिल हैं:

SQL फ्रेमवर्क जो तार्किक अवधारणा प्रदान करता है

SQL/फाउंडेशन जिसे ISO/IEC 9075, भाग 2 में परिभाषित किया गया है। मानक के इस भाग में लैंग्वेज़ के सबसे मुख्य तत्त्व मौजूद हैं। इसमें अनिवार्य और वैकल्पिक दोनों ही विशेषताएं उपलब्ध हैं।

SQL/बाइंडिंग्स जो यह निर्दिष्ट करता है कि SQL, जावा (Java) को छोड़कर, अलग-अलग मेज़बान लैंग्वेज़ों में कैसे बाध्य है।

SQL/CLI, या कॉल-लेवल इंटरफेस, इस भाग को ISO/IEC 9075, भाग 3 में परिभाषित किया गया है। SQL/CLI, सामान्य इंटरफेसिंग घटकों (संरचना और प्रक्रिया) को परिभाषित करता है जिसे अन्य प्रोग्रामिंग लैंग्वेज़ों में रचित अनुप्रयोगों से SQL स्टेटमेंट्स को निष्पादित करने के लिए प्रयोग किया जा सकता है। SQL/CLI को इस प्रकार से परिभाषित किया गया है कि SQL स्टेटमेंट्स और SQL/CLI प्रक्रिया कॉल्स को अनुप्रयोग के स्रोत कोड की कॉलिंग से अलग के रूप में व्यवहृत किया जाता है। ओपन डेटाबेस कनेक्टिविटी, SQL/CLI का एक जाना-माना सुपरसेट है। मानक के इस भाग में सिर्फ अनिवार्य विशेषताएं ही होती हैं।

SQL/PSM, या पर्ज़िस्टेंट स्टोर्ड मॉड्यूल्स [लगातार संग्रहित मॉड्यूल], इस भाग को ISO/IEC 9075, भाग 4 द्वारा परिभाषित किया गया है। SQL/PSM, नियंत्रण-प्रवाह, स्थिति प्रबंधन, स्टेटमेंट स्थिति संकेत और पुनर्संकेत, कर्सर और स्थानीय वेरिएबल और वेरिएबल और पैरामीटर के लिए अभिव्यक्ति का कार्य सहित SQL के प्रक्रियात्मक विस्तारणों को मानकीकृत करता है। इसके अतिरिक्त, SQL/PSM, पर्ज़िस्टेंट डेटाबेस लैंग्वेज़ के नित्यकर्मों की घोषणा और रखरखाव का कार्य करता है। मानक के इस भाग में केवल वैकल्पिक विशेषताएं होती हैं।

SQL/MED, या मैनेजमेंट ऑफ़ एक्सटर्नल डेटा [बाह्य डेटा का प्रबंधन], इस भाग को ISO/IEC 9075, भाग 9 द्वारा परिभाषित किया गया है। SQL/MED, SQL में विस्तारण प्रदान करता है जो एक्सटर्नल डेटा का प्रबंधन करने के लिए SQL को अनुमति देने के लिए फोरेन-डेटा रैपर्स और डेटालिंक प्रकारों को परिभाषित करता है। एक्सटर्नल डेटा, वह डेटा है जिसे SQL-आधारित DBMS में ऐक्सेस तो किया जा सकता है लेकिन इसका प्रबंधन नहीं किया जा सकता है। मानक के इस भाग में केवल वैकल्पिक विशेषताएं होती हैं।

SQL/OLB, या ऑब्जेक्ट लैंग्वेज़ बाइंडिंग्स, इस भाग को ISO/IEC 9075, भाग 10 द्वारा परिभाषित किया गया है। SQL/OLB, SQLJ के वाक्यविन्यास और सिमेंटिक्स को परिभाषित करता है जो जावा (Java) में SQL एम्बेडेड होता है। यह मानक, SQLJ अनुप्रयोगों की बाइनरी पोर्टेबिलिटी सुनिश्चित करने वाले क्रियाविधियों का भी वर्णन करता है और विभिन्न जावा (Java) पैकेजों और उनमें समाहित वर्गों को भी निर्दिष्ट करता है। मानक के इस भाग में केवल वैकल्पिक विशेषताएं होती हैं।

SQL/MM (मल्टीमीडिया), बड़े, जटिल और कभी-कभी स्ट्रीमिंग आइटम वाले डेटा जैसे वीडियो, ऑडियो और स्थानिक डेटा के साथ होशियारी से निपटने के लिए SQL का विस्तार करता है।

SQL/स्कीमाटा, या इनफॉरमेशन ऐंड डेफिनिशन स्कीमाज़, इस भाग को ISO/IEC 9075, भाग 11 द्वारा परिभाषित किया गया है। SQL/स्कीमाटा, इनफॉरमेशन स्कीमा और डेफिनिशन स्कीमा को परिभाषित करता है और इसके लिए यह SQL डेटाबेसों और ऑब्जेक्टों स्व-वर्णी बनाने के लिए उपकरणों का एक सामान्य सेट प्रदान करता है। इन उपकरणों में SQL ऑब्जेक्ट परिचायक, संरचना और एकीकरण बाध्यता, सुरक्षा और प्राधिकरण निर्दिष्टीकरण, ISO/IEC 9075 की विशेषता और पॅकेज, SQL-आधारित DBMS कार्यान्वयनों द्वारा प्रदत्त विशेषताओं का समर्थन, SQL-आधारित DBMS कार्यान्वयन सूचना और साइज़िंग आइटम और DBMS कार्यान्वयनों द्वारा समर्थित मूल्य शामिल हैं।[26] मानक के इस भाग में अनिवार्य और वैकल्पिक दोनों विशेषताएं शामिल हैं।

SQL/JRT, या SQL रूटीन्स ऐंड टाइप्स फॉर द जावा प्रोग्रामिंग लैंग्वेज़ (जावा प्रोग्रामिंग लैंग्वेज़ के लिए SQL के नित्यकर्म और प्रकार), इस भाग को ISO/IEC 9075, भाग 13 द्वारा परिभाषित किया गया है। SQL/JRT, स्थिर जावा तरीकों को SQL अनुप्रयोग के भीतर से नित्यकर्मों के रूप में लागू करने की क्षमता को निर्दिष्ट करता है। यह जावा वर्गों को SQL संरचित प्रयोक्ता-परिभाषित प्रकारों के रूप में प्रयुक्त करने की क्षमता के लिए भी कॉल करता है। मानक के इस भाग में केवल वैकल्पिक विशेषताएं ही मिलती हैं।

SQL/XML, या XML-संबंधित निर्दिष्टीकरण, इस भाग को ISO/IEC 9075, भाग 14 द्वारा परिभाषित किया गया है। SQL/XML, SQL के साथ संयोजन के रूप में XML का उपयोग करने के लिए SQL-आधारित विस्तारणों को निर्दिष्ट करता है। XML डेटा प्रकार के साथ-साथ SQL डेटाबेस में XML के फेर बदल और भंडारण का समर्थन करने के लिए XML से SQL डेटा प्रकार मैपिंग, कई रूटीन्स और फंक्शंस का भी आरंभ किया गया है। मानक के इस भाग में केवल वैकल्पिक विशेषताएं ही शामिल है।

SQL के विकल्प[संपादित करें]

रिलेशनल क्वेरी लैंग्वेज़ और SQL के विकल्पों में एक अन्तर स्थापित करना आवश्यक है। SQL के प्रस्तावित रिलेशनल विकल्पों को नीचे प्रस्तुत किया गया है। रिलेशनल के विकल्पों के लिए नेविगेशनल डेटाबेस देखें:

इन्हें भी देखें[संपादित करें]

सन्दर्भ[संपादित करें]

  1. Chapple, Mike. "SQL Fundamentals". About.com: Databases. About.com. मूल से 22 फ़रवरी 2009 को पुरालेखित. अभिगमन तिथि 28 जनवरी 2009.
  2. Beaulieu, Alan (अप्रैल 2009). Mary E. Treseler (संपा॰). Learning SQL (2nd संस्करण). Sebastapol, CA, USA: O'Reilly. आई॰ऍस॰बी॰ऍन॰ 978-0-596-52083-0.
  3. Codd, E.F. (1970). "A Relational Model of Data for Large Shared Data Banks". Communications of the ACM. Association for Computing Machinery. 13 (No. 6): 377–387. डीओआइ:10.1145/362384.362685. मूल से 12 जून 2007 को पुरालेखित. अभिगमन तिथि 9 जून 2007. नामालूम प्राचल |month= की उपेक्षा की गयी (मदद)
  4. "Structured Query Language (SQL)". International Business Machines. October 27, 2006. अभिगमन तिथि 10 जून 2007.[मृत कड़ियाँ]
  5. Chapple, Mike. "SQL Fundamentals". About.com: Databases. About.com. मूल से 17 नवंबर 2007 को पुरालेखित. अभिगमन तिथि 10 जून 2007.
  6. Shaw; एवं अन्य (19 मार्च 1985). "US Patent 4,506,326". अभिगमन तिथि 4 नवंबर 2008. Explicit use of et al. in: |author= (मदद)[मृत कड़ियाँ]
  7. Chamberlin, Donald D.; Boyce, Raymond F. (1974). "SEQUEL: A Structured English Query Language" (PDF). Proceedings of the 1974 ACM SIGFIDET Workshop on Data Description, Access and Control. Association for Computing Machinery: 249–264. मूल से 26 सितंबर 2007 को पुरालेखित (PDF). अभिगमन तिथि 9 जून 2007.
  8. Oppel, Andy (March 1, 2004). Databases Demystified. San Francisco, CA: McGraw-Hill Osborne Media. पपृ॰ 90–91. आई॰ऍस॰बी॰ऍन॰ 0-07-225364-9.
  9. "History of IBM, 1978". IBM Archives. IBM. मूल से 10 मार्च 2007 को पुरालेखित. अभिगमन तिथि 9 जून 2007.
  10. ANSI/ISO/IEC इंटरनैशनल स्टैंडर्ड (अंतर्राष्ट्रीय मानक) (IS). डेटाबेस लैंग्वेज़ SQL—भाग 2: फाउंडेशन (SQL/फाउंडेशन). 1999.
  11. "INTO Clause (Transact-SQL)". SQL Server 2005 Books Online. Microsoft. 2007. मूल से 21 जून 2007 को पुरालेखित. अभिगमन तिथि 17 जून 2007;. |accessdate= में तिथि प्राचल का मान जाँचें (मदद)सीएस1 रखरखाव: फालतू चिह्न (link)
  12. ISO/IEC (2003). ISO/IEC 9075-1:2003, "SQL/Framework". ISO/IEC. Section 4.4.2: The null value. मूल से 7 अगस्त 2008 को पुरालेखित. अभिगमन तिथि 16 जून 2020.
  13. Coles, Michael (27 जून 2005). "Four Rules for Nulls". SQL Server Central. Red Gate Software. मूल से 25 जुलाई 2008 को पुरालेखित. अभिगमन तिथि 17 जून 2010.
  14. ISO/IEC. ISO/IEC 9075-2:2003, "SQL/Foundation". ISO/IEC.
  15. एम. नेग्री, जी. पेलागटी, एल. स्बटेला (1989) SQL में सार्वभौमिक मात्रा निर्धारण के शब्दार्थ और समस्याएं .
  16. फ्रैटरकैनजेली, क्लॉडियो (1991). टेक्नीक फॉर यूनिवर्सल क्वांटिफिकेशन इन SQL (SQL में सार्वभौमिक मात्रा निर्धारण की तकनीक). ACM.org. से पुनः प्राप्त.
  17. कैवाश, जलाल (2004). स्ट्रक्चर्ड क्वेरी लैंग्वेज (SQL) में जटिल मात्रा निर्धारण: रिलेशनल कैलकुलस का उपयोग करने वाला एक ट्यूटोरियल - जर्नल ऑफ़ कंप्यूटर्स इन मैथमेटिक्स ऐंड साइंस टीचिंग ISSN 0731-9258 खंड 23, अंक 2, 2004 AACE नोरफोल्क, वर्जीनिया. Thefreelibrary.com Archived 2010-12-04 at the वेबैक मशीन (दफ्रीलाइब्रेरी.कॉम) से पुनः प्राप्त.
  18. "सूचना प्रौद्योगिकी - डेटाबेस लैंग्वेज SQL (DIS 9075 का प्रस्तावित संशोधित पाठ)". मूल से 21 जून 2006 को पुरालेखित. अभिगमन तिथि 17 जून 2010.
  19. ऐरी जोन्स, रयान के. स्टीफंस, रोनाल्ड आर. प्लियू, एलेक्स क्रिएगल, रॉबर्ट एफ. गैरेट (2005), SQL फंक्शंस प्रोग्रामर'स रेफेरेंस . विले, 127 पृष्ठ
  20. अमेरिकन नैशनल स्टैंडर्ड्स इंस्टिट्यूट Archived 2010-06-19 at the वेबैक मशीन (अमेरिकी राष्ट्रीय मानक संस्थान).X3H2 रिकॉर्ड्स, 1978-1995. Archived 2010-06-19 at the वेबैक मशीनफाइंडिंग ऐड. Archived 2010-06-19 at the वेबैक मशीन
  21. Melton, Jim; Alan R Simon (1993). Understanding the New SQL: A Complete Guide. Morgan Kaufmann. पृ॰ 536. आई॰ऍस॰बी॰ऍन॰ 1558602453. chapter 1.2 What is SQL? SQL (correctly pronounced "ess cue ell," instead of the somewhat common "sequel"), is a...
  22. "Understand SQL". www.faqs.org/docs/. मूल से 2 जून 2010 को पुरालेखित. अभिगमन तिथि 17 जून 2010.
  23. Doll, Shelley (June 19, 2002). "Is SQL a Standard Anymore?". TechRepublic's Builder.com. TechRepublic. मूल से 3 जुलाई 2007 को पुरालेखित. अभिगमन तिथि 9 जून 2007.
  24. Sybase.com Archived 2011-06-28 at the वेबैक मशीन (सीबेस.कॉम)
  25. ज़िप आर्काइव ऑफ़ द SQL Archived 2011-07-18 at the वेबैक मशीन: 2008 ड्राफ्ट, व्हाइटमार्श इनफ़ॉर्मेशन सिस्टम्स कॉर्पोरेशन से.
  26. "ISO/IEC 9075-11:2008: Information and Definition Schemas (SQL/Schemata)". 2008: 1. Cite journal requires |journal= (मदद)

बाहरी कड़ियाँ[संपादित करें]

रिसर्च के सन्दर्भ में भी संक्षेप में विचार-विमर्श किया।

साँचा:Query languages