Introduction
SQL (Structured Query Language) is used to interact with relational databases. It helps you to store, retrieve, update, and delete data. SQL is used in almost every industry, from websites to banking systems. If you want to work with data, SQL is a must-have skill. This cheatsheet will give you short and clear definitions, code examples, and key points for the most important SQL topics.
1. SELECT Statement
-
Definition: Used to fetch data from a table.
-
Example
SELECT name, age FROM Students;
-
Key Point: Use *
to select all columns.
2. WHERE Clause
-
Definition: Filters records based on a condition.
-
Example
SELECT * FROM Students WHERE age > 18;
-
Key Point: Works with operators like =
, >
, <
, BETWEEN
, IN
, LIKE
.
3. ORDER BY
-
Definition: Sorts the result in ascending or descending order.
-
Example
SELECT * FROM Students ORDER BY age DESC;
-
Key Point: Default sort is ascending (ASC
).
4. INSERT INTO
-
Definition: Adds new records to a table.
-
Example
INSERT INTO Students (name, age) VALUES ('John', 20);
-
Key Point: Match the column order with the values.
5. UPDATE
-
Definition: Changes existing records.
-
Example
UPDATE Students SET age = 21 WHERE name = 'John';
-
Key Point: Always use WHERE
to avoid updating all rows.
6. DELETE
-
Definition: Removes data from a table.
-
Example
DELETE FROM Students WHERE name = 'John';
-
Key Point: Without WHERE
, all rows will be deleted.
7. CREATE TABLE
-
Definition: Creates a new table.
-
Example
CREATE TABLE Students (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
-
Key Point: Define data types clearly.
8. ALTER TABLE
9. DROP TABLE
10. JOINs
-
Definition: Combines rows from two or more tables.
-
Example (INNER JOIN)
SELECT Students.name, Marks.score
FROM Students
INNER JOIN Marks ON Students.id = Marks.student_id;
-
Types
-
INNER JOIN: Only matching records.
-
LEFT JOIN: All records from left + matches.
-
RIGHT JOIN: All from right + matches.
-
FULL JOIN: All records from both.
11. GROUP BY
-
Definition: Groups rows based on a column and applies an aggregate function.
-
Example:
SELECT age, COUNT(*) FROM Students GROUP BY age;
-
Key Point: Always use with aggregate functions.
12. HAVING
-
Definition: Filters groups created by GROUP BY
.
-
Example:
SELECT age, COUNT(*)
FROM Students
GROUP BY age
HAVING COUNT(*) > 1;
-
Key Point: Use HAVING
after GROUP BY
.
13. Aggregate Functions
-
Definition: Perform calculations on multiple values.
-
Common ones: COUNT()
, SUM()
, AVG()
, MIN()
, MAX()
-
Example
SELECT AVG(age) FROM Students;
14. DISTINCT
15. BETWEEN, IN, LIKE
-
BETWEEN
SELECT * FROM Students WHERE age BETWEEN 18 AND 25;
-
IN
SELECT * FROM Students WHERE age IN (18, 21, 23);
-
LIKE
SELECT * FROM Students WHERE name LIKE 'A%';
16. LIMIT / TOP
-
Definition: Restricts number of rows returned.
-
MySQL
SELECT * FROM Students LIMIT 5;
-
SQL Server
SELECT TOP 5 * FROM Students;
17. UNION
-
Definition: Combines results of two SELECT
statements.
-
Example
SELECT name FROM Students
UNION
SELECT name FROM Teachers;
-
Key Point: Both queries must have the same number of columns.
18. Subquery
19. Views
20. Indexes
-
Definition: Improve search performance on columns.
-
Example
CREATE INDEX idx_name ON Students(name);
-
Key Point: Indexes speed up SELECT
but may slow down INSERT
/UPDATE
.
21. Constraints
-
Definition: Rules applied on columns.
-
Types
-
PRIMARY KEY
: Unique and not null.
-
FOREIGN KEY
: Links to another table’s primary key.
-
UNIQUE
: Ensures all values are different.
-
NOT NULL
: Prevents null values.
-
CHECK
: Validates a condition.
-
Example
CREATE TABLE Students (
id INT PRIMARY KEY,
age INT CHECK (age >= 0)
);
22. DEFAULT Constraint
-
Definition: Sets a default value for a column if none is provided.
-
Example
CREATE TABLE Students (
id INT,
name VARCHAR(50),
status VARCHAR(10) DEFAULT 'active'
);
-
Key Point: Helps avoid NULL
when no value is provided.
23. CASE Statement
-
Definition: Adds conditional logic inside a query.
-
Example
SELECT name,
CASE
WHEN age >= 18 THEN 'Adult'
ELSE 'Minor'
END AS age_group
FROM Students;
-
Key Point: Works like if-else in SQL.
24. EXISTS
-
Definition: Checks whether a subquery returns any row.
-
Example
SELECT name FROM Students s
WHERE EXISTS (
SELECT 1 FROM Marks m WHERE m.student_id = s.id
);
-
Key Point: Faster than IN
in many cases for large datasets.
25. NOT IN vs NOT EXISTS
26. COALESCE and ISNULL
-
Definition: Replace NULL
with a default value.
-
Example
SELECT name, COALESCE(email, 'Not Provided') FROM Students;
-
Key Point: COALESCE
returns the first non-null value from a list.
27. Window Functions
-
Definition: Performs calculation across a set of rows related to the current row.
-
Common ones: ROW_NUMBER()
, RANK()
, DENSE_RANK()
, NTILE()
-
Example
SELECT name, age,
RANK() OVER (ORDER BY age DESC) AS age_rank
FROM Students;
-
Key Point: Unlike aggregate functions, window functions do not collapse rows.
28. Common Table Expressions (CTE)
-
Definition: A temporary named result set used in a query.
-
Example
WITH Teenagers AS (
SELECT * FROM Students WHERE age BETWEEN 13 AND 19
)
SELECT * FROM Teenagers;
-
Key Point: Makes complex queries cleaner and readable.
29. Stored Procedures
30. Functions (User-Defined Functions)
-
Definition: Return a value based on input parameters.
-
Example
CREATE FUNCTION GetFullName (@first VARCHAR(50), @last VARCHAR(50))
RETURNS VARCHAR(100)
AS
BEGIN
RETURN (@first + ' ' + @last);
END;
31. Transactions
-
Definition: A set of SQL operations that execute together or not at all.
-
Example
BEGIN TRANSACTION;
UPDATE Accounts SET balance = balance - 100 WHERE id = 1;
UPDATE Accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
-
Key Point: Use ROLLBACK
to undo changes if something fails.
32. ACID Properties
33. Normalization
- Definition: Organizing data to reduce redundancy.
- Common Forms: 1NF, 2NF, 3NF
- Key Point: Normalize to avoid data anomalies. Denormalize only when performance requires it.
34. Foreign Key
-
Definition: A column that links to another table’s primary key.
-
Example
CREATE TABLE Marks (
id INT PRIMARY KEY,
student_id INT,
FOREIGN KEY (student_id) REFERENCES Students(id)
);
35. Triggers
-
Definition: SQL code that runs automatically on data change (INSERT, UPDATE, DELETE).
-
Example
CREATE TRIGGER LogDelete
AFTER DELETE ON Students
FOR EACH ROW
BEGIN
INSERT INTO DeletedRecords (name) VALUES (OLD.name);
END;
36. SET Operators (UNION ALL, INTERSECT, EXCEPT)
-
UNION ALL: Includes duplicates.
-
INTERSECT: Returns common rows between two queries.
-
EXCEPT: Returns rows in first query but not in second.
-
Example
SELECT name FROM Students
INTERSECT
SELECT name FROM Teachers;
37. Backup and Restore
-
Backup Example (SQL Server)
BACKUP DATABASE School TO DISK = 'D:\backup\school.bak';
-
Restore Example
RESTORE DATABASE School FROM DISK = 'D:\backup\school.bak';
38. TEMPORARY Tables
-
Definition: Temporary tables exist only during the session or transaction.
-
Example (MySQL)
CREATE TEMPORARY TABLE TempStudents (
id INT,
name VARCHAR(50)
);
-
Key Point: Good for storing intermediate results. Automatically dropped at session end.
39. TABLE Variables (SQL Server)
-
Definition: A variable to temporarily hold table data.
-
Example
DECLARE @Temp TABLE (id INT, name VARCHAR(50));
INSERT INTO @Temp VALUES (1, 'John');
40. MERGE Statement (UPSERT)
-
Definition: Performs INSERT, UPDATE, or DELETE in one statement based on a match.
-
Example
MERGE INTO Students AS target
USING (SELECT 1 AS id, 'John' AS name) AS source
ON target.id = source.id
WHEN MATCHED THEN
UPDATE SET name = source.name
WHEN NOT MATCHED THEN
INSERT (id, name) VALUES (source.id, source.name);
-
Key Point: Use cautiously. Complex logic can lead to bugs if not tested well.
41. Recursive CTE
-
Definition: A CTE that refers to itself. Useful for hierarchical data (e.g., org charts, folder trees).
-
Example
WITH OrgChart AS (
SELECT id, manager_id, name FROM Employees WHERE manager_id IS NULL
UNION ALL
SELECT e.id, e.manager_id, e.name
FROM Employees e
JOIN OrgChart o ON e.manager_id = o.id
)
SELECT * FROM OrgChart;
42. JSON Data Handling
-
Definition: Querying and storing JSON in SQL columns (supported in PostgreSQL, MySQL, SQL Server).
-
Example (PostgreSQL)
SELECT data->>'name' AS name FROM users WHERE data->>'age' = '25';
-
Key Point: Useful when data structure is flexible or semi-structured.
43. PIVOT and UNPIVOT
-
Definition
-
Example (SQL Server):
SELECT * FROM
(SELECT subject, score FROM Marks) AS SourceTable
PIVOT (
MAX(score) FOR subject IN ([Math], [Science])
) AS PivotTable;
-
Key Point: Makes reporting easier. Avoid overuse in core logic.
44. ROLLUP and CUBE
-
Definition: Extensions to GROUP BY
for creating subtotals and grand totals.
-
ROLLUP
SELECT department, role, COUNT(*)
FROM Employees
GROUP BY ROLLUP (department, role);
-
CUBE
GROUP BY CUBE (department, role);
-
Key Point: Saves time when generating hierarchical reports.
45. WITH TIES
-
Definition: Returns additional rows that match the last value in an ORDER BY ... TOP
query.
-
Example:
SELECT TOP 3 WITH TIES name, score
FROM Marks
ORDER BY score DESC;
-
Key Point: Useful when ranks are tied and you want to return all top scorers.
46. SEQUENCES
-
Definition: Auto-incrementing number generator independent of tables.
-
Example:
CREATE SEQUENCE student_seq START WITH 1 INCREMENT BY 1;
SELECT NEXT VALUE FOR student_seq;
-
Key Point: More flexible than IDENTITY
in some databases.
47. IDENTITY vs SEQUENCE
- IDENTITY: Tied to a table. Auto-increments per insert.
- SEQUENCE: Independent object. Can be reused across tables or manually advanced.
48. LOCKING & ISOLATION LEVELS
49. DEADLOCK
- Definition: Two or more sessions wait forever for resources locked by each other.
- Fix: Reduce transaction size, always lock objects in the same order, use proper isolation levels.
50. EXECUTION PLAN
- Definition: Visual or textual explanation of how SQL Server/MySQL/PostgreSQL will execute the query.
- Key Point: Use
EXPLAIN
, SHOW PLAN
, or right-click → “Display Estimated Execution Plan” in SQL Server Management Studio.
51. ANALYZE / UPDATE STATISTICS
52. PARTITIONING
- Definition: Divides large tables into smaller, more manageable parts (partitions).
- Key Point: Boosts performance on very large tables. Query optimizer uses partition elimination.
53. Sharding
- Definition: Horizontal partitioning across databases or servers.
- Key Point: Needed for very high scale. Not supported by default in many RDBMS — requires custom implementation or external tools.
54. Temporal Tables (System-Versioned Tables)
- Definition: Track historical changes automatically.
- Example (SQL Server 2016+):
CREATE TABLE StudentsHistory (
id INT,
name VARCHAR(50),
VALID_FROM DATETIME2 GENERATED ALWAYS AS ROW START,
VALID_TO DATETIME2 GENERATED ALWAYS AS ROW END,
PERIOD FOR SYSTEM_TIME (VALID_FROM, VALID_TO)
) WITH (SYSTEM_VERSIONING = ON);