SQL Cheat Sheet

Data Definition Language (DDL)

CommandExample
CREATE DATABASECREATE DATABASE company;
DROP DATABASEDROP DATABASE company;
CREATE TABLECREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));
ALTER TABLEALTER TABLE users ADD email VARCHAR(100);
DROP TABLEDROP TABLE users;
TRUNCATE TABLETRUNCATE TABLE users;
CREATE INDEXCREATE INDEX idx_name ON users(name);
DROP INDEXDROP INDEX idx_name;

Data Query Language (DQL)

CommandExample
SELECT DISTINCTSELECT DISTINCT department FROM employees;
WHERESELECT * FROM users WHERE age BETWEEN 18 AND 65;
ORDER BYSELECT * FROM users ORDER BY name ASC, age DESC;
GROUP BYSELECT department, COUNT(*) FROM employees GROUP BY department;
HAVINGSELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) > 5;
LIMIT/TOPSELECT * FROM users LIMIT 10; / SELECT TOP 10 * FROM users;

Aggregate Functions

CommandExample
COUNTSELECT COUNT(*) FROM users;
SUMSELECT SUM(salary) FROM employees;
AVGSELECT AVG(age) FROM users;
MINSELECT MIN(price) FROM products;
MAXSELECT MAX(created_date) FROM orders;
GROUP_CONCATSELECT department, GROUP_CONCAT(name) FROM employees GROUP BY department;

Date Functions

CommandExample
NOW/CURRENT_TIMESTAMPSELECT NOW();
CURDATE/CURRENT_DATESELECT CURDATE();
DATESELECT DATE(created_at) FROM orders;
YEARSELECT YEAR(birth_date) FROM users;
MONTHSELECT MONTH(order_date) FROM orders;
DAYSELECT DAY(created_at) FROM posts;
DATEDIFFSELECT DATEDIFF(end_date, start_date) FROM projects;
DATE_ADDSELECT DATE_ADD(NOW(), INTERVAL 30 DAY);

Subqueries

CommandExample
INSELECT * FROM users WHERE id IN (SELECT user_id FROM orders);
EXISTSSELECT * FROM users WHERE EXISTS (SELECT 1 FROM orders WHERE user_id = users.id);
NOT EXISTSSELECT * FROM users WHERE NOT EXISTS (SELECT 1 FROM orders WHERE user_id = users.id);
ANY/SOMESELECT * FROM products WHERE price > ANY (SELECT price FROM products WHERE category = 'Electronics');
ALLSELECT * FROM products WHERE price > ALL (SELECT price FROM products WHERE category = 'Books');

Window Functions

CommandExample
ROW_NUMBERSELECT name, ROW_NUMBER() OVER (ORDER BY salary DESC) FROM employees;
RANKSELECT name, RANK() OVER (ORDER BY salary DESC) FROM employees;
DENSE_RANKSELECT name, DENSE_RANK() OVER (ORDER BY salary DESC) FROM employees;
NTILESELECT name, NTILE(4) OVER (ORDER BY salary) FROM employees;
LAGSELECT name, salary, LAG(salary) OVER (ORDER BY hire_date) FROM employees;
LEADSELECT name, salary, LEAD(salary) OVER (ORDER BY hire_date) FROM employees;

Transaction Control

CommandExample
START TRANSACTIONSTART TRANSACTION;
COMMITCOMMIT;
ROLLBACKROLLBACK;
SAVEPOINTSAVEPOINT sp1;
ROLLBACK TOROLLBACK TO sp1;

Data Manipulation Language (DML)

CommandExample
SELECTSELECT name, email FROM users WHERE age > 18;
INSERTINSERT INTO users (name, email) VALUES ('John', '[email protected]');
UPDATEUPDATE users SET email = '[email protected]' WHERE id = 1;
DELETEDELETE FROM users WHERE age < 18;
REPLACEREPLACE INTO users (id, name) VALUES (1, 'Jane');
MERGEMERGE INTO target USING source ON condition WHEN MATCHED THEN UPDATE;

Joins

CommandExample
INNER JOINSELECT * FROM users u INNER JOIN orders o ON u.id = o.user_id;
LEFT JOINSELECT * FROM users u LEFT JOIN orders o ON u.id = o.user_id;
RIGHT JOINSELECT * FROM users u RIGHT JOIN orders o ON u.id = o.user_id;
FULL OUTER JOINSELECT * FROM users u FULL OUTER JOIN orders o ON u.id = o.user_id;
CROSS JOINSELECT * FROM users CROSS JOIN products;
SELF JOINSELECT e1.name, e2.name FROM employees e1 JOIN employees e2 ON e1.manager_id = e2.id;

String Functions

CommandExample
CONCATSELECT CONCAT(first_name, ' ', last_name) FROM users;
SUBSTRINGSELECT SUBSTRING(name, 1, 3) FROM users;
LENGTHSELECT LENGTH(name) FROM users;
UPPERSELECT UPPER(name) FROM users;
LOWERSELECT LOWER(email) FROM users;
TRIMSELECT TRIM(name) FROM users;
REPLACESELECT REPLACE(email, '@old.com', '@new.com') FROM users;
LIKESELECT * FROM users WHERE name LIKE 'J%';

Conditional Expressions

CommandExample
CASESELECT name, CASE WHEN age >= 18 THEN 'Adult' ELSE 'Minor' END FROM users;
IFSELECT IF(salary > 50000, 'High', 'Low') FROM employees;
COALESCESELECT COALESCE(phone, email, 'No contact') FROM users;
NULLIFSELECT NULLIF(department, 'Unknown') FROM employees;
ISNULL/IFNULLSELECT IFNULL(middle_name, 'N/A') FROM users;

Set Operations

CommandExample
UNIONSELECT name FROM customers UNION SELECT name FROM suppliers;
UNION ALLSELECT name FROM customers UNION ALL SELECT name FROM suppliers;
INTERSECTSELECT name FROM customers INTERSECT SELECT name FROM suppliers;
EXCEPT/MINUSSELECT name FROM customers EXCEPT SELECT name FROM suppliers;

Data Control Language (DCL)

CommandExample
GRANTGRANT SELECT, INSERT ON users TO 'username'@'localhost';
REVOKEREVOKE INSERT ON users FROM 'username'@'localhost';
CREATE USERCREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
DROP USERDROP USER 'username'@'localhost';
SET PASSWORDSET PASSWORD FOR 'username'@'localhost' = PASSWORD('newpassword');

Constraints

CommandExample
PRIMARY KEYCREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));
FOREIGN KEYCREATE TABLE orders (id INT, user_id INT, FOREIGN KEY (user_id) REFERENCES users(id));
UNIQUECREATE TABLE users (id INT, email VARCHAR(100) UNIQUE);
NOT NULLCREATE TABLE users (id INT NOT NULL, name VARCHAR(50) NOT NULL);
CHECKCREATE TABLE users (id INT, age INT CHECK (age >= 0));
DEFAULTCREATE TABLE users (id INT, status VARCHAR(20) DEFAULT 'active');

Common WHERE Clauses

CommandExample
=, !=, <>SELECT * FROM users WHERE age = 25;
>, <, >=, <=SELECT * FROM products WHERE price > 100;
BETWEENSELECT * FROM users WHERE age BETWEEN 18 AND 65;
INSELECT * FROM users WHERE city IN ('New York', 'London', 'Tokyo');
LIKESELECT * FROM users WHERE name LIKE 'J%';
IS NULLSELECT * FROM users WHERE phone IS NULL;
AND, OR, NOTSELECT * FROM users WHERE age > 18 AND city = 'New York';