यदि आप डेटा-प्रधान उद्योग में काम करते हैं, तो आपने निश्चित रूप से डेटाबेस का नाम सुना होगा। डेटाबेस में संग्रहीत डेटा तक पहुँचने का एक बहुत आम तरीका SQL है। इस लेख में, आप SQL के बारे में और जानेंगे। लेकिन SQL में प्रयुक्त सिंटैक्स और शब्दावली सीधे सीखने के बजाय, हम कंप्यूटर विज्ञान की कुछ प्रमुख अवधारणाओं पर चलेंगे जो हमें इस प्रश्न का उत्तर देने में मदद करेंगी: क्या SQL एक प्रोग्रामिंग भाषा है?
SQL क्या है?
पहले यह समझते हैं कि डेटाबेस क्या है। सरल शब्दों में, डेटाबेस संरचित डेटा को रखने के लिए एक भंडारण प्रणाली है। इसके अतिरिक्त, डेटाबेस प्रबंधन प्रणाली (DBMS) डेटाबेस और उसके अंतिम-उपयोगकर्ताओं या प्रोग्रामों के बीच एक इंटरफेस का काम करती है। आप इस संबंध के बारे में अधिक DataCamp के Database Design कोर्स में सीख सकते हैं।
सबसे आम प्रकार का DBMS रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (RDBMS) है, जहाँ हम संरचित डेटा संग्रहीत करते हैं, यानी ऐसा डेटा जिसमें संस्थाओं और चर के बीच संबंध शामिल होते हैं। ये संस्थाएँ और चर कॉलम और पंक्तियों वाली तालिकाओं के समूह के रूप में व्यवस्थित होते हैं।
RDBMS में डेटा एक डेटाबेस ऑब्जेक्ट जिसे टेबल कहते हैं, में संग्रहीत होता है। एक डेटाबेस में प्रायः कई टेबल होती हैं। प्रत्येक टेबल एक अद्वितीय नाम से पहचानी जाती है और संबंधित डेटा प्रविष्टियों का एक संग्रह रखती है, जो पंक्तियों और कॉलम के रूप में संरचित होती हैं। टेबल में कॉलम को फील्ड्स कहा जाता है और वे टेबल के किसी विशिष्ट गुण के मान रखते हैं। टेबल में प्रत्येक पंक्ति को रिकॉर्ड कहा जाता है।
SQL, जिसका उच्चारण “एस-क्यू-एल” या “सीक्वल” किया जाता है, का अर्थ है Structured Query Language। SQL का उपयोग प्रोग्रामिंग में होता है और यह SQL क्वेरीज़ के माध्यम से RDBMS में संग्रहीत डेटा को प्रबंधित करने के लिए डिज़ाइन की गई है।
क्वेरी मूलतः विभिन्न SQL कमांड से बनी हुई एक स्टेटमेंट होती है, जो मिलकर आपके डेटा तक पहुँचने, उसे प्रबंधित करने, संशोधित करने, अपडेट करने, नियंत्रित करने और व्यवस्थित करने जैसा कोई विशिष्ट कार्य करती है। क्वेरी की यह परिभाषा ‘कंप्यूटर प्रोग्राम’ से काफी मिलती-जुलती लगती है; तो क्या इसका मतलब है कि SQL एक प्रोग्रामिंग भाषा है?
आइए अगला खंड पढ़कर बेहतर समझते हैं कि प्रोग्रामिंग भाषा का अर्थ क्या होता है।
प्रोग्रामिंग भाषा क्या है?
एक प्रोग्रामिंग भाषा पूर्वनिर्धारित शब्दावली और व्याकरणिक नियमों के समूह से बनी होती है। यह भाषा तब कंप्यूटर या कंप्यूटिंग डिवाइस को विशिष्ट कार्य करने का निर्देश दे सकती है।
प्रोग्रामिंग भाषाएँ कई प्रकार की होती हैं, जिनकी विशेषताएँ और उद्देश्य अलग-अलग होते हैं। हालांकि, सामान्यतः इन्हें दो समूहों में बाँटा जा सकता है: लो-लेवल और हाई-लेवल प्रोग्रामिंग भाषाएँ।
जो प्रोग्रामिंग भाषाएँ मशीन कोड या बाइनरी (1 और 0) के अधिक निकट होती हैं, वे लो-लेवल भाषाएँ कहलाती हैं।
लो-लेवल भाषाएँ लोगों के लिए अक्सर पढ़ना कठिन होती हैं क्योंकि वे निर्देशों को वैसा ही संरचित करती हैं जैसा कोई मशीन “सोचती” है। फिर भी, वे शुद्ध 1 और 0 की तुलना में समझने में आसान होती हैं।
तो लो-लेवल भाषा का उपयोग क्यों करें? क्योंकि वे तेज होती हैं! और वे प्रोग्रामर को इस बात पर अधिक सटीक नियंत्रण देती हैं कि कंप्यूटर हार्डवेयर कैसे काम करेगा।
दूसरी ओर, हाई-लेवल भाषाएँ इस बात के अधिक निकट होती हैं कि इंसान कैसे संवाद करते हैं। वे निर्देशों में ऐसे शब्दों का उपयोग करती हैं जो हमारी रोज़मर्रा की भाषाओं से मेल खाते हैं, जिससे उनमें प्रोग्राम बनाना और उनका रखरखाव करना आसान होता है। कमी यह है कि कंप्यूटर के समझने लायक मशीन कोड में अनुवाद करने में उन्हें अधिक समय लगता है।
लेकिन जैसे-जैसे कंप्यूटर अधिक शक्तिशाली होते गए हैं, लो-लेवल और हाई-लेवल भाषाओं के प्रदर्शन का अंतर अक्सर केवल मिलीसेकंड का रह गया है। यही कारण है कि अधिकांश प्रोग्रामिंग नौकरियाँ हाई-लेवल प्रोग्रामिंग कौशल वाले लोगों की तलाश करती हैं।
ट्यूरिंग पूर्णता (Turing Completeness) क्या है?
किसी प्रोग्रामिंग भाषा की शक्ति मापने के लिए, कंप्यूटर वैज्ञानिक अक्सर ट्यूरिंग पूर्णता की अवधारणा का उपयोग करते हैं। इसका नाम एलन ट्यूरिंग के नाम पर रखा गया है, जिन्होंने 1936 में ट्यूरिंग मशीन का प्रस्ताव रखा था। यह कंप्यूटिंग और कंप्यूटरों के बारे में सिद्धांतों की नींव बन गई।
ट्यूरिंग मशीन एक ऐसा उपकरण था जो कागज़ की टेप पर प्रतीकों को इस तरह छापता था कि वह किसी व्यक्ति द्वारा तार्किक निर्देशों का पालन करने का अनुकरण करे।
प्रोग्रामिंग भाषाएँ औपचारिक नियम-प्रणालियाँ हैं जो डेटा तक पहुँचती हैं और उसे संशोधित करती हैं। यदि ये नियम ट्यूरिंग की काल्पनिक कंप्यूटिंग मशीन का अनुकरण कर सकते हैं, तो उन्हें "ट्यूरिंग पूर्ण" कहा जाता है। एक ट्यूरिंग पूर्ण प्रणाली को गणितीय रूप से किसी भी संभावित गणना करने में सक्षम सिद्ध किया जा सकता है।
ट्यूरिंग मशीन और ट्यूरिंग पूर्णता की अवधारणा पर अधिक जानने के लिए हम Computerphile का यह वीडियो देखने की अत्यधिक अनुशंसा करते हैं।
जनरल-पर्पज़ प्रोग्रामिंग भाषा बनाम डोमेन-विशिष्ट भाषा
SQL में पूर्वनिर्धारित कीवर्ड का एक सेट होता है और यह सख्त सिंटैक्स का पालन करती है। SQL में प्रोग्रामिंग शुरू करने के लिए, DataCamp का Introduction to SQL कोर्स देखें, जहाँ हम रिकॉर्ड्स और फील्ड्स का चयन और फ़िल्टरिंग से शुरू करते हैं और फिर एग्रीगेट फंक्शंस, सॉर्टिंग और ग्रुपिंग पर जाते हैं।
किसी प्रोग्रामिंग भाषा की परिभाषा के अनुसार, जिसमें एक निश्चित शब्दावली और विशिष्ट सिंटैक्स होता है, SQL निश्चित रूप से एक प्रोग्रामिंग भाषा है। हालाँकि, यह जनरल पर्पज़ लैंग्वेज (GPL) नहीं है और वास्तव में एक डोमेन-विशिष्ट भाषा (DSL) है।
डोमेन-विशिष्ट भाषा वह कंप्यूटर भाषा है जो किसी विशेष डोमेन की समस्याएँ हल करने के लिए विशेष रूप से बनाई जाती है और जिसका उद्देश्य इसके बाहर की समस्याएँ हल करना नहीं होता।
इन्हें डिजाइन और इम्प्लीमेंटेशन में खास उद्देश्यों को ध्यान में रखकर बनाया जाता है। उदाहरण के लिए, SQL को विशेष रूप से डेटाबेस के साथ काम करने, डेटाबेस को क्वेरी करने और उनमें संग्रहीत डेटा के साथ काम करने के लिए बनाया गया था। आप केवल SQL का उपयोग करके पूरा एप्लिकेशन नहीं बना सकते।
DSL का एक और उदाहरण Cascading Style Sheets—यानी CSS—है, जो वेबसाइटों पर HTML को स्टाइल करने के लिए उपयोग की जाती है।
DSL के विपरीत, General Purpose Language (GPL) होता है, जो विभिन्न डोमेनों में व्यापक रूप से लागू होता है। इन्हें इस तरह डिजाइन किया जाता है कि आप किसी भी प्रकार की लॉजिक के साथ किसी भी तरह का प्रोग्राम लिख सकें।
आप GPL का उपयोग करके हर तरह के एप्लिकेशन बना सकते हैं, जिनमें डेस्कटॉप, मोबाइल, या वेब एप्लिकेशन शामिल हैं। सबसे व्यापक रूप से उपयोग किए जाने वाले GPL में Python, C++, Ruby, Java और JavaScript शामिल हैं।
सामान्यतः, DSLs GPLs से कम शक्तिशाली होती हैं। हालाँकि, इसका एक लाभ भी है। अपने संकीर्ण अनुप्रयोग डोमेन के कारण, SQL अधिकांश जनरल-पर्पज़ प्रोग्रामिंग भाषाओं की तुलना में अपेक्षाकृत आसान है।
हम आपको DataCamp का SQL Fundamentals ट्रैक करने के लिए प्रोत्साहित करते हैं, जहाँ हम 21 घंटों में 5 कोर्स के साथ आपको SQL में शुरुआती से प्रो तक ले जाते हैं।
तो क्या SQL एक प्रोग्रामिंग भाषा है?
जैसा कि हमने पहले चर्चा की, ट्यूरिंग पूर्णता किसी प्रोग्रामिंग भाषा की शक्ति का संकेत है। भाषा जितनी अधिक शक्तिशाली होगी, वह उतनी ही जटिल गणनाएँ कर सकती है। SQL में कॉमन टेबल एक्सप्रेशन (CTEs) और विंडो फंक्शंस के आने से हम SQL के साथ पुनरावर्ती और अनुक्रमिक गणनाएँ कर सकते हैं, जिससे यह और भी शक्तिशाली हो जाती है और ट्यूरिंग पूर्ण के रूप में योग्य ठहरती है।
हालाँकि, SQL मानक में अनुक्रमिक और पुनरावर्ती क्वेरी की विशेषताएँ जोड़ने में लंबा समय लगा। इसलिए कुछ पुराने, परंपरागत RDBMS ट्यूरिंग पूर्ण के रूप में योग्य नहीं हो सकते।
हमने पहले चर्चा की कि एक जनरल प्रोग्रामिंग भाषा डोमेन-विशिष्ट प्रोग्रामिंग भाषा से कैसे भिन्न होती है। जब लोग “प्रोग्रामिंग भाषा” कहते हैं, तो वे अक्सर “जनरल-पर्पज़ प्रोग्रामिंग भाषा” का मतलब लेते हैं, जो कभी-कभी भ्रमित कर सकता है।
तो प्रोग्रामिंग भाषा की उचित परिभाषा के अनुसार, SQL एक डोमेन-विशिष्ट प्रोग्रामिंग भाषा है जो ट्यूरिंग पूर्ण है। इस प्रकार SQL एक प्रोग्रामिंग भाषा के रूप में योग्य है।
जो लोग पहले से SQL की बुनियादी बातें जानते हैं और आगे बढ़कर विंडो फंक्शंस शुरू करना चाहते हैं, वे DataCamp का इंटरएक्टिव कोर्स PostgreSQl Summary Stats and Window Functions देखें। आप विंडो फंक्शंस—SQL का गुप्त हथियार—के साथ एनालिटिक्स और डेटा इंजीनियरिंग उद्देश्यों के लिए क्वेरी बनाना सीखेंगे!
SQL के विभिन्न प्रकार
आपने SQL के विभिन्न प्रकारों या बोलियों के बारे में सुना होगा: T-SQL, PostgreSQL, MySQL, आदि। लेकिन आप सोच रहे होंगे कि ये अलग-अलग प्रकार क्यों हैं और अस्तित्व में कैसे आए? आइए SQL के संक्षिप्त इतिहास पर नज़र डालते हैं।
IBM में कार्यरत ब्रिटिश कंप्यूटर वैज्ञानिक एडगर फ्रैंक कॉड ने 1970 में “A Relational Model of Data for Large Shared Data Banks” नामक पेपर प्रकाशित किया। यहीं पर उन्होंने डेटाबेस प्रबंधन के लिए रिलेशनल मॉडल का आविष्कार किया, जो तब से रिलेशनल डेटाबेस और रिलेशनल डेटाबेस मैनेजमेंट सिस्टम्स का सैद्धांतिक आधार रहा है।
इसके बाद, 1980 के दशक के उत्तरार्ध में आधिकारिक SQL मानक बनाने के प्रयास किए गए।
SQL 1986 में American National Standards Institute (ANSI) और 1987 में International Organization for Standardization (ISO) का मानक बन गया। 1980 के दशक से SQL मानक में कई बार संशोधन किया गया है, हालाँकि मानक SQL की मुख्य विशेषताएँ 1992 से स्थिर रही हैं।
फिर भी, नई विविधताएँ आती रहीं क्योंकि अलग-अलग कंपनियों में काम कर रहे डेटाबेस इम्प्लीमेंटरों को नई समस्याएँ हल करनी थीं या पहले से मौजूद समस्याओं का वैकल्पिक समाधान करना था, जिनका SQL मानक में समाधान नहीं था। यही बताता है कि कई SQL बोलियाँ कैसे उभरीं और आज भी साथ-साथ क्यों मौजूद हैं।
आज केवल एक SQL भाषा मौजूद है, लेकिन विभिन्न डेटाबेस मैनेजमेंट सिस्टम्स ने मूल SQL मानक का विस्तार करते हुए अपनी-अपनी कार्यात्मकताएँ जोड़ीं या सिंटैक्स को अपने ढंग से अपनाया। ऐसा करते हुए, उन्होंने SQL की कई बोलियों को जन्म दिया।
इन अलग-अलग बोलियों के बारे में आप हमारे ब्लॉग लेख ‘SQL Server, PostgreSQL, MySQL... क्या अंतर है? कहाँ से शुरू करूँ?’ में अधिक पढ़ सकते हैं।
किस SQL बोली से शुरुआत करें?
हम सुझाव देते हैं कि आप PostgreSQL से शुरुआत करें।
PostgreSQL एक शक्तिशाली, ओपन-सोर्स, ऑब्जेक्ट-रिलेशनल डेटाबेस सिस्टम है जो SQL भाषा का उपयोग करता है और उसे विस्तारित करता है। इसमें ऐसी कई विशेषताएँ भी हैं जो सबसे जटिल डेटा वर्कलोड को सुरक्षित रूप से संग्रहीत और स्केल करती हैं।
यह मानक SQL के सबसे क़रीब है और व्यापक रूप से प्रयुक्त SQL बोली है। PostgreSQL से शुरू करने पर आपको सबसे लचीला टूल मिलेगा, जिससे आप बाद में अन्य SQL बोलियों के अनुरूप ढल सकेंगे और अपने कौशल को अन्य RDBMS पर भी लागू कर सकेंगे।
DataCamp का Functions for Manipulating Data in PostgreSQL कोर्स एक बेहतरीन इंटरमीडिएट-स्तरीय इंटरएक्टिव कोर्स है, जो आपको सही दिशा में आगे बढ़ने में मदद करेगा।
SQL और प्रोसिजरल भाषाएँ
तो, हमें पता है कि SQL एक जनरल-पर्पज़ प्रोग्रामिंग भाषा नहीं है। फिर भी, आप SQL को प्रोसिजरल भाषाओं के साथ मिलाकर कुछ GPL-जैसे व्यवहार हासिल कर सकते हैं। ऐसा करने से तकनीकी रूप से SQL को निर्धारित डोमेन के अलावा किसी अन्य डोमेन में उपयोग करना संभव हो जाता है।
प्रोसिजरल भाषाएँ वे प्रोग्रामिंग भाषाएँ हैं जो विशेष रूप से फंक्शंस, कंडीशनल स्टेटमेंट्स और वेरिएबल्स के उपयोग से ऐसे प्रोग्राम लिखने में संलग्न होती हैं जिन्हें कंप्यूटर पहचान सके और एक निश्चित कम्प्यूटेशनल आउटपुट प्राप्त कर सके।
सभी डेटाबेस मैनेजमेंट सिस्टम (DBMS) एक या अधिक प्रोसिजरल भाषाओं की बोलियाँ स्वीकार करते हैं। कुछ उदाहरण इस प्रकार हैं:
Procedural Language for SQL (PL/SQL)
यह Oracle Corporation द्वारा बनाया गया SQL का एक एक्सटेंशन है। जनरल-पर्पज़ प्रोग्रामिंग भाषाओं की तरह, PL/SQL कंडीशंस और लूप्स की अनुमति देता है। PL/SQL के साथ, आप कॉन्स्टेंट्स, वेरिएबल्स, वेरिएबल टाइप्स, ट्रिगर्स, प्रोसिजर्स और फंक्शंस भी घोषित कर सकते हैं।
Procedural Language/PostgreSQL (PL/pgSQL)
यह ओपन-सोर्स PostgreSQL ऑब्जेक्ट-रिलेशनल डेटाबेस मैनेजमेंट सिस्टम द्वारा समर्थित एक प्रोसिजरल भाषा है। यह ऊपर वर्णित Oracle के PL/SQL के काफी समान है और लूप्स व कंडीशंस जैसे तत्व शामिल करती है। यह यूज़र-डिफ़ाइंड फंक्शंस की अनुमति देती है और ऑपरेटर्स को इनहेरिट भी कराया जा सकता है।
Transact-SQL (T-SQL)
यह Sybase और Microsoft का एक प्रोग्रामिंग एक्सटेंशन है, जो लोकल वेरिएबल्स की घोषणाओं की अनुमति देता है। इसने SQL मानक के पारंपरिक DELETE और UPDATE स्टेटमेंट्स में भी बदलाव किए हैं। इसमें ट्रांज़ैक्शन कंट्रोल, अपवाद और त्रुटि प्रबंधन शामिल हैं। इसका उपयोग Microsoft SQL Server में होता है, जो एक आम डेटाबेस है।
ऐसे एक्सटेंशन्स के उपयोग से, SQL GPL के समान कार्य करने में सक्षम हो जाती है, जिससे यह सीखने के लिए और भी अधिक शक्तिशाली और महत्वपूर्ण कौशल बन जाती है!
SQL से शुरुआत करें।
उम्मीद है, हमने आपको यह समझा दिया है कि SQL सिर्फ एक प्रोग्रामिंग भाषा नहीं है, बल्कि एक सशक्त प्रोग्रामिंग भाषा है जो आपको अपने डेटा से अधिकतम लाभ उठाने में मदद करती है!
Datacamp डेटा साइंस और एनालिटिक्स ऑनलाइन सीखने के लिए एक उत्कृष्ट प्लेटफ़ॉर्म है। हमारे पास उच्च-गुणवत्ता वाले कई ऑनलाइन कोर्स हैं जो आपको SQL और उसकी बारीकियों को समझने में मदद कर सकते हैं।
हमारा Introduction to SQL Server ऐसा ही एक इंटरएक्टिव कोर्स है जहाँ आप जो सीखते हैं उसे अभ्यास में लाकर अपने ज्ञान की जाँच और आत्मविश्वास का निर्माण कर सकते हैं। आप डिजिटल मीडिया डेटाबेस के साथ काम करेंगे ताकि विभिन्न कलाकारों और ट्रैक्स की बिक्री की समीक्षा कर सकें, Eurovision डेटासेट्स देख सकें, और US में पावर आउटेज के रुझानों की समीक्षा कर सकें—ताकि विभिन्न डेटा प्रकारों और परिदृश्यों का अन्वेषण किया जा सके।
सीखते रहिए!
यदि आप डेटा-प्रधान उद्योग में काम करते हैं, तो आपने निश्चित रूप से डेटाबेस का नाम सुना होगा। डेटाबेस में संग्रहीत डेटा तक पहुँचने का एक बहुत आम तरीका SQL है। इस लेख में, आप SQL के बारे में और जानेंगे। लेकिन SQL में प्रयुक्त सिंटैक्स और शब्दावली सीधे सीखने के बजाय, हम कंप्यूटर विज्ञान की कुछ प्रमुख अवधारणाओं पर चलेंगे जो हमें इस प्रश्न का उत्तर देने में मदद करेंगी: क्या SQL एक प्रोग्रामिंग भाषा है?
SQL क्या है?
पहले यह समझते हैं कि डेटाबेस क्या है। सरल शब्दों में, डेटाबेस संरचित डेटा को रखने के लिए एक भंडारण प्रणाली है। इसके अतिरिक्त, डेटाबेस प्रबंधन प्रणाली (DBMS) डेटाबेस और उसके अंतिम-उपयोगकर्ताओं या प्रोग्रामों के बीच एक इंटरफेस का काम करती है। आप इस संबंध के बारे में अधिक DataCamp के Database Design कोर्स में सीख सकते हैं।
सबसे आम प्रकार का DBMS रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (RDBMS) है, जहाँ हम संरचित डेटा संग्रहीत करते हैं, यानी ऐसा डेटा जिसमें संस्थाओं और चर के बीच संबंध शामिल होते हैं। ये संस्थाएँ और चर कॉलम और पंक्तियों वाली तालिकाओं के समूह के रूप में व्यवस्थित होते हैं।
RDBMS में डेटा एक डेटाबेस ऑब्जेक्ट जिसे टेबल कहते हैं, में संग्रहीत होता है। एक डेटाबेस में प्रायः कई टेबल होती हैं। प्रत्येक टेबल एक अद्वितीय नाम से पहचानी जाती है और संबंधित डेटा प्रविष्टियों का एक संग्रह रखती है, जो पंक्तियों और कॉलम के रूप में संरचित होती हैं। टेबल में कॉलम को फील्ड्स कहा जाता है और वे टेबल के किसी विशिष्ट गुण के मान रखते हैं। टेबल में प्रत्येक पंक्ति को रिकॉर्ड कहा जाता है।
SQL, जिसका उच्चारण “एस-क्यू-एल” या “सीक्वल” किया जाता है, का अर्थ है Structured Query Language। SQL का उपयोग प्रोग्रामिंग में होता है और यह SQL क्वेरीज़ के माध्यम से RDBMS में संग्रहीत डेटा को प्रबंधित करने के लिए डिज़ाइन की गई है।
क्वेरी मूलतः विभिन्न SQL कमांड से बनी हुई एक स्टेटमेंट होती है, जो मिलकर आपके डेटा तक पहुँचने, उसे प्रबंधित करने, संशोधित करने, अपडेट करने, नियंत्रित करने और व्यवस्थित करने जैसा कोई विशिष्ट कार्य करती है। क्वेरी की यह परिभाषा ‘कंप्यूटर प्रोग्राम’ से काफी मिलती-जुलती लगती है; तो क्या इसका मतलब है कि SQL एक प्रोग्रामिंग भाषा है?
आइए अगला खंड पढ़कर बेहतर समझते हैं कि प्रोग्रामिंग भाषा का अर्थ क्या होता है।
प्रोग्रामिंग भाषा क्या है?
एक प्रोग्रामिंग भाषा पूर्वनिर्धारित शब्दावली और व्याकरणिक नियमों के समूह से बनी होती है। यह भाषा तब कंप्यूटर या कंप्यूटिंग डिवाइस को विशिष्ट कार्य करने का निर्देश दे सकती है।
प्रोग्रामिंग भाषाएँ कई प्रकार की होती हैं, जिनकी विशेषताएँ और उद्देश्य अलग-अलग होते हैं। हालांकि, सामान्यतः इन्हें दो समूहों में बाँटा जा सकता है: लो-लेवल और हाई-लेवल प्रोग्रामिंग भाषाएँ।
जो प्रोग्रामिंग भाषाएँ मशीन कोड या बाइनरी (1 और 0) के अधिक निकट होती हैं, वे लो-लेवल भाषाएँ कहलाती हैं।
लो-लेवल भाषाएँ लोगों के लिए अक्सर पढ़ना कठिन होती हैं क्योंकि वे निर्देशों को वैसा ही संरचित करती हैं जैसा कोई मशीन “सोचती” है। फिर भी, वे शुद्ध 1 और 0 की तुलना में समझने में आसान होती हैं।
तो लो-लेवल भाषा का उपयोग क्यों करें? क्योंकि वे तेज होती हैं! और वे प्रोग्रामर को इस बात पर अधिक सटीक नियंत्रण देती हैं कि कंप्यूटर हार्डवेयर कैसे काम करेगा।
दूसरी ओर, हाई-लेवल भाषाएँ इस बात के अधिक निकट होती हैं कि इंसान कैसे संवाद करते हैं। वे निर्देशों में ऐसे शब्दों का उपयोग करती हैं जो हमारी रोज़मर्रा की भाषाओं से मेल खाते हैं, जिससे उनमें प्रोग्राम बनाना और उनका रखरखाव करना आसान होता है। कमी यह है कि कंप्यूटर के समझने लायक मशीन कोड में अनुवाद करने में उन्हें अधिक समय लगता है।
लेकिन जैसे-जैसे कंप्यूटर अधिक शक्तिशाली होते गए हैं, लो-लेवल और हाई-लेवल भाषाओं के प्रदर्शन का अंतर अक्सर केवल मिलीसेकंड का रह गया है। यही कारण है कि अधिकांश प्रोग्रामिंग नौकरियाँ हाई-लेवल प्रोग्रामिंग कौशल वाले लोगों की तलाश करती हैं।
ट्यूरिंग पूर्णता (Turing Completeness) क्या है?
किसी प्रोग्रामिंग भाषा की शक्ति मापने के लिए, कंप्यूटर वैज्ञानिक अक्सर ट्यूरिंग पूर्णता की अवधारणा का उपयोग करते हैं। इसका नाम एलन ट्यूरिंग के नाम पर रखा गया है, जिन्होंने 1936 में ट्यूरिंग मशीन का प्रस्ताव रखा था। यह कंप्यूटिंग और कंप्यूटरों के बारे में सिद्धांतों की नींव बन गई।
ट्यूरिंग मशीन एक ऐसा उपकरण था जो कागज़ की टेप पर प्रतीकों को इस तरह छापता था कि वह किसी व्यक्ति द्वारा तार्किक निर्देशों का पालन करने का अनुकरण करे।
प्रोग्रामिंग भाषाएँ औपचारिक नियम-प्रणालियाँ हैं जो डेटा तक पहुँचती हैं और उसे संशोधित करती हैं। यदि ये नियम ट्यूरिंग की काल्पनिक कंप्यूटिंग मशीन का अनुकरण कर सकते हैं, तो उन्हें "ट्यूरिंग पूर्ण" कहा जाता है। एक ट्यूरिंग पूर्ण प्रणाली को गणितीय रूप से किसी भी संभावित गणना करने में सक्षम सिद्ध किया जा सकता है।
ट्यूरिंग मशीन और ट्यूरिंग पूर्णता की अवधारणा पर अधिक जानने के लिए हम Computerphile का यह वीडियो देखने की अत्यधिक अनुशंसा करते हैं।
जनरल-पर्पज़ प्रोग्रामिंग भाषा बनाम डोमेन-विशिष्ट भाषा
SQL में पूर्वनिर्धारित कीवर्ड का एक सेट होता है और यह सख्त सिंटैक्स का पालन करती है। SQL में प्रोग्रामिंग शुरू करने के लिए, DataCamp का Introduction to SQL कोर्स देखें, जहाँ हम रिकॉर्ड्स और फील्ड्स का चयन और फ़िल्टरिंग से शुरू करते हैं और फिर एग्रीगेट फंक्शंस, सॉर्टिंग और ग्रुपिंग पर जाते हैं।
किसी प्रोग्रामिंग भाषा की परिभाषा के अनुसार, जिसमें एक निश्चित शब्दावली और विशिष्ट सिंटैक्स होता है, SQL निश्चित रूप से एक प्रोग्रामिंग भाषा है। हालाँकि, यह जनरल पर्पज़ लैंग्वेज (GPL) नहीं है और वास्तव में एक डोमेन-विशिष्ट भाषा (DSL) है।
डोमेन-विशिष्ट भाषा वह कंप्यूटर भाषा है जो किसी विशेष डोमेन की समस्याएँ हल करने के लिए विशेष रूप से बनाई जाती है और जिसका उद्देश्य इसके बाहर की समस्याएँ हल करना नहीं होता।
इन्हें डिजाइन और इम्प्लीमेंटेशन में खास उद्देश्यों को ध्यान में रखकर बनाया जाता है। उदाहरण के लिए, SQL को विशेष रूप से डेटाबेस के साथ काम करने, डेटाबेस को क्वेरी करने और उनमें संग्रहीत डेटा के साथ काम करने के लिए बनाया गया था। आप केवल SQL का उपयोग करके पूरा एप्लिकेशन नहीं बना सकते।
DSL का एक और उदाहरण Cascading Style Sheets—यानी CSS—है, जो वेबसाइटों पर HTML को स्टाइल करने के लिए उपयोग की जाती है।
DSL के विपरीत, General Purpose Language (GPL) होता है, जो विभिन्न डोमेनों में व्यापक रूप से लागू होता है। इन्हें इस तरह डिजाइन किया जाता है कि आप किसी भी प्रकार की लॉजिक के साथ किसी भी तरह का प्रोग्राम लिख सकें।
आप GPL का उपयोग करके हर तरह के एप्लिकेशन बना सकते हैं, जिनमें डेस्कटॉप, मोबाइल, या वेब एप्लिकेशन शामिल हैं। सबसे व्यापक रूप से उपयोग किए जाने वाले GPL में Python, C++, Ruby, Java और JavaScript शामिल हैं।
सामान्यतः, DSLs GPLs से कम शक्तिशाली होती हैं। हालाँकि, इसका एक लाभ भी है। अपने संकीर्ण अनुप्रयोग डोमेन के कारण, SQL अधिकांश जनरल-पर्पज़ प्रोग्रामिंग भाषाओं की तुलना में अपेक्षाकृत आसान है।
हम आपको DataCamp का SQL Fundamentals ट्रैक करने के लिए प्रोत्साहित करते हैं, जहाँ हम 21 घंटों में 5 कोर्स के साथ आपको SQL में शुरुआती से प्रो तक ले जाते हैं।
तो क्या SQL एक प्रोग्रामिंग भाषा है?
जैसा कि हमने पहले चर्चा की, ट्यूरिंग पूर्णता किसी प्रोग्रामिंग भाषा की शक्ति का संकेत है। भाषा जितनी अधिक शक्तिशाली होगी, वह उतनी ही जटिल गणनाएँ कर सकती है। SQL में कॉमन टेबल एक्सप्रेशन (CTEs) और विंडो फंक्शंस के आने से हम SQL के साथ पुनरावर्ती और अनुक्रमिक गणनाएँ कर सकते हैं, जिससे यह और भी शक्तिशाली हो जाती है और ट्यूरिंग पूर्ण के रूप में योग्य ठहरती है।
हालाँकि, SQL मानक में अनुक्रमिक और पुनरावर्ती क्वेरी की विशेषताएँ जोड़ने में लंबा समय लगा। इसलिए कुछ पुराने, परंपरागत RDBMS ट्यूरिंग पूर्ण के रूप में योग्य नहीं हो सकते।
हमने पहले चर्चा की कि एक जनरल प्रोग्रामिंग भाषा डोमेन-विशिष्ट प्रोग्रामिंग भाषा से कैसे भिन्न होती है। जब लोग “प्रोग्रामिंग भाषा” कहते हैं, तो वे अक्सर “जनरल-पर्पज़ प्रोग्रामिंग भाषा” का मतलब लेते हैं, जो कभी-कभी भ्रमित कर सकता है।
तो प्रोग्रामिंग भाषा की उचित परिभाषा के अनुसार, SQL एक डोमेन-विशिष्ट प्रोग्रामिंग भाषा है जो ट्यूरिंग पूर्ण है। इस प्रकार SQL एक प्रोग्रामिंग भाषा के रूप में योग्य है।
जो लोग पहले से SQL की बुनियादी बातें जानते हैं और आगे बढ़कर विंडो फंक्शंस शुरू करना चाहते हैं, वे DataCamp का इंटरएक्टिव कोर्स PostgreSQl Summary Stats and Window Functions देखें। आप विंडो फंक्शंस—SQL का गुप्त हथियार—के साथ एनालिटिक्स और डेटा इंजीनियरिंग उद्देश्यों के लिए क्वेरी बनाना सीखेंगे!
SQL के विभिन्न प्रकार
आपने SQL के विभिन्न प्रकारों या बोलियों के बारे में सुना होगा: T-SQL, PostgreSQL, MySQL, आदि। लेकिन आप सोच रहे होंगे कि ये अलग-अलग प्रकार क्यों हैं और अस्तित्व में कैसे आए? आइए SQL के संक्षिप्त इतिहास पर नज़र डालते हैं।
IBM में कार्यरत ब्रिटिश कंप्यूटर वैज्ञानिक एडगर फ्रैंक कॉड ने 1970 में “A Relational Model of Data for Large Shared Data Banks” नामक पेपर प्रकाशित किया। यहीं पर उन्होंने डेटाबेस प्रबंधन के लिए रिलेशनल मॉडल का आविष्कार किया, जो तब से रिलेशनल डेटाबेस और रिलेशनल डेटाबेस मैनेजमेंट सिस्टम्स का सैद्धांतिक आधार रहा है।
इसके बाद, 1980 के दशक के उत्तरार्ध में आधिकारिक SQL मानक बनाने के प्रयास किए गए।
SQL 1986 में American National Standards Institute (ANSI) और 1987 में International Organization for Standardization (ISO) का मानक बन गया। 1980 के दशक से SQL मानक में कई बार संशोधन किया गया है, हालाँकि मानक SQL की मुख्य विशेषताएँ 1992 से स्थिर रही हैं।
फिर भी, नई विविधताएँ आती रहीं क्योंकि अलग-अलग कंपनियों में काम कर रहे डेटाबेस इम्प्लीमेंटरों को नई समस्याएँ हल करनी थीं या पहले से मौजूद समस्याओं का वैकल्पिक समाधान करना था, जिनका SQL मानक में समाधान नहीं था। यही बताता है कि कई SQL बोलियाँ कैसे उभरीं और आज भी साथ-साथ क्यों मौजूद हैं।
आज केवल एक SQL भाषा मौजूद है, लेकिन विभिन्न डेटाबेस मैनेजमेंट सिस्टम्स ने मूल SQL मानक का विस्तार करते हुए अपनी-अपनी कार्यात्मकताएँ जोड़ीं या सिंटैक्स को अपने ढंग से अपनाया। ऐसा करते हुए, उन्होंने SQL की कई बोलियों को जन्म दिया।
इन अलग-अलग बोलियों के बारे में आप हमारे ब्लॉग लेख ‘SQL Server, PostgreSQL, MySQL... क्या अंतर है? कहाँ से शुरू करूँ?’ में अधिक पढ़ सकते हैं।
किस SQL बोली से शुरुआत करें?
हम सुझाव देते हैं कि आप PostgreSQL से शुरुआत करें।
PostgreSQL एक शक्तिशाली, ओपन-सोर्स, ऑब्जेक्ट-रिलेशनल डेटाबेस सिस्टम है जो SQL भाषा का उपयोग करता है और उसे विस्तारित करता है। इसमें ऐसी कई विशेषताएँ भी हैं जो सबसे जटिल डेटा वर्कलोड को सुरक्षित रूप से संग्रहीत और स्केल करती हैं।
यह मानक SQL के सबसे क़रीब है और व्यापक रूप से प्रयुक्त SQL बोली है। PostgreSQL से शुरू करने पर आपको सबसे लचीला टूल मिलेगा, जिससे आप बाद में अन्य SQL बोलियों के अनुरूप ढल सकेंगे और अपने कौशल को अन्य RDBMS पर भी लागू कर सकेंगे।
DataCamp का Functions for Manipulating Data in PostgreSQL कोर्स एक बेहतरीन इंटरमीडिएट-स्तरीय इंटरएक्टिव कोर्स है, जो आपको सही दिशा में आगे बढ़ने में मदद करेगा।
SQL और प्रोसिजरल भाषाएँ
तो, हमें पता है कि SQL एक जनरल-पर्पज़ प्रोग्रामिंग भाषा नहीं है। फिर भी, आप SQL को प्रोसिजरल भाषाओं के साथ मिलाकर कुछ GPL-जैसे व्यवहार हासिल कर सकते हैं। ऐसा करने से तकनीकी रूप से SQL को निर्धारित डोमेन के अलावा किसी अन्य डोमेन में उपयोग करना संभव हो जाता है।
प्रोसिजरल भाषाएँ वे प्रोग्रामिंग भाषाएँ हैं जो विशेष रूप से फंक्शंस, कंडीशनल स्टेटमेंट्स और वेरिएबल्स के उपयोग से ऐसे प्रोग्राम लिखने में संलग्न होती हैं जिन्हें कंप्यूटर पहचान सके और एक निश्चित कम्प्यूटेशनल आउटपुट प्राप्त कर सके।
सभी डेटाबेस मैनेजमेंट सिस्टम (DBMS) एक या अधिक प्रोसिजरल भाषाओं की बोलियाँ स्वीकार करते हैं। कुछ उदाहरण इस प्रकार हैं:
Procedural Language for SQL (PL/SQL)
यह Oracle Corporation द्वारा बनाया गया SQL का एक एक्सटेंशन है। जनरल-पर्पज़ प्रोग्रामिंग भाषाओं की तरह, PL/SQL कंडीशंस और लूप्स की अनुमति देता है। PL/SQL के साथ, आप कॉन्स्टेंट्स, वेरिएबल्स, वेरिएबल टाइप्स, ट्रिगर्स, प्रोसिजर्स और फंक्शंस भी घोषित कर सकते हैं।
Procedural Language/PostgreSQL (PL/pgSQL)
यह ओपन-सोर्स PostgreSQL ऑब्जेक्ट-रिलेशनल डेटाबेस मैनेजमेंट सिस्टम द्वारा समर्थित एक प्रोसिजरल भाषा है। यह ऊपर वर्णित Oracle के PL/SQL के काफी समान है और लूप्स व कंडीशंस जैसे तत्व शामिल करती है। यह यूज़र-डिफ़ाइंड फंक्शंस की अनुमति देती है और ऑपरेटर्स को इनहेरिट भी कराया जा सकता है।
Transact-SQL (T-SQL)
यह Sybase और Microsoft का एक प्रोग्रामिंग एक्सटेंशन है, जो लोकल वेरिएबल्स की घोषणाओं की अनुमति देता है। इसने SQL मानक के पारंपरिक DELETE और UPDATE स्टेटमेंट्स में भी बदलाव किए हैं। इसमें ट्रांज़ैक्शन कंट्रोल, अपवाद और त्रुटि प्रबंधन शामिल हैं। इसका उपयोग Microsoft SQL Server में होता है, जो एक आम डेटाबेस है।
ऐसे एक्सटेंशन्स के उपयोग से, SQL GPL के समान कार्य करने में सक्षम हो जाती है, जिससे यह सीखने के लिए और भी अधिक शक्तिशाली और महत्वपूर्ण कौशल बन जाती है!
SQL से शुरुआत करें।
उम्मीद है, हमने आपको यह समझा दिया है कि SQL सिर्फ एक प्रोग्रामिंग भाषा नहीं है, बल्कि एक सशक्त प्रोग्रामिंग भाषा है जो आपको अपने डेटा से अधिकतम लाभ उठाने में मदद करती है!
Datacamp डेटा साइंस और एनालिटिक्स ऑनलाइन सीखने के लिए एक उत्कृष्ट प्लेटफ़ॉर्म है। हमारे पास उच्च-गुणवत्ता वाले कई ऑनलाइन कोर्स हैं जो आपको SQL और उसकी बारीकियों को समझने में मदद कर सकते हैं।
हमारा Introduction to SQL Server ऐसा ही एक इंटरएक्टिव कोर्स है जहाँ आप जो सीखते हैं उसे अभ्यास में लाकर अपने ज्ञान की जाँच और आत्मविश्वास का निर्माण कर सकते हैं। आप डिजिटल मीडिया डेटाबेस के साथ काम करेंगे ताकि विभिन्न कलाकारों और ट्रैक्स की बिक्री की समीक्षा कर सकें, Eurovision डेटासेट्स देख सकें, और US में पावर आउटेज के रुझानों की समीक्षा कर सकें—ताकि विभिन्न डेटा प्रकारों और परिदृश्यों का अन्वेषण किया जा सके।
सीखते रहिए!