🔬
🧬
🔭
🪐
🧪
← डैशबोर्ड पर वापस जाएँ
Font Size:

1. परिचय

SQL (Structured Query Language) एक मानक क्वेरी भाषा है जिसका उपयोग रिलेशनल डेटाबेस में डेटा को परिभाषित, प्रबंधित और पुनः प्राप्त करने के लिए किया जाता है। SQL की सहायता से हम तालिकाएँ बना सकते हैं, उनमें डेटा जोड़ सकते हैं, डेटा को सुधार सकते हैं, हटा सकते हैं और उसे विभिन्न शर्तों के अनुसार खोज सकते हैं। SQL को 'सीक्वल' (Sequel) के रूप में भी उच्चारित किया जाता है।

SQL के आदेश (commands) मुख्य रूप से तीन श्रेणियों में विभाजित हैं:

  1. DDL (Data Definition Language): तालिका की संरचना को परिभाषित करना - CREATE, ALTER, DROP, TRUNCATE
  2. DML (Data Manipulation Language): डेटा में हेरफेर करना - INSERT, UPDATE, DELETE, SELECT
  3. DCL (Data Control Language): अधिकारों को नियंत्रित करना - GRANT, REVOKE

इस अध्याय में हम मुख्य रूप से DDL और DML आदेशों का विस्तार से अध्ययन करेंगे।

2. तालिका बनाना (CREATE TABLE)

CREATE TABLE आदेश से नई तालिका बनाई जाती है। इसमें स्तंभों के नाम, उनके डेटा प्रकार और बाधाएँ (constraints) निर्दिष्ट की जाती हैं।

CREATE TABLE student (
    roll_no INTEGER PRIMARY KEY,
    name VARCHAR(30),
    class CHAR(3),
    city VARCHAR(20),
    marks DECIMAL(5, 2)
);

SQL के मुख्य डेटा प्रकार:

डेटा प्रकार विवरण उदाहरण
INTEGER / INT पूर्ण संख्याएँ 101
VARCHAR(n) अधिकतम n वर्णों की स्ट्रिंग 'अनु'
CHAR(n) निश्चित n वर्णों की स्ट्रिंग 'XII'
DECIMAL(p, s) दशमलव संख्या 85.50
DATE दिनांक '2024-01-15'
FLOAT फ्लोटिंग बिंदु संख्या 9.99

बाधाएँ (Constraints):

3. तालिका में डेटा जोड़ना (INSERT INTO)

INSERT आदेश से तालिका में नई पंक्ति (रिकॉर्ड) जोड़ी जाती है।

INSERT INTO student VALUES (101, 'अनु', 'XII', 'दिल्ली', 92.50);

INSERT INTO student (roll_no, name, class) VALUES (102, 'रवि', 'XII');

पहला उदाहरण सभी स्तंभों के मान देता है, जबकि दूसरे में केवल निर्दिष्ट स्तंभों के मान दिए गए हैं (शेष NULL रहते हैं)।

4. डेटा पुनः प्राप्त करना (SELECT)

SELECT आदेश डेटा देखने के लिए सबसे महत्वपूर्ण आदेश है।

4.1 सभी रिकॉर्ड देखना

SELECT * FROM student;

* का अर्थ है सभी स्तंभ।

4.2 कुछ स्तंभ देखना

SELECT name, city FROM student;

4.3 डुप्लिकेट हटाना (DISTINCT)

SELECT DISTINCT city FROM student;

4.4 शर्त के साथ (WHERE)

SELECT * FROM student WHERE class = 'XII';

SELECT name FROM student WHERE marks >= 90;

4.5 विभिन्न ऑपरेटर:

5. डेटा सुधारना और हटाना (UPDATE, DELETE)

5.1 UPDATE

UPDATE आदेश से मौजूदा रिकॉर्ड के मान बदले जाते हैं:

UPDATE student SET marks = 95 WHERE roll_no = 101;

UPDATE student SET city = 'पुणे' WHERE name = 'रवि';

सावधानी: यदि WHERE न दिया जाए तो तालिका की सभी पंक्तियाँ अपडेट हो जाती हैं।

5.2 DELETE

DELETE आदेश से रिकॉर्ड हटाए जाते हैं:

DELETE FROM student WHERE roll_no = 103;

DELETE FROM student;   -- सभी रिकॉर्ड हट जाते हैं

6. ORDER BY और संबद्ध फलन (Aggregate Functions)

6.1 ORDER BY

रिकॉर्ड्स को सॉर्ट करके प्रदर्शित करने के लिए:

SELECT * FROM student ORDER BY marks DESC;

SELECT * FROM student ORDER BY name ASC;

डिफ़ॉल्ट क्रम आरोही (ASC) होता है; अवरोही के लिए DESC लिखें।

6.2 संबद्ध फलन (Aggregate Functions)

फलन कार्य
COUNT(*) पंक्तियों की संख्या
SUM(column) स्तंभ का योग
AVG(column) स्तंभ का औसत
MIN(column) न्यूनतम मान
MAX(column) अधिकतम मान
SELECT COUNT(*) FROM student;
SELECT SUM(marks) FROM student;
SELECT AVG(marks) FROM student WHERE class = 'XII';
SELECT MIN(marks), MAX(marks) FROM student;

7. GROUP BY और HAVING

7.1 GROUP BY

रिकॉर्ड्स को समूहों में बाँटकर गणना करने के लिए:

SELECT city, COUNT(*) FROM student GROUP BY city;

SELECT class, AVG(marks) FROM student GROUP BY class;

7.2 HAVING

HAVING समूहों पर शर्त लगाता है (जबकि WHERE पंक्तियों पर):

SELECT city, COUNT(*) FROM student GROUP BY city HAVING COUNT(*) > 1;

8. संशोधन आदेश (ALTER, DROP, TRUNCATE)

8.1 ALTER TABLE

तालिका की संरचना में बदलाव:

ALTER TABLE student ADD COLUMN phone VARCHAR(12);
ALTER TABLE student DROP COLUMN phone;

8.2 DROP TABLE

तालिका को पूर्ण रूप से हटाता है (संरचना सहित):

DROP TABLE student;

8.3 TRUNCATE TABLE

तालिका के सभी रिकॉर्ड हटाता है परंतु संरचना बनाए रखता है:

TRUNCATE TABLE student;

9. पाइथन के साथ SQL (Python + SQLite)

import sqlite3
conn = sqlite3.connect("school.db")
cur = conn.cursor()

cur.execute("SELECT name, marks FROM student WHERE marks > 85")
rows = cur.fetchall()
for row in rows:
    print(row)

conn.commit()
conn.close()

10. SQL में अंकगणितीय और तार्किक ऑपरेटर

SELECT क्वेरी में अंकगणितीय ऑपरेटरों (+, -, *, /, %) से स्तंभों के मानों पर गणना की जा सकती है। ध्यान दें कि ये गणनाएँ केवल प्रदर्शन के लिए होती हैं, डेटाबेस में मूल मान नहीं बदलते:

SELECT name, marks, marks + 5 AS adjusted_marks FROM student;
SELECT name, marks FROM student WHERE marks >= 40 AND marks <= 90;
SELECT name FROM student WHERE city = 'दिल्ली' OR city = 'मुंबई';
SELECT name FROM student WHERE NOT city = 'पुणे';

तार्किक ऑपरेटर AND, OR, NOT शर्तों को जोड़ने के लिए उपयोग होते हैं। AND में दोनों शर्तें सत्य होनी चाहिए, OR में कम से कम एक शर्त सत्य होनी चाहिए, और NOT शर्त को उल्टा कर देता है।

11. NULL की संकल्पना (Concept of NULL)

SQL में NULL का अर्थ है कि किसी स्तंभ में मान अनुपस्थित है। यह 0 या खाली स्ट्रिंग से भिन्न है। NULL वाले मानों की तुलना सामान्य ऑपरेटरों (=, >) से नहीं की जा सकती:

SELECT * FROM student WHERE city IS NULL;
SELECT * FROM student WHERE city IS NOT NULL;
SELECT name FROM student WHERE marks IS NOT NULL;

NULL की पहचान के लिए IS NULL और IS NOT NULL का उपयोग किया जाता है। COUNT(column) NULL मानों को नहीं गिनता, जबकि COUNT(*) सभी पंक्तियों को गिनता है - यह अंतर वस्तुनिष्ठ प्रश्नों में बार-बार पूछा जाता है।

12. SQL आदेशों का उपयोग करने के अभ्यास उदाहरण

मान लीजिए एक तालिका marks_table है जिसमें स्तंभ हैं: roll_no, name, subject, marks। इस पर विभिन्न क्वेरी:

-- सभी रिकॉर्ड देखना
SELECT * FROM marks_table;

-- 90 से अधिक अंक वाले विद्यार्थी
SELECT name, marks FROM marks_table WHERE marks > 90;

-- विषय के अनुसार औसत अंक
SELECT subject, AVG(marks) FROM marks_table GROUP BY subject;

-- अंकों के अवरोही क्रम में सूची
SELECT name, marks FROM marks_table ORDER BY marks DESC;

-- कुल विद्यार्थियों की संख्या
SELECT COUNT(*) FROM marks_table;

-- अधिकतम और न्यूनतम अंक
SELECT MAX(marks), MIN(marks) FROM marks_table;

इस प्रकार के अभ्यास प्रश्न परीक्षा में पूछे जाने वाले कोड-लेखन प्रश्नों की तैयारी कराते हैं। ध्यान रखें कि GROUP BY के साथ आने वाले स्तंभ या तो समूहीकृत होने चाहिए या संबद्ध फलनों में उपयोग होने चाहिए।

13. तालिका संशोधन के अभ्यास उदाहरण

ALTER और अन्य DDL आदेशों के व्यावहारिक उपयोग को निम्नलिखित उदाहरणों से समझा जा सकता है:

-- तालिका में नया स्तंभ जोड़ना
ALTER TABLE student ADD COLUMN phone VARCHAR(12);

-- स्तंभ का डेटा प्रकार बदलना
ALTER TABLE student MODIFY COLUMN name VARCHAR(50);

-- स्तंभ हटाना
ALTER TABLE student DROP COLUMN phone;

-- तालिका का नाम बदलना
ALTER TABLE student RENAME TO student_info;

-- तालिका की संरचना देखना
DESCRIBE student;

ध्यान दें कि ALTER TABLE की संरचना DBMS के अनुसार थोड़ी भिन्न हो सकती है। MySQL में MODIFY COLUMN, ADD COLUMN और DROP COLUMN जैसे विकल्प उपयोग होते हैं। ALTER तालिका की संरचना को बदलता है जबकि UPDATE तालिका के डेटा को बदलता है - यह अंतर परीक्षा में बार-बार पूछा जाता है। DROP TABLE पूरी तालिका (संरचना और डेटा) को हटाता है, जबकि TRUNCATE केवल डेटा हटाकर संरचना बनाए रखता है। इन DDL आदेशों के बीच के भेद को स्पष्ट रूप से समझना आवश्यक है।

त्वरित पुनरावृत्ति तालिकाएँ

SQL आदेशों की श्रेणियाँ

श्रेणी आदेश उपयोग
DDL CREATE, ALTER, DROP, TRUNCATE संरचना परिभाषा
DML INSERT, UPDATE, DELETE, SELECT डेटा संचालन
DCL GRANT, REVOKE अधिकार नियंत्रण

मुख्य SQL कीवर्ड

कीवर्ड कार्य
WHERE पंक्तियों पर शर्त
ORDER BY सॉर्ट करना
GROUP BY समूह बनाना
HAVING समूहों पर शर्त
DISTINCT डुप्लिकेट हटाना
BETWEEN सीमा जाँच
LIKE पैटर्न मिलान
IN सूची जाँच

माइंड मैप

flowchart TD A["SQL"] --> B["DDL"] A --> C["DML"] B --> B1["CREATE"] B --> B2["ALTER"] B --> B3["DROP"] B --> B4["TRUNCATE"] C --> C1["SELECT"] C --> C2["INSERT"] C --> C3["UPDATE"] C --> C4["DELETE"] C1 --> C11["WHERE, ORDER BY"] C1 --> C12["GROUP BY, HAVING"] C1 --> C13["अंकगणितीय फलन"]

महत्वपूर्ण आरेख (SVG)

आरेख 1: SELECT क्वेरी का प्रवाह

SELECT क्वेरी FROM तालिका - किस तालिका से? WHERE - पंक्तियों पर शर्त GROUP BY - समूहीकरण ORDER BY - क्रम/सॉर्ट स्वर्ण नियम: WHERE पंक्तियों पर, HAVING समूहों पर

आरेख 2: SQL आदेशों की श्रेणियाँ

SQL आदेश DDL संरचना संबंधी DML डेटा संबंधी DCL अधिकार संबंधी CREATE ALTER DROP TRUNCATE SELECT INSERT UPDATE DELETE GRANT REVOKE स्वर्ण नियम: SELECT केवल डेटा पढ़ता है, उसे नहीं बदलता

सामान्य गलतियाँ

  1. UPDATE/DELETE में WHERE भूलना: यदि WHERE न दिया जाए तो तालिका की सभी पंक्तियाँ प्रभावित हो जाती हैं, जो विनाशकारी हो सकता है।
  2. COUNT(*) और COUNT(column) में अंतर: COUNT(*) सभी पंक्तियाँ गिनता है, जबकि COUNT(column) केवल वे जिनमें column में NULL नहीं है।
  3. ORDER BY में ASC/DESC भूलना: डिफ़ॉल्ट ASC है; DESC के लिए स्पष्ट रूप से लिखना आवश्यक है।
  4. LIKE में वाइल्डकार्ड: % किसी भी संख्या के वर्णों के लिए, _ केवल एक वर्ण के लिए। इन्हें उलटने से गलत परिणाम आता है।
  5. WHERE और HAVING में भ्रम: HAVING केवल GROUP BY के साथ और समूहों पर लगता है; WHERE पंक्तियों पर।
  6. VARCHAR(n) का अर्थ: n अधिकतम वर्णों की संख्या है, न कि निश्चित - इसको समझना आवश्यक है।
  7. डेटा प्रकारों का गलत उपयोग: संख्याओं को TEXT में और दिनांक को स्ट्रिंग में संग्रहीत करने से गणना गलत होती है।

परीक्षा युक्तियाँ

  1. सभी आदेशों का सिंटैक्स याद रखें: CREATE, INSERT, SELECT, UPDATE, DELETE का संरचनात्मक रूप।
  2. SELECT * FROM table WHERE condition; का पूर्ण वाक्य लिखना सीखें - कोड लिखने के प्रश्नों में यही आता है।
  3. आंकिक फलन (COUNT, SUM, AVG, MIN, MAX) के उपयोग का अभ्यास करें।
  4. ORDER BY और GROUP BY के बीच अंतर स्पष्ट रखें - ORDER BY सॉर्ट करता है, GROUP BY समूह बनाता है।
  5. दी गई तालिका पर क्वेरी का परिणाम लिखने के प्रश्नों का अभ्यास करें।
  6. WHERE में AND/OR के संयोजन वाले प्रश्न हल करें।
  7. दो तालिकाओं वाले प्रश्नों में विदेशी कुंजी संबंध समझें।

निष्कर्ष

SQL रिलेशनल डेटाबेस की भाषा है, जो तालिकाओं के निर्माण, डेटा प्रबंधन और डेटा पुनः प्राप्ति को सरल बनाती है। DDL आदेश संरचना को परिभाषित करते हैं, जबकि DML आदेश डेटा का संचालन करते हैं। SELECT क्वेरी WHERE, ORDER BY, GROUP BY, HAVING जैसे कीवर्ड के साथ शक्तिशाली परिणाम प्रदान करती है। COUNT, SUM, AVG, MIN, MAX जैसे संबद्ध फलन विश्लेषण में सहायक हैं। सही सिंटैक्स और शर्तों की समझ परीक्षा में उच्च अंक दिलाती है। SQL का अभ्यास डेटाबेस अवधारणाओं के साथ मिलकर कंप्यूटर विज्ञान के पाठ्यक्रम में महत्वपूर्ण भूमिका निभाता है।