🗄️ Unit 3 – Database और SQL · Lesson 21
SQL: DDL, DML और SELECT
SQL क्या है?
SQL (Structured Query Language) MySQL जैसे relational databases के साथ काम करने की standard भाषा है। Keywords case-sensitive नहीं हैं और हर statement semicolon पर ख़त्म होता है।
🏗️
DDLData Definition: CREATE, ALTER, DROP – structure तय करते हैं।✏️
DMLData Manipulation: INSERT, UPDATE, DELETE, SELECT – rows पर काम।🛡️
DCL / TCLGRANT, REVOKE, COMMIT, ROLLBACK – permissions और transactions।SQL
CREATE DATABASE SCHOOL; USE SCHOOL; SHOW TABLES;
Data types और constraints
| Data type | क्या रखता है | Example |
|---|---|---|
| INT | पूर्ण संख्याएँ | RollNo INT |
| DECIMAL(p,s) / FLOAT | दशमलव वाली संख्याएँ | Marks DECIMAL(5,1) |
| CHAR(n) | Fixed-length text | Gender CHAR(1) |
| VARCHAR(n) | Variable-length text | Name VARCHAR(25) |
| DATE | YYYY-MM-DD | DOB DATE |
| Constraint | मतलब |
|---|---|
| PRIMARY KEY | Unique + NOT NULL पहचान |
| NOT NULL | Value देनी ही होगी |
| UNIQUE | दो rows की value एक जैसी नहीं |
| DEFAULT | Value न देने पर यह लगेगी |
| FOREIGN KEY | दूसरी table की key से मेल खाना चाहिए |
CREATE TABLE और DESCRIBE
SQL
CREATE TABLE STUDENT ( RollNo INT PRIMARY KEY, Name VARCHAR(25) NOT NULL, Stream VARCHAR(12), Marks DECIMAL(5,1), City VARCHAR(15) DEFAULT 'Delhi' );
SQL
DESCRIBE STUDENT;
Output
+--------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+--------------+------+-----+---------+-------+ | RollNo | int | NO | PRI | NULL | | | Name | varchar(25) | NO | | NULL | | | Stream | varchar(12) | YES | | NULL | | | Marks | decimal(5,1) | YES | | NULL | | | City | varchar(15) | YES | | Delhi | | +--------+--------------+------+-----+---------+-------+
INSERT
Values column के क्रम में हों; text और dates quotes में। Column list देने पर बचे columns को DEFAULT (City = 'Delhi') या NULL मिलता है।
SQL
INSERT INTO STUDENT VALUES (1, 'Anika', 'Science', 91.5, 'Jaipur'), (2, 'Dev', 'Commerce', 78.0, 'Delhi'), (3, 'Farhan', 'Science', 64.5, 'Lucknow'), (4, 'Gauri', 'Humanities', 88.0, 'Delhi'), (5, 'Harsh', 'Commerce', 55.0, 'Pune'), (6, 'Isha', 'Science', NULL, 'Jaipur');
SQL
INSERT INTO STUDENT (RollNo, Name, Stream, Marks) VALUES (7, 'Jatin', 'Commerce', 69.5);
SQL
SELECT * FROM STUDENT;
Output
+--------+--------+------------+-------+---------+ | RollNo | Name | Stream | Marks | City | +--------+--------+------------+-------+---------+ | 1 | Anika | Science | 91.5 | Jaipur | | 2 | Dev | Commerce | 78.0 | Delhi | | 3 | Farhan | Science | 64.5 | Lucknow | | 4 | Gauri | Humanities | 88.0 | Delhi | | 5 | Harsh | Commerce | 55.0 | Pune | | 6 | Isha | Science | NULL | Jaipur | | 7 | Jatin | Commerce | 69.5 | Delhi | +--------+--------+------------+-------+---------+
SELECT और WHERE
- 1FROM – table चुनें
- 2WHERE – सिर्फ़ मेल खाती rows रखें
- 3SELECT – columns चुनें
- 4ORDER BY – result sort करें
SQL
SELECT Name, Marks FROM STUDENT WHERE Stream = 'Science' AND Marks > 70;
Output
+-------+-------+ | Name | Marks | +-------+-------+ | Anika | 91.5 | +-------+-------+
BETWEEN, IN, LIKE, NULL
BETWEEN a AND b में दोनों सिरे शामिल हैं। IN list की किसी भी value से मेल खाता है। LIKE में % मतलब कितने भी characters और _ ठीक एक।
SQL
SELECT Name, Marks FROM STUDENT WHERE Marks BETWEEN 60 AND 80;
Output
+--------+-------+ | Name | Marks | +--------+-------+ | Dev | 78.0 | | Farhan | 64.5 | | Jatin | 69.5 | +--------+-------+
SQL
SELECT Name, City FROM STUDENT WHERE City IN ('Jaipur', 'Pune');Output
+-------+--------+ | Name | City | +-------+--------+ | Anika | Jaipur | | Harsh | Pune | | Isha | Jaipur | +-------+--------+
SQL
SELECT Name FROM STUDENT WHERE Name LIKE '%a' OR Name LIKE '_a%';
Output
+--------+ | Name | +--------+ | Anika | | Farhan | | Gauri | | Harsh | | Isha | | Jatin | +--------+
SQL
SELECT Name, Marks FROM STUDENT WHERE Marks IS NULL;
Output
+------+-------+ | Name | Marks | +------+-------+ | Isha | NULL | +------+-------+
DISTINCT, ORDER BY, aliases
SQL
SELECT DISTINCT Stream FROM STUDENT;
Output
+------------+ | Stream | +------------+ | Science | | Commerce | | Humanities | +------------+
SQL
SELECT Name, Marks FROM STUDENT WHERE Marks IS NOT NULL ORDER BY Marks DESC;
Output
+--------+-------+ | Name | Marks | +--------+-------+ | Anika | 91.5 | | Gauri | 88.0 | | Dev | 78.0 | | Jatin | 69.5 | | Farhan | 64.5 | | Harsh | 55.0 | +--------+-------+
SQL
SELECT Name, Marks, Marks * 5 AS 'Out of 500' FROM STUDENT WHERE Stream = 'Commerce';
Output
+-------+-------+------------+ | Name | Marks | Out of 500 | +-------+-------+------------+ | Dev | 78.0 | 390.0 | | Harsh | 55.0 | 275.0 | | Jatin | 69.5 | 347.5 | +-------+-------+------------+
UPDATE और DELETE
⚠️ हमेशा WHERE लगाएँ
बिना WHERE के UPDATE या DELETE हर row बदल या हटा देता है।
SQL
UPDATE STUDENT SET Marks = 72.0 WHERE RollNo = 6;
SQL
UPDATE STUDENT SET Marks = Marks + 2 WHERE Stream = 'Commerce';
SQL
SELECT RollNo, Name, Marks FROM STUDENT WHERE Stream IN ('Commerce') OR RollNo = 6;Output
+--------+-------+-------+ | RollNo | Name | Marks | +--------+-------+-------+ | 2 | Dev | 80.0 | | 5 | Harsh | 57.0 | | 6 | Isha | 72.0 | | 7 | Jatin | 71.5 | +--------+-------+-------+
SQL
DELETE FROM STUDENT WHERE Marks < 60;
ALTER और DROP
SQL
ALTER TABLE STUDENT ADD Phone CHAR(10);
SQL
ALTER TABLE STUDENT MODIFY Name VARCHAR(40) NOT NULL;
SQL
ALTER TABLE STUDENT DROP Phone;
SQL
SELECT * FROM STUDENT;
Output
+--------+--------+------------+-------+---------+ | RollNo | Name | Stream | Marks | City | +--------+--------+------------+-------+---------+ | 1 | Anika | Science | 91.5 | Jaipur | | 2 | Dev | Commerce | 80.0 | Delhi | | 3 | Farhan | Science | 64.5 | Lucknow | | 4 | Gauri | Humanities | 88.0 | Delhi | | 6 | Isha | Science | 72.0 | Jaipur | | 7 | Jatin | Commerce | 71.5 | Delhi | +--------+--------+------------+-------+---------+
SQL
CREATE TABLE TEMP (ID INT);
SQL
DROP TABLE TEMP;
DDL vs DML
DDL
- Structure (schema) पर काम
- CREATE, ALTER, DROP
- ALTER columns जोड़ता/बदलता/हटाता है
- DROP TABLE table + data हटाता है
DML
- Data (rows) पर काम
- INSERT, UPDATE, DELETE, SELECT
- UPDATE rows की values बदलता है
- DELETE rows हटाता है, table रहती है
अक्सर पूछे जाने वाले प्रश्न (FAQ)
DELETE और DROP में क्या फ़र्क है?
DELETE (DML) rows हटाता है पर table का structure रहता है। DROP TABLE (DDL) पूरे data समेत table ही हटा देता है।
CHAR और VARCHAR में क्या फ़र्क है?
CHAR(n) हमेशा n characters लेता है (spaces से भरकर)। VARCHAR(n) n तक सिर्फ़ उतने characters लेता है जितने रखे गए।
= NULL की जगह IS NULL क्यों लिखते हैं?
NULL का मतलब अज्ञात है, इसलिए = से तुलना कभी true नहीं होती। इसे जाँचने का ख़ास operator IS NULL है।
