संरचित क्वेरी भाषा (एसक्यूएल) का उपयोग करना पहली बार में जटिल लग सकता है, लेकिन आगे, यह आसान और अधिक सुविधाजनक हो जाएगा। आपको केवल अभ्यास की आवश्यकता है।
यदि आप अपने डेटाबेस में डेटा को प्रबंधित करने के बेहतर तरीकों की तलाश कर रहे हैं या यदि आप केवल उन संभावनाओं के बारे में उत्सुक हैं जो SQL आपके लिए खोलती है, तो आप सही जगह पर आए हैं!
एसक्यूएल क्यों?
अधिकांश लोगों ने SQL के बारे में तो सुना होगा लेकिन हो सकता है कि इसके कार्य से पूरी तरह परिचित न हों। आप SQL को डेटाबेस से बात करने के लिए एक विशेष भाषा के रूप में सोच सकते हैं। चूंकि कंप्यूटर अंग्रेजी जैसी प्राकृतिक भाषाओं को नहीं समझते हैं, इसलिए आपको अनुवाद करने का एक तरीका चाहिए। और यहां हमारे पास कुछ डेटा प्रस्तुत करने या नया डेटा संग्रहीत करने के लिए डेटाबेस को आदेश देने के लिए SQ है। विभिन्न डेटाबेस, जैसे कि Oracle, Microsoft SQL Server, IBM DB2, MySQL, PostgreSQL, आदि इसका उपयोग करते हैं।
SQL हमें SQL क्वेरीज़ की सहायता से डेटाबेस से डेटा पुनर्प्राप्त करने, सम्मिलित करने, अद्यतन करने और हटाने की अनुमति देता है। एक SQL क्वेरी क्लॉज़ नामक शब्दों का उपयोग करती है। क्लॉज में कई तत्व होते हैं जो डेटाबेस पर कुछ कार्रवाई करने के लिए मिलकर काम करते हैं। तीन सबसे आम खंड हैं SELECT, UPDATE, और DELETE। आप उन्हें लगभग हर SQL स्टेटमेंट में पाएंगे।
आइए सबसे बुनियादी क्वेरी सिंटैक्स लें:
SELECT * FROM table_name;
यह क्वेरी विशेष तालिका में संग्रहीत सभी डेटा का चयन करेगी। तारांकन (*) इंगित करता है कि उस तालिका के सभी स्तंभ लौटाए जाने चाहिए, चाहे उनमें से कितने भी तालिका में हों।
SQL क्वेरी चीट शीट:इसमें कौन-कौन से कमांड होते हैं?
यहां हम आपको सबसे अधिक उपयोग किए जाने वाले SQL कमांड और क्लॉज का चयन प्रस्तुत करते हैं जिनकी आपको डेटाबेस के साथ काम करते समय आवश्यकता होगी। चलिए शुरू करते हैं।
एसक्यूएल डेटाबेस बनाएं
आप डेटाबेस के बिना SQL में बहुत कुछ नहीं कर सकते हैं, इसलिए इसे पहले रास्ते से हटाना सबसे अच्छा है।
डेटाबेस बनाएं आपके सर्वर पर नए डेटाबेस बनाने के लिए एक कमांड है। उदाहरण के लिए, आप बिना किसी मौजूदा तालिका या डेटा के एक नई शुरुआत करना चाहते हैं। सिंटैक्स नीचे है:
CREATE DATABASE testDB;
SQL तालिका बनाएं
रिलेशनल डेटाबेस डेटा को टेबल में स्टोर करते हैं। इस प्रकार, हमारे डेटाबेस का उपयोग करने के लिए, हमें उनमें टेबल बनाने की आवश्यकता है। यह ऑपरेशन टेबल संरचनाओं को बदलने से निकटता से संबंधित है, जैसे, कॉलम का नाम बदलना, नए कॉलम जोड़ना, कॉलम छोड़ना आदि।
लेकिन तालिका में परिवर्तन केवल मौजूदा के लिए ही संभव है। इस प्रकार, आपको पहले टेबल बनाना होगा। एक अन्य संबंधित कमांड ADD COLUMN है जो आपको मौजूदा तालिका में अतिरिक्त कॉलम जोड़ने की अनुमति देगा।
CREATE TABLE [dbo].[Students](
[Name] [nvarchar](100) NOT NULL,
[Bio] [ntext] NULL,
[DateOfBirth] [datetime] NOT NULL,
);
एसक्यूएल ड्रॉप टेबल
तालिकाओं को हटाने के लिए एक समय और स्थान है, और इसे कभी भी एक अच्छा विचार नहीं है। DROP TABLE डेटाबेस से अपने सभी रिकॉर्ड्स, इंडेक्स और बाधाओं के साथ एक पूरी टेबल को हटा देता है।
एक बार टेबल को गिरा देने के बाद उसे वापस पाने का कोई तरीका नहीं है। सुनिश्चित करें कि आपको इस विशेष तालिका की आवश्यकता है और निकालना चाहते हैं। अन्यथा, डेटा को वापस पाने का एकमात्र विकल्प इसे बैकअप से पुनर्स्थापित करना है।
DROP TABLE [dbo].[Students];
एसक्यूएल चुनें
शायद SQL में सबसे अधिक इस्तेमाल किया जाने वाला फ़ंक्शन Select है। इसका उद्देश्य आगे के हेरफेर और विश्लेषण के लिए एक या अधिक तालिकाओं से डेटा पुनर्प्राप्त करना है। यह कार्यक्षमता उपयोगकर्ताओं को विभिन्न विशेषताओं (फ़िल्टर) को निर्दिष्ट करके डेटा (तालिकाओं) के सबसेट को अलग करने और उनका विश्लेषण करने की अनुमति देती है।
पंक्तियों के समूह का चयन करने के लिए, आप एक या अधिक फ़िल्टर के आधार पर एक क्वेरी लिखते हैं जो यह पहचानती है कि कौन सी पंक्तियाँ वापस की जानी चाहिए। फ़िल्टर आपके लक्ष्यों के अनुसार अन्य कार्यों के साथ संयुक्त विभिन्न कार्यों या अभिव्यक्तियों की किसी भी संख्या द्वारा निर्दिष्ट किए जाते हैं।
SELECT TOP (1000) [Name]
,[Phone]
,[Website]
,[Address]
,[City]
,[State]
,[Country]
,[Description]
,[Employees]
FROM [test].[dbo].[company]
एसक्यूएल इन्सर्ट
INSERT फ़ंक्शन SQL में तालिका में डेटा की पंक्तियों को सम्मिलित करता है। इस कथन की मूल संरचना तालिका को निर्दिष्ट करती है कॉलम . में डेटा जोड़ने के लिए उस डेटा को शामिल करने के लिए। इसके बाद, यह प्रत्येक मान को परिभाषित करता है जिसे उस पंक्ति के प्रत्येक कॉलम में रखा जाना चाहिए। यदि आप केवल SQL का उपयोग करना सीख रहे हैं तो यह भ्रमित करने वाला लग सकता है, लेकिन कुछ अभ्यास के साथ, यह बहुत आसान हो जाता है।
INSERT INTO [dbo].[company]
([Name]
,[Phone]
,[Website]
,[Address]
,[City]
,[State]
,[Country]
,[Description]
,[Employees])
VALUES(
'NameValue'
,'PhoneValue'
,'WebsiteValue'
, 'AddressValue'
, 'CityValue'
, 'StateValue'
, 'CountryValue'
, 'DescriptionValue'
, 2 )
एसक्यूएल अद्यतन
जब हम तालिकाओं में संग्रहीत डेटा को बदलना चाहते हैं तो अद्यतन विवरण आवश्यक है। यह एक साधारण पंक्ति और एकाधिक रिकॉर्ड दोनों पर लागू होने वाले सबसे अधिक उपयोग किए जाने वाले SQL कथनों में से एक है।
डिफ़ॉल्ट सिंटैक्स में SET और WHERE घटक शामिल होते हैं। सेट यह परिभाषित करता है कि रिकॉर्ड कैसे अपडेट किए जाने चाहिए, और कहां निर्धारित करता है कि कौन सा रिकॉर्ड अपडेट किया जाना चाहिए। WHERE क्लॉज के बिना, कमांड टेबल के सभी रिकॉर्ड्स को अपडेट कर देगा।
UPDATE [dbo].[company]
SET [Name] = <Name, nvarchar(max),>
,[Phone] = <Phone, nvarchar(max),>
,[Website] = <Website, nvarchar(max),>
,[Address] = <Address, nvarchar(max),>
,[City] = <City, nvarchar(max),>
,[State] = <State, nvarchar(max),>
,[Country] = <Country, nvarchar(max),>
,[Description] = <Description, nvarchar(max),>
,[Employees] = <Employees, int,>
WHERE <Search Conditions,,>
एसक्यूएल औसत
AVG फ़ंक्शन किसी स्तंभ में पूर्णांक या फ़्लोटिंग-पॉइंट संख्या के रूप में संख्यात्मक मानों का औसत लौटाता है। अधिकांश SQL फ़ंक्शंस की तरह, यह SELECT स्टेटमेंट या INSERT स्टेटमेंट का हिस्सा हो सकता है। जब सेलेक्ट स्टेटमेंट में उपयोग किया जाता है, तो इसे कोष्ठक के भीतर होना चाहिए। नीचे आप AVG () के साथ क्वेरी उदाहरण देख सकते हैं, जिसे सभी कर्मचारियों की औसत आयु लौटानी होगी:
SELECT avg(age) FROM employee;
एसक्यूएल योग
SUM फ़ंक्शन किसी कॉलम में सभी मानों का योग देता है। जब आप कई कॉलम के साथ काम कर रहे हों तो यह बहुत मददगार होता है। परिणाम उस तालिका का एक सिंहावलोकन होगा जो उसमें सभी डेटा जोड़ता है।
SELECT Sum(Employees) as Sum,
AVG(Employees) as AVG,
MAX(Employees) as Max,
MIN(Employees) as Min
FROM [test].[dbo].[company]
एसक्यूएल ऑर्डर द्वारा
SQL के कई ऑपरेटर हैं, लेकिन सबसे अधिक उपयोग किए जाने वाले में से एक ORDER BY है। यह निर्दिष्ट अभिव्यक्ति के अनुसार डेटा सॉर्ट करता है। इसलिए, यदि आपके डेटा सेट में समान मान वाले एकाधिक रिकॉर्ड हैं, तो उन्हें आपकी प्राथमिकताओं के अनुसार क्रमबद्ध किया जाएगा।
दूसरे शब्दों में, SQL में ORDER BY ऑपरेटर एक तुलना ऑपरेटर है। यह आपको एक कॉलम के मानों की दूसरे कॉलम के मानों से तुलना करने और परिणामों को वापस करने की अनुमति देता है, जैसा कि इस तुलना द्वारा क्रमबद्ध किया गया है।
सिंटैक्स कॉलम-नाम द्वारा ऑर्डर करें . है . यदि आपको क्रमबद्ध तरीके से जानकारी खोजने की आवश्यकता है तो यह मददगार हो सकता है। उदाहरण के लिए, जब आप उन पंक्तियों की खोज कर रहे हैं जिनका मान समान है या यह निर्धारित करते समय कि कौन सी पंक्तियाँ सबसे लोकप्रिय हैं।
SELECT * FROM Readers
ORDER BY City;
एसक्यूएल ग्रुप बाय
SQL में GROUP BY ऑपरेटर एक बहुत ही महत्वपूर्ण और उपयोगी टूल है। इसका उपयोग डेटा की पंक्तियों को समूहबद्ध करने के लिए किया जा सकता है जो किसी प्रकार की सामान्य विशेषता या संपत्ति साझा करते हैं। इसलिए, यह क्वेरी में निर्दिष्ट एक या अधिक कॉलम द्वारा पंक्तियों को सॉर्ट करता है। अन्य सभी क्लॉज़ निष्पादित होने के बाद यह क्लॉज आमतौर पर SQL स्टेटमेंट के अंत में रखा जाता है।
एक विशिष्ट मामला आपके डेटाबेस में डेटा को सारांशित करने के लिए GROUP BY का उपयोग कर रहा है। सेलेक्ट स्टेटमेंट परिणाम सेट से अवांछित रिकॉर्ड्स को फ़िल्टर करने के लिए WHERE क्लॉज का उपयोग करता है, और फिर यह आपके द्वारा निर्दिष्ट कुछ विशेषताओं के आधार पर ग्रुप से संबंधित रिकॉर्ड्स को ग्रुप बाय क्लॉज का उपयोग करता है।
SELECT * FROM Readers
GROUP BY Country;
एसक्यूएल इंजेक्शन
किसी भी वेब प्रोग्रामर ने SQL इंजेक्शन हमलों के बारे में सुना है। वे कई लोकप्रिय वेबसाइटों और अनुप्रयोगों में गहरे घाव छोड़ते हुए इंटरनेट का संकट हैं, जिन्हें ठीक होने में वर्षों लग सकते हैं। यदि आप इन हमलों के शिकार होने से बचना चाहते हैं, तो यह समझना महत्वपूर्ण है कि वे क्या हैं, वे कैसे काम करते हैं, और भविष्य में उनसे अपनी रक्षा करने के लिए आप क्या कर सकते हैं।
यदि आप SQL इंजेक्शन हमलों से परिचित नहीं हैं, तो आपका वेब एप्लिकेशन उनके लिए असुरक्षित हो सकता है। इस तरह के हमलों का पता लगाने के लिए एक नई तकनीक को जगाने के लिए खतरा काफी गंभीर है। हालाँकि, प्रौद्योगिकी पर निर्भर होना पर्याप्त नहीं है। सुरक्षा पेशेवरों की मदद करने के लिए, हमने एक आसान चीट शीट तैयार की है जो बताती है कि SQL इंजेक्शन सादे अंग्रेजी में कैसे काम करता है।
संवेदनशील डेटा तक पहुंच प्राप्त करने, मौजूदा डेटाबेस को संशोधित करने या डेटा को हटाने के लिए हमलावर अनधिकृत प्रश्नों को निष्पादित करते हैं। इस तरह, SQL इंजेक्शन एक कोड इंजेक्शन तकनीक है जो डेटा-संचालित अनुप्रयोगों पर हमला करती है जहां दुर्भावनापूर्ण SQL कथन निष्पादन के लिए एक प्रविष्टि फ़ील्ड में डाले जाते हैं (आमतौर पर एक HTTP अनुरोध के माध्यम से)।
एक सफल हमला हमलावर को उस वेबसाइट के सभी डेटाबेस सर्वर तक पहुंच प्रदान करता है। एक बार अंदर जाने के बाद, एक हमलावर डेटाबेस सामग्री को पुनः प्राप्त कर सकता है, उन्हें बदल सकता है या उन्हें नष्ट भी कर सकता है। यही कारण है कि वेब डेवलपर्स के लिए यह समझना बहुत महत्वपूर्ण है कि उनकी प्रोग्रामिंग भाषा संभावित हमलावरों के लिए SQL इंजेक्शन को कैसे आसान या कठिन बनाती है।
SQL इंजेक्शन हमले के दो मुख्य प्रकार हैं:त्रुटि-आधारित और अंधा ।
एक त्रुटि-आधारित हमला तब होता है जब कोई डेवलपर उपयोगकर्ता इनपुट को साफ नहीं करता है। इसके परिणामस्वरूप दुभाषिया को खराब डेटा भेजा जाता है और वैध उपयोगकर्ताओं के लिए त्रुटियां (या अप्रत्याशित व्यवहार) होती हैं। त्रुटि-आधारित हमले का कारण अक्सर देखना आसान होता है। यह त्रुटि लॉग में पंजीकृत होगा या परीक्षण के दौरान बग के रूप में दिखाई देगा।
इस प्रकार के हमले खराब कोड समीक्षा प्रक्रिया के कारण भी होते हैं - यदि एक कोडर स्क्रिप्ट में डिबगिंग कोड छोड़ देता है, तो अन्य संभावित समस्याओं के बारे में जाने बिना इसे चलाएंगे।
यदि आप अपनी वेबसाइट पर डेटाबेस त्रुटियाँ या अन्य अजीब व्यवहार देखते हैं, तो आपको SQL इंजेक्शन की समस्या हो सकती है!
निष्कर्ष
बेशक, कोई भी डेटाबेस विशेषज्ञ जो काम में SQL का उपयोग करता है, उसे इन सभी कमांड्स को दिल से जानना चाहिए। फिर भी, उन्हें हाथ में एक साधारण चीट शीट के रूप में रखना भी मददगार होता है। नीचे टिप्पणी अनुभाग में अपने विचार और पेशेवर तरकीबें साझा करने के लिए स्वतंत्र महसूस करें!