SQL Cheat Sheet
Operation | Syntax | Example |
---|---|---|
CREATE TABLE | CREATE TABLE table_name (column_name data_type, ...); |
CREATE TABLE employees (id INT, name VARCHAR(100)); |
CREATE TABLE with PRIMARY KEY CONSTRAINT | CREATE TABLE table_name (column_name data_type PRIMARY KEY, ...); |
CREATE TABLE employees (id INT PRIMARY KEY, name VARCHAR(100)); |
DELETE PRIMARY KEY | ALTER TABLE table_name DROP CONSTRAINT constraint_name; |
ALTER TABLE employees DROP CONSTRAINT pk_employee_id; |
CREATE TABLE with COMPOSITE KEY | CREATE TABLE table_name (col1 data_type, col2 data_type, PRIMARY KEY (col1, col2)); |
CREATE TABLE orders (order_id INT, product_id INT, PRIMARY KEY (order_id, product_id)); |
CREATE TABLE with Foreign Key | CREATE TABLE table_name (col1 data_type, col2 data_type, FOREIGN KEY (col2) REFERENCES other_table(column)); |
CREATE TABLE orders (id INT, customer_id INT, FOREIGN KEY (customer_id) REFERENCES customers(id)); |
CREATE TEMPORARY TABLE | CREATE TEMPORARY TABLE table_name (column_name data_type, ...); |
CREATE TEMPORARY TABLE temp_employees (id INT, name VARCHAR(100)); |
CREATE TABLE with NOT NULL CONSTRAINT | CREATE TABLE table_name (column_name data_type NOT NULL, ...); |
CREATE TABLE employees (id INT NOT NULL, name VARCHAR(100)); |
CREATE TABLE with CHECK CONSTRAINT | CREATE TABLE table_name (column_name data_type, CONSTRAINT constraint_name CHECK (condition)); |
CREATE TABLE employees (id INT, salary INT, CONSTRAINT chk_salary CHECK (salary > 0)); |
CREATE TABLE with DEFAULT CONSTRAINT | CREATE TABLE table_name (column_name data_type DEFAULT default_value, ...); |
CREATE TABLE employees (id INT, status VARCHAR(20) DEFAULT 'Active'); |
CREATE TABLE with UNIQUE CONSTRAINT | CREATE TABLE table_name (column_name data_type UNIQUE, ...); |
CREATE TABLE employees (email VARCHAR(100) UNIQUE, name VARCHAR(100)); |
DESCRIBE [table_name] | DESCRIBE table_name; |
DESCRIBE employees; |
DROP TABLE | DROP TABLE table_name; |
DROP TABLE employees; |
TRUNCATE TABLE | TRUNCATE TABLE table_name; |
TRUNCATE TABLE employees; |
INSERT INTO | INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...); |
INSERT INTO employees (id, name) VALUES (1, 'John'); |
INSERT with AUTO_INCREMENT | INSERT INTO table_name (column2, ...) VALUES (value2, ...); |
INSERT INTO employees (name) VALUES ('John'); |
SELECT | SELECT column1, column2 FROM table_name [WHERE condition]; |
SELECT id, name FROM employees WHERE id = 1; |
LIKE | SELECT column1 FROM table_name WHERE column2 LIKE 'pattern'; |
SELECT name FROM employees WHERE name LIKE 'J%'; |
LIMIT | SELECT column1 FROM table_name [WHERE condition] LIMIT number; |
SELECT name FROM employees LIMIT 5; |
DISTINCT | SELECT DISTINCT column_name FROM table_name; |
SELECT DISTINCT department_id FROM employees; |
AS | SELECT column_name AS alias_name FROM table_name; |
SELECT name AS employee_name FROM employees; |
Operators | Examples include: = , != , < , > , <= , >= , AND , OR , BETWEEN , IN , NOT , IS NULL , LIKE . |
SELECT name FROM employees WHERE salary > 5000 AND department_id = 10; |
ORDER BY Clause | SELECT * FROM table_name ORDER BY column_name [ASC|DESC]; |
SELECT * FROM student ORDER BY fname; SELECT * FROM student ORDER BY fname DESC; SELECT * FROM student ORDER BY fname DESC, lname ASC; |
WHERE Clause | SELECT * FROM table_name WHERE condition; |
SELECT * FROM student WHERE city="Helsinki"; SELECT * FROM student WHERE city="Helsinki" AND gender='M'; SELECT * FROM student WHERE city IN ('Helsinki','Kerava','Espoo'); |
BETWEEN Clause | SELECT * FROM table_name WHERE column_name BETWEEN value1 AND value2; |
SELECT * FROM teachers WHERE salary BETWEEN 3000 AND 4000; SELECT * FROM teachers WHERE salary BETWEEN 3000 AND 4000 ORDER BY salary; |
LIKE Clause | SELECT * FROM table_name WHERE column_name LIKE pattern; |
SELECT * FROM student WHERE fname LIKE 'L%'; SELECT * FROM student WHERE lname LIKE '%ka'; SELECT * FROM student WHERE lname LIKE 'l_i%'; |
LIMIT Clause | SELECT * FROM table_name ORDER BY column_name LIMIT offset, count; |
SELECT * FROM student ORDER BY lname LIMIT 3; SELECT * FROM student ORDER BY lname LIMIT 2, 3; |
DISTINCT | SELECT DISTINCT column_name FROM table_name; |
SELECT DISTINCT city FROM student; SELECT COUNT(DISTINCT city) FROM student; |
Operators | Arithmetic: SELECT 5+5; Comparison: SELECT * FROM grades WHERE grade > 3; |
Logical: SELECT * FROM student WHERE city="Helsinki" AND gender='M'; |
INSERT INTO | INSERT INTO table_name (columns) VALUES (values); |
INSERT INTO grades (name, course_name, grade) VALUES ('John', 'Math', 5); |
INSERT with AUTO_INCREMENT | INSERT INTO table_name (columns) VALUES (values); |
INSERT INTO students (name) VALUES ('John'); |
Temporary Tables | CREATE TEMPORARY TABLE table_name AS SELECT * FROM existing_table WHERE condition; |
CREATE TEMPORARY TABLE pekka_grades SELECT * FROM grades WHERE name='Pekka'; |
Aggregations | Examples: SELECT name, AVG(grade) AS 'Average Grade' FROM grades GROUP BY name; |
SELECT course_name, AVG(grade) FROM grades GROUP BY course_name; |
Find Failures or High Scores | Examples: SELECT * FROM grades WHERE grade=0; |
SELECT * FROM grades WHERE grade>3; |
Check for NULL Values | SELECT * FROM table_name WHERE column_name IS NULL; |
SELECT * FROM course WHERE teacherId IS NULL; |
ALTER TABLE | ALTER TABLE table_name action; |
Examples: - Rename table: ALTER TABLE mytable RENAME TO table1; - Change column type: ALTER TABLE table1 MODIFY id TINYINT NOT NULL; - Rename column: ALTER TABLE table1 CHANGE name fullname VARCHAR(25); - Add column: ALTER TABLE table1 ADD createdon TIMESTAMP; - Add multiple columns after a specific column: ALTER TABLE table1 ADD emailid VARCHAR(50) AFTER fullname, ADD city VARCHAR(50) AFTER emailid; - Drop column: ALTER TABLE table1 DROP COLUMN createdon; - Add primary key: ALTER TABLE table1 ADD PRIMARY KEY (id); - Drop primary key: ALTER TABLE table1 DROP PRIMARY KEY; |
UPDATE | UPDATE table_name SET column_name=value [WHERE condition]; |
Examples: - Update all rows: UPDATE author SET country='Finland'; - Update with condition: UPDATE author SET country='Finland' WHERE aut_id='AUT002'; - Update with LIMIT: UPDATE author SET country='Finland' WHERE country='UK' LIMIT 4; - Increase price by 10%: UPDATE products SET buyPrice = buyPrice + (0.1*buyPrice) WHERE productLine='Motorcycles'; - Add a new column and update: ALTER TABLE products ADD COLUMN oldbuyPrice DECIMAL(10,2) AFTER buyPrice; UPDATE products SET oldbuyPrice = buyPrice - (0.2*buyPrice) WHERE productLine='Motorcycles'; |
DELETE | DELETE FROM table_name WHERE condition; |
Examples: - Delete specific row: DELETE FROM table1 WHERE id=1; - Delete rows matching condition: DELETE FROM employees WHERE department_id=5; |
INDEX | CREATE INDEX index_name ON table_name (column_name); CREATE UNIQUE INDEX index_name ON table_name (column_name); |
Examples: - Create a simple index: CREATE INDEX ind_fn ON table3 (fullname); - Create a composite index: CREATE INDEX in1 ON table3 (fullname, address); - Show indexes: SHOW INDEXES FROM table3; - Drop index: DROP INDEX ind_fn ON table3; |
CREATE VIEW | CREATE VIEW view_name AS SELECT col1, col2, ... FROM table_name WHERE condition; |
Examples: - Create a view: CREATE VIEW view1 AS SELECT studentId, fname, lname, city FROM student WHERE city='Helsinki'; - Retrieve records from a view: SELECT * FROM view1; - Update a view: CREATE OR REPLACE VIEW view1 AS SELECT studentId, fname, lname, city, birthDate, gender FROM student WHERE city='Helsinki'; - Drop a view: DROP VIEW view1; |
Inner Join | SELECT column_list FROM table_1 INNER JOIN table_2 ON join_condition; |
Example:SELECT m.member_id, m.name AS members, c.committee_id, c.name AS committee_name FROM members m INNER JOIN committees c ON c.name = m.name; |
Left Join | SELECT column_list FROM table_1 LEFT JOIN table_2 ON join_condition; |
Examples: - Join members and committees: SELECT m.member_id, m.name AS members, c.committee_id, c.name AS committee FROM members m LEFT JOIN committees c USING(name); - Find members not in committees: SELECT m.member_id, m.name AS members, c.committee_id, c.name AS committee FROM members m LEFT JOIN committees c USING(name) WHERE c.committee_id IS NULL; |
Right Join | SELECT column_list FROM table_1 RIGHT JOIN table_2 ON join_condition; |
Example:SELECT m.member_id, m.name AS members, c.committee_id, c.name AS committee FROM members m RIGHT JOIN committees c ON c.name = m.name; |
Cross Join | SELECT select_list FROM table_1 CROSS JOIN table_2; |
Example:SELECT m.member_id, m.name AS members, c.committee_id, c.name AS committee FROM members m CROSS JOIN committees c; |
Comparison Functions | Various comparisons such as BETWEEN , NOT BETWEEN , LIKE , NOT LIKE . |
- SELECT * FROM employees WHERE salary BETWEEN 3000 AND 4000; - SELECT * FROM employees WHERE salary NOT BETWEEN 3000 AND 4000; - SELECT * FROM employees WHERE name LIKE 'J%'; |
Control Flow Functions | CASE , IF() , IFNULL() , NULLIF() |
- SELECT CASE WHEN salary > 5000 THEN 'High' ELSE 'Low' END AS salary_status FROM employees; - SELECT IF(salary > 5000, 'High', 'Low') AS salary_status FROM employees; - SELECT IFNULL(bonus, 0) FROM employees; |
String Functions | ASCII() , BIN() , LOWER() |
- SELECT ASCII('A'); - SELECT BIN(12); - SELECT LOWER('HELLO'); |
Mathematical Functions | DIV , MOD |
- SELECT 12 DIV 5; - SELECT 12 MOD 5; |
Date and Time Functions | Various date manipulation functions | - Add 10 days: SELECT ADDDATE('2019-11-25', INTERVAL 10 DAY) AS required_date; - Add 2 years: SELECT ADDDATE('2019-11-15', INTERVAL 2 YEAR) AS required_date; - Current date and time: SELECT CURRENT_TIMESTAMP(); - Current date: SELECT CURDATE(); |
Aggregate Functions | COUNT() , MAX() , MIN() , AVG() |
- Count rows: SELECT COUNT(customerNumber) FROM customers; - Max salary: SELECT MAX(SALARY) FROM employees; - Min salary: SELECT MIN(SALARY) FROM employees; - Average salary: SELECT AVG(SALARY) FROM employees; |
Length and Case Functions | LENGTH() , LOWER() |
- Length of string: SELECT LENGTH('hello world'); - Convert to lowercase: SELECT LOWER('HELLO WORLD'); |
Encryption Functions | SHA1() , SHA2() |
- SELECT SHA1('abc'); - SELECT SHA2('ABC', 224); |