Ch 8 covers SQL in depth — the standard language for relational databases. Learn DDL (creating tables), DML (modifying data), DQL (querying data), aggregate functions, grouping, and JOIN operations.
DDL (Data Definition Language): CREATE TABLE students(roll INT PRIMARY KEY, name VARCHAR(50), marks FLOAT); ALTER TABLE students ADD email VARCHAR(100); DROP TABLE students; Data types: INT, FLOAT/DOUBLE, VARCHAR(n), CHAR(n), DATE, BOOLEAN. Constraints: PRIMARY KEY, NOT NULL, UNIQUE, DEFAULT, CHECK. DML: INSERT INTO students VALUES(1, "Alice", 95.5); UPDATE students SET marks=98 WHERE roll=1; DELETE FROM students WHERE roll=1;
SELECT: SELECT * FROM students; SELECT name, marks FROM students WHERE marks > 80; Operators: =, !=, <, >, <=, >=, AND, OR, NOT, BETWEEN, IN, LIKE (% = any chars, _ = one char), IS NULL. ORDER BY marks DESC — sort descending. DISTINCT — unique values. Aggregate functions: COUNT(*), SUM(marks), AVG(marks), MAX(marks), MIN(marks). GROUP BY city — group rows by column. HAVING AVG(marks)>80 — filter groups (WHERE filters rows, HAVING filters groups). Aliases: SELECT AVG(marks) AS avg_marks. JOIN basics: SELECT s.name, c.class_name FROM students s, classes c WHERE s.class_id = c.id; (Cartesian product with condition = equi-join).
Download: https://ncert.nic.in/textbook/pdf/lecs108.pdf | Complete Book: https://ncert.nic.in/textbook/pdf/lecs1ps.zip
WHERE filters individual rows BEFORE grouping — it cannot use aggregate functions. HAVING filters groups AFTER GROUP BY — it CAN use aggregates. Example: SELECT city, AVG(marks) FROM students WHERE marks > 30 GROUP BY city HAVING AVG(marks) > 70. Here: WHERE excludes students with marks ≤ 30 first. Then GROUP BY groups remaining students by city. HAVING keeps only cities where the average exceeds 70. Processing order: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY.
Book a Trial + Diagnostic session. Get a personalized Learning Path with clear milestones, tutor match, and a plan recommendation — all within 24 hours.
Book Trial + Diagnostic →