ऍसक्यूऍल
| प्रकार | Multi-paradigm |
|---|---|
| पहला अवतरण | 1974 |
| डिज़ाइनर | Donald D. Chamberlin and Raymond F. Boyce |
| निर्माता | IBM |
| Stable release | SQL:2008 (2008) |
| लिखने का तरिका | Static, strong |
| उपयोग | Many |
| Dialects | SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003, SQL:2008 |
| प्रभावकर्ता | Datalog |
| Influenced | CQL, LINQ, Windows PowerShell |
| OS | Cross-platform |
SQL (स्ट्रक्चर्ड क्वेरी लैंग्वेज़) [संरचित क्वेरी भाषा] (उच्चारित/ˌɛs.kjuːˈɛl/ES-kyoo-EL) [1][2] एक डेटाबेस कंप्यूटर लैंग्वेज़ है जिसे [[रिलेशनल डेटाबेस मैनेजमेंट सिस्टम्स [संबंधपरक डेटाबेस प्रबंधन प्रणाली]]] (RDBMS) में डेटा के प्रबंधन के लिए डिजाइन किया गया है और यह मूलतः [[रिलेशनल ऐलजिब्रा [संबंधपरक बीजगणित]]] पर आधारित है. इसके दायरे में डेटा क्वेरी और अपडेट, स्कीमा निर्माण और रूपांतरण, और डेटा ऐक्सेस कंट्रोल (डेटा के उपयोग पर नियंत्रण) शामिल है. SQL, एडगर एफ. कॉड के रिलेशनल मॉडल के सबसे प्रारंभिक लैंग्वेज़ों में से एक था जिसे उन्होंने अपने 1970 के प्रभावशाली दस्तावेज़ (पेपर), "ए रिलेशनल मॉडल ऑफ डेटा फॉर लार्ज शेयर्ड डेटा बैंक्स"[3] में प्रस्तुत किया था और यह रिलेशनल डेटाबेसों के लिए सबसे व्यापक रूप से प्रयुक्त होने वाला लैंग्वेज़ बन गया.[4][5]
अनुक्रम |
इतिहास [संपादित करें]
SQL को 1970 के दशक के शुरूआत में डैनियल रिचर्डसन, डॉनल्ड सी. मेसर्ली और रेमंड एफ. बॉयस द्वारा IBM में विकसित किया गया था. यह संस्करण, जिसका प्रारंभिक नाम SEQUEL (सिक्वेल) था, IBM के मूल रिलेशनल डेटाबेस उत्पाद सिस्टम आर. (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.] (अब [[ओरेकल कॉर्पोरेशन [Oracle Corporation]]]) ने कॉड, चैंबर्लिन, और बॉयस द्वारा उल्लेखित अवधारणाओं की संभाव्यता को देखा और स्वयं की SQL आधारित RDBMS को इस आकांक्षा के साथ विकसित किया कि वह उसे यू.एस. नेवी, [[सेन्ट्रल इंटेलिजेंस एजेंसी [Central Intelligence Agency]]], और यू.एस. गवर्नमेंट एजेंसियों को बेच सके. 1979 की गर्मियों में, रिलेशनल सॉफ्टवेयर, इंक. [Relational Software, Inc.] ने VAX कंप्यूटरों के लिए व्यावसायिक तौर पर उपलब्ध SQL के प्रथम कार्यान्वयन, [[ओरेकल [Oracle]]] V2 (संस्करण 2) को प्रस्तुत किया. ओरेकल V2 [Oracle V2] ने बाज़ार में IBM के सिस्टम/38 RDBMS के रिलीज़ को कुछ सप्ताहों में ही मात दे दी.[कृपया उद्धरण जोड़ें]
सिस्टम की उपयोगिता और व्यवहारिकता का निर्धारण करने हेतु ग्राहक परीक्षण स्थलों पर SQL का परीक्षण करने के बाद IBM ने उनके सिस्टम आर (System R) के मूलरूप पर आधारित व्यावसायिक उत्पादों का विकास करना शुरु किया. सिस्टम आर (System R) के मूलरूप में सिस्टम/38 (System/38), SQL/DS और DB2 शामिल थे और जो क्रमशः 1979, 1981 और 1983 में व्यावसायिक रूप से उपलब्ध थे.[9]
SQL की आम आलोचनाओं में वेंडर्स के बीच क्रॉस-प्लेटफॉर्म सुवाह्यता की कमी, खोए हुए डेटा का अनुपयुक्त संचालन (देखें Null(SQL) ), और अनावश्यक रूप से जटिल और कभी-कभी अस्पष्ट लैंग्वेज़ व्याकरण और सिमेन्टिक्स शामिल थे. इसमें रिलेशनल ऐलजिब्रा जैसे फ़ॉर्मल लैंग्वेजों की कठोरता का भी अभाव है.
भाषा के तत्व [संपादित करें]
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" |
|
valign="top" |
|
valign="top" |
|
valign="top" |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 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औरSMALLINTFLOATREALऔरDOUBLE PRECISIONNUMERIC (precision, scale)याDECIMAL (precision, scale)
SQL, संख्याओं या तारीखों को 'राउंड' करने हेतु एक फंक्शन की सुविधा प्रदान करता है. इसे (DB2, PostgreSQL [पोस्टग्रीSQL], Oracle [ओरेकल] और MySQL में) TRUNC, या (Sybase [सीबेस], Oracle [ओरेकल] और Microsoft SQL Server [माइक्रोसॉफ्ट SQL सर्वर]) में ROUND कहा जाता है.[19]
दिनांक और समय [संपादित करें]
DATETIMETIMESTAMPINTERVAL
डेटा कंट्रोल(नियंत्रण) [संपादित करें]
डेटा कंट्रोल लैंग्वेज़ (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 के प्रस्तावित रिलेशनल विकल्पों को नीचे प्रस्तुत किया गया है. रिलेशनल के विकल्पों के लिए नेविगेशनल डेटाबेस देखें:
- [[.]]QL - ऑब्जेक्ट-ओरिएन्टेड डेटालॉग
- 4D क्वेरी लैंग्वेज़ [4D Query Language] (4D QL)
- डेटालॉग
- हाइबरनेट क्वेरी भाषा [Hibernate Query Language] (HQL) - एक जावा-आधारित उपकरण जो संशोधित SQL का उपयोग करता है.
- IBM बिज़नस सिस्टम 12 [IBM Business System 12] (IBM BS12)
- ISBL
- जावा पर्ज़िस्टेंस क्वेरी लैंग्वेज़ [Java Persistence Query Language] (JPQL) - जावा EE5 [Java EE5] में जावा पर्ज़िस्टेंस API [Java Persistence API] द्वारा प्रयुक्त क्वेरी लैंग्वेज़
- LINQ
- ऑब्जेक्ट क्वेरी लैंग्वेज़ (Object Query Language)
- QBE (क्वेरी बाइ एक्ज़ाम्पल) मोशे ज़्लूफ, IBM 1977 द्वारा निर्मित
- क्यूएल जिसका आरंभ यू.सी. बर्कले इन्ग्रेस (U.C. Berkeley Ingres) परियोजना द्वारा 1974 में किया गया
- ट्यूटोरियल D (Tutorial D)
- Xक्वेरी (XQuery)
इन्हें भी देखें [संपादित करें]
- ऑब्जेक्ट-रिलेशनल डेटाबेस प्रबंधन प्रणालियों की तुलना
- रिलेशनल डेटाबेस प्रबंधन प्रणालियों की तुलना
- D (डेटा लैंग्वेज़ विनिर्देशन)
- D4 (प्रोग्रामिंग लैंग्वेज़) (D का एक कार्यान्वयन)
- पदानुक्रमित मॉडल
- कंप्यूटर मानकों की सूची
- रिलेशनल डेटाबेस प्रबंधन प्रणालियों की सूची
- MUMPS
- ड्रॉप-डाउन सूची का खोज सुझाव
संदर्भ [संपादित करें]
- ↑ 1.0 1.1 Chapple, Mike. "SQL Fundamentals". About.com: Databases. About.com. http://databases.about.com/od/sql/a/sqlfundamentals.htm. अभिगमन तिथि: 2009-01-28.
- ↑ Beaulieu, Alan (April 2009). Mary E. Treseler. ed. Learning SQL (2nd ed.). Sebastapol, CA, USA: O'Reilly. आई॰ऍस॰बी॰ऍन॰ 978-0-596-52083-0.
- ↑ Codd, E.F. (June 1970). "A Relational Model of Data for Large Shared Data Banks". Communications of the ACM (Association for Computing Machinery) 13 (No. 6): 377–387. doi:10.1145/362384.362685. http://www.acm.org/classics/nov95/toc.html. अभिगमन तिथि: 2007-06-09.
- ↑ "Structured Query Language (SQL)". International Business Machines. October 27, 2006. http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.admin.doc/doc/c0004100.htm. अभिगमन तिथि: 2007-06-10.
- ↑ Chapple, Mike. "SQL Fundamentals". About.com: Databases. About.com. http://databases.about.com/od/sql/a/sqlfundamentals.htm?terms=SQL. अभिगमन तिथि: 2007-06-10.
- ↑ Shaw et al. (1985-03-19). "US Patent 4,506,326". http://www.google.com/patents?id=eKI-AAAAEBAJ. अभिगमन तिथि: 2008-11-04.
- ↑ 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. http://www.almaden.ibm.com/cs/people/chamberlin/sequel-1974.pdf. अभिगमन तिथि: 2007-06-09.
- ↑ 8.0 8.1 Oppel, Andy (March 1, 2004). Databases Demystified. San Francisco, CA: McGraw-Hill Osborne Media. pp. 90–91. आई॰ऍस॰बी॰ऍन॰ 0-07-225364-9. http://www.mhprofessional.com/product.php?cat=112&isbn=0072253649.
- ↑ "History of IBM, 1978". IBM Archives. IBM. http://www-03.ibm.com/ibm/history/history/year_1978.html. अभिगमन तिथि: 2007-06-09.
- ↑ ANSI/ISO/IEC इंटरनैशनल स्टैंडर्ड (अंतर्राष्ट्रीय मानक) (IS). डेटाबेस लैंग्वेज़ SQL—भाग 2: फाउंडेशन (SQL/फाउंडेशन). 1999.
- ↑ "INTO Clause (Transact-SQL)". SQL Server 2005 Books Online. Microsoft. 2007. http://msdn2.microsoft.com/en-us/library/ms188029(SQL.90).aspx. अभिगमन तिथि: 2007-06-17;.
- ↑ ISO/IEC (2003). ISO/IEC 9075-1:2003, "SQL/Framework". ISO/IEC. Section 4.4.2: The null value. http://www.iso.org.
- ↑ Coles, Michael (2005-06-27). "Four Rules for Nulls". SQL Server Central (Red Gate Software). http://www.sqlservercentral.com/columnists/mcoles/fourrulesfornulls.asp.
- ↑ ISO/IEC. ISO/IEC 9075-2:2003, "SQL/Foundation". ISO/IEC.
- ↑ एम. नेग्री, जी. पेलागटी, एल. स्बटेला (1989) SQL में सार्वभौमिक मात्रा निर्धारण के शब्दार्थ और समस्याएं .
- ↑ फ्रैटरकैनजेली, क्लॉडियो (1991). टेक्नीक फॉर यूनिवर्सल क्वांटिफिकेशन इन SQL (SQL में सार्वभौमिक मात्रा निर्धारण की तकनीक). ACM.org. से पुनः प्राप्त.
- ↑ कैवाश, जलाल (2004). स्ट्रक्चर्ड क्वेरी लैंग्वेज (SQL) में जटिल मात्रा निर्धारण: रिलेशनल कैलकुलस का उपयोग करने वाला एक ट्यूटोरियल - जर्नल ऑफ़ कंप्यूटर्स इन मैथमेटिक्स ऐंड साइंस टीचिंग ISSN 0731-9258 खंड 23, अंक 2, 2004 AACE नोरफोल्क, वर्जीनिया. Thefreelibrary.com (दफ्रीलाइब्रेरी.कॉम) से पुनः प्राप्त.
- ↑ सूचना प्रौद्योगिकी - डेटाबेस लैंग्वेज SQL (DIS 9075 का प्रस्तावित संशोधित पाठ)
- ↑ ऐरी जोन्स, रयान के. स्टीफंस, रोनाल्ड आर. प्लियू, एलेक्स क्रिएगल, रॉबर्ट एफ. गैरेट (2005), SQL फंक्शंस प्रोग्रामर'स रेफेरेंस . विले, 127 पृष्ठ
- ↑ अमेरिकन नैशनल स्टैंडर्ड्स इंस्टिट्यूट (अमेरिकी राष्ट्रीय मानक संस्थान).X3H2 रिकॉर्ड्स, 1978-1995. फाइंडिंग ऐड.
- ↑ 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..."
- ↑ "Understand SQL". www.faqs.org/docs/. http://www.faqs.org/docs/ppbook/c1164.htm.
- ↑ Doll, Shelley (June 19, 2002). "Is SQL a Standard Anymore?". TechRepublic's Builder.com. TechRepublic. http://builder.com.com/5100-6388-1046268.html. अभिगमन तिथि: 2007-06-09.
- ↑ Sybase.com (सीबेस.कॉम)
- ↑ ज़िप आर्काइव ऑफ़ द SQL: 2008 ड्राफ्ट, व्हाइटमार्श इनफ़ॉर्मेशन सिस्टम्स कॉर्पोरेशन से.
- ↑ ISO/IEC 9075-11:2008: Information and Definition Schemas (SQL/Schemata). 2008. p. 1.
- "ए रिलेशनल मॉडल ऑफ़ डेटा फॉर लार्ज शेयर्ड डेटा बैंक्स" इ. एफ. कॉड, कम्युनिकेशंस ऑफ़ द ACM, खंड 13, अंक 6, जून 1970, पीपी. 377-387.
- कथित SQL दोषों (C2 wiki [विकी]) पर चर्चा
बाहरी लिंक [संपादित करें]
| विकिपुस्तक पर
SQL से सम्बन्धित एक किताब है।
|
| विकिपुस्तक पर
SQL dialects reference से सम्बन्धित एक किताब है।
|
| विकिविश्वविद्यालय में Topic:Computer Science पर पाठ्य सामग्री उपलब्ध है: |
- 1995 SQL रियूनियन: पीपुल, प्रोजेक्ट्स, ऐंड पॉलिटिक्स , पॉल मैकजोन्स (ed.) द्वारा: रिलेशनल डेटाबेस और SQL के निजी इतिहास को समर्पित एक पुनर्मिलन बैठक की प्रतिलिपि.
- अमेरिकन नैशनल स्टैंडर्ड्स इंस्टिट्यूट (अमरीकी राष्ट्रीय मानक संस्थान). X3H2 रिकॉर्ड्स, 1978-1995 चार्ल्स बैबेज इंस्टिट्यूट कलेक्शन ने NDL और SQL मानकों के संदर्भ में H2 समिति के विकास के दस्तावेज़ प्रस्तुत किए.
- डॉनल्ड डी. चैंबर्लिन के साथ मौखिक इतिहास साक्षात्कार, चार्ल्स बैबेज इंस्टिट्यूट, इस मौखिक इतिहास में, चैंबर्लिन ने अपने प्रारंभिक जीवन, हार्वे मड कॉलेज और स्टैनफोर्ड यूनिवर्सिटी में प्राप्त अपनी शिक्षा और रिलेशनल डेटाबेस प्रौद्योगिकी पर किए गए अपने कार्य का वर्णन प्रस्तुत किया. चैंबर्लिन, सिस्टम R रिसर्च टीम के एक सदस्य थे और रेमंड एफ. बॉयस के साथ मिलकर उसने SQL डेटाबेस लैंग्वेज़ को विकसित किया. चैंबर्लिन ने XML क्वेरी लैंग्वेजों पर हाल ही में की गई
रिसर्च के संदर्भ में भी संक्षेप में विचार-विमर्श किया.
- विभिन्न SQL कार्यान्वयनों की तुलना विभिन्न SQL कार्यान्वयनों की इस तुलना का उद्देश्य विभिन्न RDBMS उत्पादों में SQL कोड को डालने के इच्छुक लोगों के एक मार्गनिर्देशक के रूप में अपनी सेवा प्रदान करना और SQL:2008, पोस्टग्रीSQL (PostgreSQL), DB2, MS SQL सर्वर (MS SQL Server), माइSQL (MySQL), ओरेकल (Oracle) और इनफॉर्मिक्स (Informix) के बीच तुलना शामिल करना है.
|
|||||||||||||||||