ऍसक्यूऍल

इतिहास

SQL को 1970 के दशक के शुरूआत में डैनियल रिचर्डसन, डॉनल्ड डी॰ चेम्बरलिन और रेमंड एफ. बॉयस द्वारा आइ०बी०ऍम० में विकसित किया गया था। यह संस्करण, जिसका प्रारंभिक नाम SEQUEL (सिक्वेल) था, आईबीएम के मूल रिलेशनल डेटाबेस उत्पाद सिस्टम आर. (System R) में संग्रहित डेटा के फेर-बदल तथा पुनःप्रतिष्ठापन के लिए डिजाइन किया गया था। IBM ने SQL के इस संस्करण का 1985 में पेटेंट करा लिया।
1970 के दशक के दौरान, IBM सैन जोस रिसर्च लैबॉरेटरी में एक समूह ने सिस्टम रिलेशनल डेटाबेस मैनेजमेंट सिस्टम को विकसित किया। उसके बाद IBM के डॉनल्ड डी. चैंबर्लिन और रेमंड एफ. बॉयस ने सिस्टम आर. (System R) में संग्रहित डेटा के प्रबंधन के लिए स्ट्रक्चर्ड इंग्लिश क्वेरी लैंग्वेज़ (SEQUEL या SEQL) की रचना की।  आदिवर्णिक शब्द SEQUEL को बाद में बदल कर SQL कर दिया गया क्योंकि "SEQUEL" UK स्थित हॉकर सिडली नामक विमान कंपनी का ट्रेडमार्क था।
1970 के दशक के आरंभ में MIT में विकसित RDMS और 1974 में यू.सी. बर्कले (U.C. Berkely) में विकसित इन्ग्रेस (Ingres), पहले रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (RDBMS) थे। इन्ग्रेस (Ingres) ने QUEL नामक एक क्वेरी लैंग्वेज़ को कार्यान्वित किया जिसे बाद में बाज़ार में SQL ने विस्थापित कर दिया। 
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 में व्यावसायिक रूप से उपलब्ध थे।
SQL की आम आलोचनाओं में वेंडर्स के बीच विभिन्न प्रचालन तंत्रों पर सुवाह्यता की कमी, खोए हुए डेटा का अनुपयुक्त संचालन (देखें Null(SQL)) और अनावश्यक रूप से जटिल और कभी-कभी अस्पष्ट भाषा व्याकरण और अर्थ शामिल थे। इसमें रिलेशनल ऐलजेब्रा जैसे औपचारिक भाषा की कठोरता का भी अभाव है।

डेटा टाइप्स (प्रकार)

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

मानक संरचना

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 कार्यान्वयनों द्वारा समर्थित मूल्य शामिल हैं। मानक के इस भाग में अनिवार्य और वैकल्पिक दोनों विशेषताएं शामिल हैं।
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 डेटा प्रकार मैपिंग, कई रूटीन्स और फंक्शंस का भी आरंभ किया गया है। मानक के इस भाग में केवल वैकल्पिक विशेषताएं ही शामिल है।