स्ट्रक्चर्ड क्वेरी लैंग्वेज (एसक्यूएल) आधुनिक डेटाबेस आर्किटेक्चर के मूलभूत बिल्डिंग ब्लॉक्स में से एक है। SQL सभी प्रमुख प्लेटफॉर्म पर रिलेशनल डेटाबेस बनाने और हेरफेर करने के लिए उपयोग की जाने वाली विधियों को परिभाषित करता है। पहली नज़र में, भाषा डराने वाली और जटिल लग सकती है, लेकिन यह इतना मुश्किल नहीं है।
एसक्यूएल के बारे में
SQL का सही उच्चारण डेटाबेस समुदाय के भीतर एक विवादास्पद मुद्दा है। अपने एसक्यूएल मानक में, अमेरिकी राष्ट्रीय मानक संस्थान ने घोषणा की कि आधिकारिक उच्चारण "एस क्यूई" है एल।" हालांकि, कई डेटाबेस पेशेवरों ने "अगली कड़ी" के उच्चारण को अपनाया है का जीआईएफ, कोई सही उत्तर नहीं है।
SQL कई फ्लेवर में आता है। Oracle डेटाबेस अपने मालिकाना PL/SQL का उपयोग करते हैं। Microsoft SQL Server Transact-SQL का उपयोग करता है। सभी विविधताएं उद्योग मानक एएनएसआई एसक्यूएल पर आधारित हैं।
यह परिचय किसी भी आधुनिक रिलेशनल डेटाबेस सिस्टम पर काम करने वाले ANSI-संगत SQL कमांड का उपयोग करता है।
डीडीएल और डीएमएल
SQL कमांड को दो मुख्य उप-भाषाओं में विभाजित किया जा सकता है। डेटा डेफिनिशन लैंग्वेज में डेटाबेस और डेटाबेस ऑब्जेक्ट्स को बनाने और नष्ट करने के लिए उपयोग किए जाने वाले कमांड होते हैं। डीडीएल के साथ डेटाबेस संरचना को परिभाषित करने के बाद, डेटाबेस प्रशासक और उपयोगकर्ता डेटा मैनिपुलेशन भाषा का उपयोग इसके भीतर निहित डेटा को सम्मिलित करने, पुनर्प्राप्त करने और संशोधित करने के लिए कर सकते हैं।
SQL तीसरे प्रकार के सिंटैक्स का समर्थन करता है जिसे कहा जाता है डेटा नियंत्रण भाषा. DCL डेटाबेस के भीतर वस्तुओं तक सुरक्षा पहुँच को नियंत्रित करता है। उदाहरण के लिए, ए डीसीएल स्क्रिप्ट विशिष्ट उपयोगकर्ता खातों को डेटाबेस के एक या अधिक परिभाषित क्षेत्रों में तालिकाओं को पढ़ने या लिखने का अधिकार देता है या निरस्त करता है। अधिकांश प्रबंधित बहु-उपयोगकर्ता परिवेशों में, डेटाबेस व्यवस्थापक आमतौर पर DCL स्क्रिप्ट निष्पादित करते हैं।
डेटा परिभाषा भाषा कमांड
डेटा डेफिनिशन लैंग्वेज का उपयोग डेटाबेस और डेटाबेस ऑब्जेक्ट्स को बनाने और नष्ट करने के लिए किया जाता है। डेटाबेस प्रोजेक्ट के सेटअप और निष्कासन चरणों के दौरान ये कमांड मुख्य रूप से डेटाबेस व्यवस्थापकों द्वारा उपयोग किए जाते हैं। डीडीएल चार प्राथमिक कमांडों के इर्द-गिर्द घूमता है-सृजन करना, प्रयोग करें, बदलने, तथा ड्रॉप.
सृजन करना
सृजन करना कमांड आपके प्लेटफ़ॉर्म पर डेटाबेस, टेबल या क्वेरीज़ स्थापित करता है। उदाहरण के लिए, आदेश:
डेटाबेस कर्मचारी बनाएँ;
नाम का एक खाली डेटाबेस बनाता है कर्मचारियों आपके डीबीएमएस पर। डेटाबेस बनाने के बाद, अगला चरण डेटा वाली तालिकाएँ बनाना है। का एक और प्रकार Another सृजन करना आदेश इस उद्देश्य को पूरा करता है। आदेश:
तालिका बनाएं व्यक्तिगत_इन्फो (प्रथम_नाम चार (20) शून्य नहीं, अंतिम_नाम चार (20) शून्य नहीं, कर्मचारी_आईडी शून्य नहीं);
शीर्षक से एक तालिका स्थापित करता है व्यक्तिगत जानकारी वर्तमान डेटाबेस में। उदाहरण में, तालिका में तीन विशेषताएँ हैं: पहला नाम, अंतिम नाम, तथा कर्मचारी आयडी कुछ अतिरिक्त जानकारी के साथ।
प्रयोग करें
प्रयोग करें कमांड सक्रिय डेटाबेस को निर्दिष्ट करता है। उदाहरण के लिए, यदि आप वर्तमान में बिक्री डेटाबेस में काम कर रहे हैं और कुछ आदेश जारी करना चाहते हैं जो कर्मचारी डेटाबेस को प्रभावित करेंगे, तो उन्हें निम्न SQL कमांड के साथ प्रस्तुत करें:
कर्मचारियों का उपयोग करें;
डेटा में हेरफेर करने वाले SQL कमांड जारी करने से पहले उस डेटाबेस को दोबारा जांचें जिसमें आप काम कर रहे हैं।
ऑल्टर
एक डेटाबेस के भीतर एक टेबल बनाने के बाद, इसकी परिभाषा को संशोधित करें बदलने कमांड, जो बिना डिलीट और रीक्रिएट किए टेबल की संरचना में बदलाव करता है। निम्न आदेश पर एक नज़र डालें:
ALTER TABLE Personal_info वेतन के पैसे जोड़ें शून्य;
यह उदाहरण Personal_info तालिका में एक नई विशेषता जोड़ता है—एक कर्मचारी का वेतन। पैसे तर्क निर्दिष्ट करता है कि एक कर्मचारी का वेतन डॉलर और सेंट प्रारूप का उपयोग करता है। अंततः शून्य कीवर्ड डेटाबेस को बताता है कि इस क्षेत्र के लिए किसी भी कर्मचारी के लिए कोई मूल्य नहीं होना ठीक है।
ड्रॉप
डेटा परिभाषा भाषा का अंतिम आदेश, ड्रॉप, हमारे DBMS से संपूर्ण डेटाबेस ऑब्जेक्ट को हटा देता है। उदाहरण के लिए, हमारे द्वारा बनाई गई व्यक्तिगत_इन्फो तालिका को स्थायी रूप से हटाने के लिए, निम्न आदेश का उपयोग करें:
ड्रॉप टेबल व्यक्तिगत_जानकारी;
इसी तरह, नीचे दिए गए कमांड का इस्तेमाल पूरे कर्मचारी डेटाबेस को हटाने के लिए किया जाएगा:
ड्रॉप डेटाबेस कर्मचारी;
इस आदेश का प्रयोग सावधानी से करें। ड्रॉप कमांड आपके डेटाबेस से संपूर्ण डेटा संरचनाओं को हटा देता है। यदि आप अलग-अलग रिकॉर्ड हटाना चाहते हैं, तो इसका उपयोग करें हटाना डेटा मैनिपुलेशन भाषा की कमान।
डेटा हेरफेर भाषा कमांड
डेटा हेरफेर भाषा का उपयोग डेटाबेस जानकारी को पुनः प्राप्त करने, सम्मिलित करने और संशोधित करने के लिए किया जाता है। ये डीएमएल कमांड नियमित आधार पर डेटाबेस के साथ बातचीत करने के लिए विशिष्ट ढांचे की पेशकश करते हैं।
डालने
डालने आदेश मौजूदा तालिका में रिकॉर्ड जोड़ता है। पिछले अनुभाग से व्यक्तिगत_इन्फो उदाहरण पर लौटते हुए, कल्पना करें कि हमारे मानव संसाधन विभाग को अपने डेटाबेस में एक नया कर्मचारी जोड़ने की आवश्यकता है। इस तरह के एक कमांड का प्रयोग करें:
व्यक्तिगत_जानकारी में सम्मिलित करें
मान ('बार्ट', 'सिम्पसन', 12345, $ 45000);
ध्यान दें कि रिकॉर्ड के लिए चार मान निर्दिष्ट हैं। ये तालिका विशेषताओं के अनुरूप हैं जिस क्रम में उन्हें परिभाषित किया गया था: पहला नाम, अंतिम नाम, कर्मचारी आयडी तथा वेतन.
चुनते हैं
चुनते हैं कमांड एसक्यूएल में सबसे अधिक इस्तेमाल किया जाने वाला कमांड है। यह एक परिचालन डेटाबेस से विशिष्ट जानकारी प्राप्त करता है। कुछ उदाहरणों पर एक नज़र डालें, फिर से कर्मचारी डेटाबेस से Personal_info तालिका का उपयोग करना।
नीचे दिखाया गया आदेश व्यक्तिगत_इन्फो तालिका में निहित सभी सूचनाओं को पुनः प्राप्त करता है। तारांकन SQL में एक वाइल्डकार्ड वर्ण है।
चुनते हैं *
व्यक्तिगत_इन्फो से;
वैकल्पिक रूप से, निर्दिष्ट करके डेटाबेस से पुनर्प्राप्त की जाने वाली विशेषताओं को सीमित करें क्या भ चयनित हो जाता है। उदाहरण के लिए, मानव संसाधन विभाग को कंपनी के सभी कर्मचारियों के अंतिम नामों की सूची की आवश्यकता हो सकती है। निम्न SQL कमांड केवल उस जानकारी को पुनः प्राप्त करेगा:
अंतिम_नाम चुनें
व्यक्तिगत_इन्फो से;
कहां है क्लॉज उन रिकॉर्ड्स को सीमित करता है जो निर्दिष्ट मानदंडों को पूरा करने वालों के लिए पुनर्प्राप्त किए जाते हैं। सीईओ को सभी उच्च वेतन पाने वाले कर्मचारियों के कार्मिक रिकॉर्ड की समीक्षा करने में दिलचस्पी हो सकती है। निम्न आदेश व्यक्तिगत_इन्फो के भीतर निहित सभी डेटा को रिकॉर्ड के लिए पुनर्प्राप्त करता है जिसका वेतन मूल्य $ 50,000 से अधिक है:
चुनते हैं *
व्यक्तिगत_जानकारी से
जहां वेतन> $५००००;
अपडेट करें
अपडेट करें आदेश एक तालिका के भीतर निहित जानकारी को थोक में या व्यक्तिगत रूप से संशोधित करता है। मान लें कि कंपनी सभी कर्मचारियों को उनके वेतन में सालाना 3 प्रतिशत की लागत की वृद्धि देती है। निम्न SQL कमांड डेटाबेस में संग्रहीत सभी कर्मचारियों के लिए इस बम्प को लागू करता है:
व्यक्तिगत_जानकारी अपडेट करें
सेट वेतन = वेतन * 1.03;
जब नया कर्मचारी बार्ट सिम्पसन ड्यूटी की कॉल के ऊपर और परे प्रदर्शन का प्रदर्शन करता है, तो प्रबंधन $ 5,000 की वृद्धि के साथ उसकी शानदार उपलब्धियों को पहचानना चाहता है। WHERE क्लॉज बार्ट को इस वृद्धि के लिए अलग करता है:
व्यक्तिगत_जानकारी अपडेट करें
सेट वेतन = वेतन + 5000
जहां कर्मचारी_आईडी = 12345;
हटाएं
अंत में, आइए एक नजर डालते हैं हटाना आदेश। आप पाएंगे कि इस कमांड का सिंटैक्स अन्य डीएमएल कमांड के समान है। DELETE कमांड, a. के साथ कहां है खंड, एक तालिका से एक रिकॉर्ड हटा दें:
Personal_info से हटाएं
जहां कर्मचारी_आईडी = 12345;
डीएमएल भी समग्र क्षेत्रों का समर्थन करता है। में चुनते हैं बयान, गणितीय ऑपरेटरों जैसे योग तथा गिनती एक क्वेरी के भीतर डेटा सारांशित करें। उदाहरण के लिए, क्वेरी:
व्यक्तिगत_इन्फो से गिनती (*) का चयन करें;
तालिका में रिकॉर्ड की संख्या की गणना करता है।
डेटाबेस जुड़ता है
ए में शामिल होने के बड़ी मात्रा में डेटा को कुशलतापूर्वक संसाधित करने के लिए कथन कई तालिकाओं में डेटा को जोड़ता है। ये कथन वे हैं जहाँ एक डेटाबेस की वास्तविक शक्ति निवास करती है।
एक बुनियादी के उपयोग का पता लगाने के लिए में शामिल होने के दो तालिकाओं से डेटा को संयोजित करने के लिए ऑपरेशन, व्यक्तिगत_इन्फो तालिका का उपयोग करके उदाहरण के साथ जारी रखें और मिश्रण में एक अतिरिक्त तालिका जोड़ें। मान लें कि आपके पास एक टेबल है जिसे कहा जाता है अनुशासनात्मक कार्यवाही जो निम्नलिखित कथन के साथ बनाया गया था:
टेबल डिसिप्लिनरी_एक्शन बनाएं (action_id int null नहीं, Employee_id int null, comments char (500));
इस तालिका में कंपनी के कर्मचारियों के लिए अनुशासनात्मक कार्रवाइयों के परिणाम हैं। इसमें कर्मचारी संख्या के अलावा कर्मचारी के बारे में कोई जानकारी नहीं है।
मान लें कि आपको एक ऐसी रिपोर्ट बनाने का काम सौंपा गया है, जो $40,000 से अधिक वेतन वाले सभी कर्मचारियों के खिलाफ की गई अनुशासनात्मक कार्रवाइयों को सूचीबद्ध करती है। इस मामले में, जॉइन ऑपरेशन का उपयोग सीधा है। निम्न आदेश का उपयोग करके इस जानकारी को पुनः प्राप्त करें:
चुनें Personal_info.first_name, Personal_info.last_name, अनुशासनात्मक_action.comments
व्यक्तिगत_जानकारी से INNER व्यक्तिगत_इन्फो.कर्मचारी_आईडी पर अनुशासनात्मक_कार्रवाई में शामिल हों = अनुशासनात्मक_कार्रवाई.कर्मचारी_आईडी
जहां Personal_info.salary > ४००००;
जुड़ने के प्रकार
जॉइन कई फ्लेवर में आते हैं। SQL कथन में, पहली तालिका (आमतौर पर कहा जाता है टेबल ए या बायां टेबल) दूसरी तालिका में शामिल हो जाता है (आमतौर पर कहा जाता है टेबल बी या दायां टेबल) स्थिति-जागरूक तरीके से। इस प्रकार, यदि आप जॉइन स्टेटमेंट में तालिकाओं के क्रम को बदलते हैं, तो ऑपरेशन के परिणाम भिन्न होंगे। प्रमुख जुड़ने के प्रकारों में शामिल हैं:
- आंतरिक रूप से जुड़ा: केवल उन रिकॉर्ड्स से मेल खाता है जहां पर स्थिति दोनों तालिकाओं में समान रिकॉर्ड से मेल खाती है।
- बाहरी जुड़ाव: केवल दोनों तालिकाओं के रिकॉर्ड से मेल खाता है कि निकालना में पहचाने गए परिणाम पर स्थिति।
- राइट जॉइन: तालिका B के सभी रिकॉर्ड और तालिका A के रिकॉर्ड से मेल खाता है जो से मेल खाता है पर स्थिति।
- बाँया जोड़: तालिका A के सभी रिकॉर्ड और तालिका B के रिकॉर्ड से मेल खाता है जो से मेल खाता है पर स्थिति।
- क्रॉस जॉइन: सभी रिकॉर्ड से मेल खाता है जैसे कि टेबल समान थे। यह प्रक्रिया कुछ नाम उत्पन्न करती है कार्तीय गुणन. अक्सर, क्रॉस-जॉइन अवांछित होते हैं, क्योंकि वे तालिका ए की प्रत्येक पंक्ति से, व्यक्तिगत रूप से, तालिका बी की प्रत्येक पंक्ति से मेल खाते हैं। इस प्रकार, यदि तालिका ए ने पांच रिकॉर्ड पेश किए, और तालिका बी ने 9 रिकॉर्ड पेश किए, तो एक क्रॉस-जॉइन क्वेरी 45 परिणामी पंक्तियों की पेशकश करती है।