आज के बढ़े हुए डिजिटलीकरण, बड़े डेटा और क्लाउड कंप्यूटिंग की दुनिया में, डेटा प्रबंधन सबसे महत्वपूर्ण कौशल है जो एक सॉफ्टवेयर इंजीनियर के पास हो सकता है। इसके लिए, सबसे शक्तिशाली डेटाबेस टूल में से एक SQL है।
SQL (संरचित क्वेरी भाषा) मानक प्रोग्रामिंग भाषा है जिसका उपयोग डेटा संरचना वस्तुओं में हेरफेर करने के लिए किया जाता है। वे डेटा पर काम करते हैं जो एक रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (RDBMS) में निहित है। कुछ प्रसिद्ध RDBMS MySQL और PostgreSQL हैं।
इस गाइड में, आप SQL भाषा के सबसेट और कुछ मूलभूत SQL कमांड का उपयोग करने के तरीके के बारे में जानेंगे, जैसे SELECT
, INSERT
, UPDATE
, और DELETE
।
SQL के सबसेट
नीचे दी गई सूची में विभिन्न SQL कमांड के विभिन्न भाषा उपसमुच्चय शामिल हैं। प्रत्येक उपसमुच्चय का अपना कार्य और उद्देश्य होता है।
- डेटा परिभाषा भाषा (डीडीएल):यह आपको डेटाबेस स्कीमा परिभाषाओं (अर्थात्, टेबल और इंडेक्स) को बनाने, हटाने और अपडेट करने की अनुमति देता है, वास्तव में डेटाबेस टेबल के भीतर डेटा में हेरफेर किए बिना।
- डेटा क्वेरी भाषा (DQL):DQL का उपयोग डेटाबेस से डेटा प्राप्त करने के लिए
SELECT
. का उपयोग करके किया जाता है बयान। - डेटा हेरफेर भाषा (डीएमएल):यह उपभाषा
INSERT
. का उपयोग करके डेटाबेस में डेटा हेरफेर की अनुमति देती है ,UPDATE
, औरDELETE
बयान।
यह मार्गदर्शिका ऊपर सूचीबद्ध प्रत्येक सबसेट के लिए SQL कमांड को आगे प्रदर्शित करने के लिए स्कूल के लिए एक उदाहरण डेटाबेस का उपयोग करती है। छात्रों, पाठ्यक्रमों, ग्रेड आदि के लिए स्कूल डेटाबेस में कई टेबल हैं। Student
की परिभाषा तालिका में छात्र के SSNumber
. के लिए कॉलम हैं , Firstname
, और Lastname
, और CourseTaken
. की परिभाषा तालिका में SSNumber
. के लिए कॉलम हैं , CourseId
, NumericGrade
, और YearTaken
।
उदाहरण मानता है कि स्कूल में तीन छात्र हैं, जिनमें से प्रत्येक ने दो पाठ्यक्रम पूरे कर लिए हैं। नमूना डेटा नीचे दी गई तालिका में दिखाया गया है:
SSNumber | <वें शैली=पाठ्य-संरेखण:केंद्र>अंतिम नाम <वें शैली=पाठ्य-संरेखण:केंद्र>प्रथमनाम <वें शैली=पाठ्य-संरेखण:केंद्र>पाठ्यक्रम आईडी <वें स्टाइल=टेक्स्ट-एलाइन:सेंटर>न्यूमेरिकग्रेड <वीं शैली =पाठ-संरेखण:केंद्र> वर्ष लिया गया|||||
---|---|---|---|---|---|
111111111 | स्मिथ | जॉन | CSC101 | 98 | 2021 |
111111111 | स्मिथ | जॉन | ENG101 | 95 | 2022 |
222222222 | Jones | मैरी | CSC101 | 100 | 2022 |
222222222 | Jones | मैरी | EEE101 | 75 | 2022 |
3333333333 | Hansen | रॉबर्ट | POL101 | 92 | 2021 |
3333333333 | Hansen | रॉबर्ट | SOC103 | 84 | 2022 |
SQL कमांड का उपयोग करके टेबल्स बनाएं, बदलें, और ड्रॉप करें
कमांड लाइन से, CREATE TABLE
का उपयोग करें तालिका और तालिका डेटा के नाम के बाद आदेश। नीचे दिया गया कमांड Student
बनाता है टेबल।
CREATE TABLE Student (
SSNumber CHAR(9) NOT NULL,
LastName VARCHAR(30) NOT NULL,
FirstName VARCHAR(20) NOT NULL
);
कोष्ठक प्रत्येक पंक्ति के डेटा को लेबल करने वाले कॉलम से शुरू होने वाले तालिका डेटा को संलग्न करता है। अगला कॉलम उस डेटा प्रकार को इंगित करता है जो इस पंक्ति में है। CHAR
एक निश्चित-लंबाई वाले स्ट्रिंग डेटा प्रकार और VARCHAR
. को इंगित करता है एक चर-लंबाई स्ट्रिंग डेटा प्रकार इंगित करता है। अंतिम कॉलम में, NOT NULL
विशेषता यह सुनिश्चित करती है कि NOT NULL
. में से कोई भी रिकॉर्ड तालिका में नहीं जोड़ा जा सकता है कॉलम में उनके साथ संबद्ध डेटा नहीं है।
नोट CREATE TABLE
कथन को एक अनुगामी अर्धविराम (;) के साथ सीमांकित किया गया है, हालांकि यह संभव है कि कुछ व्यावसायिक संबंधपरक डेटाबेस सिस्टम को उस सीमांकक की आवश्यकता न हो।
नोट जब तक अन्यथा उल्लेख न किया गया हो, इस गाइड में प्रदर्शित सभी डेटाबेस कमांड MySQL . दोनों पर अच्छी तरह से काम करते हैं और PostgreSQL .
CourseTaken
बनाने के लिए तालिका, निम्न आदेश निष्पादित करें:
CREATE TABLE CourseTaken (
SSNumber CHAR(9) NOT NULL,
CourseId CHAR(6) NOT NULL,
NumericGrade INT NOT NULL
);
YearTaken
कॉलम जानबूझकर CourseTaken
. में शामिल नहीं है ALTER TABLE
. के उपयोग को प्रदर्शित करने के लिए तालिका आज्ञा। YearTaken
जोड़ने के लिए CourseTaken
. में कॉलम तालिका, आपको CourseTaken
को छोड़ने की आवश्यकता नहीं है तालिका पूरी तरह से। इसके बजाय, आप DDL ALTER TABLE
. का उपयोग कर सकते हैं आज्ञा। निम्न कमांड CourseTaken
को बदल देता है तालिका में अनुपलब्ध स्तंभ जोड़कर तालिका।
ALTER TABLE CourseTaken
ADD (YearTaken INT NOT NULL);
ऊपर दिया गया कमांड पहले की तरह समान सिंटैक्स का अनुसरण करता है। इसके लिए तालिका के नाम के साथ-साथ तीन तर्कों की आवश्यकता होती है:पंक्ति का नाम, पंक्ति डेटा प्रकार, और NOT NULL
गुण। यदि आप CourseTaken
को हटाना चाहते हैं तालिका पूरी तरह से, डीडीएल जारी करें DROP TABLE
तालिका नाम के बाद आदेश।
DROP TABLE CourseTaken;
सावधानी किसी तालिका को छोड़ने से तालिका का सारा डेटा हट जाता है।
SQL में किसी तालिका में डेटा कैसे सम्मिलित करें
तालिका में डेटा सम्मिलित करने के लिए, SQL INSERT INTO
. का उपयोग करें बयान। इस आदेश को कॉल करने के लिए, तालिका का नाम और पंक्ति नामों की सूची (कोष्ठक में) प्रदान करें जिसमें आप डेटा सम्मिलित करना चाहते हैं। इसके बाद VALUES
. आता है कीवर्ड और वास्तविक मान (कोष्ठक में) जिन्हें आप सम्मिलित करना चाहते हैं। मानों को पंक्तियों में डाला जाता है जिसके क्रम में उन्हें बुलाया जाता है।
नोट
- SQL कमांड को सभी लाइनों में तोड़ा जा सकता है। SQL कमांड के अंत को अर्धविराम (
;
.) द्वारा सीमांकित किया जाता है )।- कैरेक्टर डेटा एक ओपनिंग और क्लोजिंग एपॉस्ट्रॉफी (
‘
. द्वारा सीमांकित किया जाता है ), जबकि संख्यात्मक डेटा नहीं है।
निम्नलिखित INSERT
कमांड Student
. में तीन पंक्तियाँ सम्मिलित करता है टेबल। ये आदेश एकाधिक INSERT
. का उपयोग करते हैं बयान।
INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('111111111', 'Smith', 'John');
INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('222222222', 'Jones', 'Mary');
INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('333333333', 'Hansen', 'Robert');
इसी तरह, आप एक एकल SQL क्वेरी में तालिका में कई पंक्तियाँ भी सम्मिलित कर सकते हैं जैसा कि नीचे दिखाया गया है:
INSERT INTO CourseTaken
(SSNumber, CourseId, NumericGrade, YearTaken)
VALUES
('111111111', 'CSC101', 98, 2021),
('111111111', 'ENG101', 95, 2022),
('222222222', 'CSC101', 100, 2022);
नोटआप
INSERT INTO
. का उपयोग कर सकते हैं PostgreSQL . में इसी तरह कमांड करें तालिका में पंक्तियों को जोड़ने के लिए। सुनिश्चित करें कि मान तालिका परिभाषा में स्तंभों के क्रम से मेल खाते हैं।INSERT INTO student VALUES ('111111111', 'Smith', 'John');
तालिका से डेटा हटाएं
किसी तालिका से डेटा हटाने के लिए, SQL DELETE FROM
. का उपयोग करें बयान। WHERE
का उपयोग करें शर्त निर्दिष्ट करने के लिए खंड, और यदि एक से अधिक शर्तें हैं, तो AND
. का उपयोग करें WHERE
. के साथ क्लॉज ।
उदाहरण के लिए, निम्न कमांड CourseTaken
. से एक रिकॉर्ड हटाता है SSNumber . के साथ तालिका 333333333
और पाठ्यक्रम आईडी POL101
।
सावधानी अगर आप WHERE
. को छोड़ देते हैं खंड, तालिका के सभी रिकॉर्ड हटा दिए जाते हैं।
DELETE FROM CourseTaken WHERE SSNumber = '333333333' AND CourseId = 'POL101';
तालिका में डेटा अपडेट करने के लिए SQL कमांड
किसी तालिका में मौजूदा रिकॉर्ड को अद्यतन करने के लिए, SQL UPDATE
का उपयोग करें आज्ञा। SET
क्लॉज का उपयोग किसी विशेष कॉलम में एक नया मान सेट (अपडेट) करने के लिए किया जाता है और WHERE
क्लॉज का उपयोग चयनित पंक्तियों को अपडेट करने के लिए किया जाता है।
उदाहरण के लिए, निम्न कमांड NumericGrade
को अपडेट करता है CourseTaken
. का कॉलम SSNumber . के साथ रिकॉर्ड के लिए तालिका 222222222
और पाठ्यक्रम आईडी EEE101
।
UPDATE CourseTaken
SET NumericGrade = 95
WHERE SSNumber = '222222222' AND CourseId = 'EEE101';
एक तालिका से डेटा प्राप्त करने के लिए SQL कमांड
रिलेशनल डेटाबेस सिस्टम की वास्तविक शक्ति SQL SELECT
के माध्यम से एक मल्टी-टेबल स्कीमा में जानकारी को पुनः प्राप्त करने की क्षमता में है। कमांड, और सामान्य कुंजियों के माध्यम से तालिकाओं में शामिल होने की क्षमता। हालांकि यह परिचयात्मक मार्गदर्शिका उन कुंजियों का उपयोग करके कुंजियों और अनुक्रमणिकाओं के निर्माण की जांच नहीं करती है, यह SSNumber
का उपयोग करती है सूचना उत्पन्न करने के लिए तालिकाओं से संबंधित (या जुड़ने) के लिए वाहन (कुंजी) के रूप में प्रत्येक तालिका का स्तंभ। निम्न उदाहरण SQL SELECT
. का उपयोग करने के विभिन्न उपयोग के मामले प्रदान करते हैं कमांड लाइन से कमांड।
उदाहरण 1: स्कूल में सभी छात्रों की सूची लाने के लिए।
SELECT * from Student;
आउटपुट:
+-----------+----------+-----------+
| SSNumber | LastName | FirstName |
+-----------+----------+-----------+
| 111111111 | Smith | John |
| 222222222 | Jones | Mary |
| 333333333 | Hansen | Robert |
+-----------+----------+-----------+
उदाहरण 2: उनके द्वारा लिए गए सभी छात्रों और पाठ्यक्रमों की सूची लाने के लिए।
SELECT Student.SSNumber, Student.LastName,
Student.FirstName, CourseTaken.CourseId
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber;
आउटपुट:
+-----------+----------+-----------+----------+
| SSNumber | LastName | FirstName | CourseId |
+-----------+----------+-----------+----------+
| 111111111 | Smith | John | CSC101 |
| 111111111 | Smith | John | ENG101 |
| 222222222 | Jones | Mary | CSC101 |
+-----------+----------+-----------+----------+
नोट उपरोक्त कमांड में, दो टेबल,Student
औरCourseTaken
आवश्यक जानकारी प्राप्त करने के लिए शामिल हो गए हैं।SELECT
. में कॉलम के नाम औरWHERE
स्पष्टता के लिए क्लॉज उनके टेबल नामों के साथ उपसर्ग करते हैं। हालांकि,SSNumber
. के मामले में कॉलम में, हमें उपयुक्त तालिका नाम उपसर्ग निर्दिष्ट करने की आवश्यकता है, क्योंकि दोनों तालिकाएं समान कॉलम नाम साझा करती हैं।FROM
क्लॉज उन तालिकाओं को इंगित करता है जिनका उपयोग इस क्वेरी में किया जा रहा है।
उदाहरण 3: CourseId . के साथ छात्रों की सूची प्राप्त करें CSC101
और जिस वर्ष उन्होंने यह कोर्स किया।
SELECT Student.LastName, Student.FirstName,
CourseTaken.CourseId, CourseTaken.YearTaken
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber
AND CourseTaken.CourseId = 'CSC101';
आउटपुट:
+----------+-----------+----------+-----------+
| LastName | FirstName | CourseId | YearTaken |
+----------+-----------+----------+-----------+
| Smith | John | CSC101 | 2021 |
| Jones | Mary | CSC101 | 2022 |
+----------+-----------+----------+-----------+
उदाहरण 4: उन छात्रों के नाम, लिए गए पाठ्यक्रम और प्राप्त ग्रेड की सूची प्राप्त करें, जिनके पास 90
से ऊपर के पाठ्यक्रम ग्रेड थे ।
SELECT Student.LastName, Student.FirstName,
CourseTaken.CourseId, CourseTaken.NumericGrade
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber
AND CourseTaken.NumericGrade > 90;
आउटपुट:
+----------+-----------+----------+--------------+
| LastName | FirstName | CourseId | NumericGrade |
+----------+-----------+----------+--------------+
| Smith | John | ENG101 | 95 |
| Smith | John | CSC101 | 98 |
| Jones | Mary | CSC101 | 100 |
+----------+-----------+----------+--------------+
ध्यान दें AND
ऊपर दिए गए कमांड में क्लॉज आपको सशर्त ग्रेड स्कोर टेस्ट द्वारा परिणामों को फ़िल्टर करने की अनुमति देता है।
निष्कर्ष
SQL कमांड पर यह गाइड डेटाबेस स्कीमा बनाने और उन डेटाबेस के भीतर डेटा में हेरफेर करने के तरीके पर एक प्रारंभिक प्राइमर है। हालांकि यहां पेश की गई अवधारणाएं रिलेशनल डेटाबेस सिस्टम के उपयोग के संबंध में केवल सतह को खरोंचती हैं, यह बुनियादी और आवश्यक कमांड और अवधारणाओं के लिए एक अच्छा प्रारंभिक बिंदु है।