MySQL Cheat Sheet
www.databasestar.com
SELECT Query Modifying Data Create Table
SELECT col1, col2
FROM table Insert INSERT INTO tablename Create Table CREATE TABLE tablename (
JOIN table2 ON table1.col = table2.col (col1, col2...) column_name data_type
WHERE condition VALUES (val1, val2); );
GROUP BY column_name Insert from a
HAVING condition INSERT INTO tablename
Table
ORDER BY col1 ASC|DESC; (col1, col2...) Create Table with Constraints
SELECT col1, col2...
CREATE TABLE tablename (
SELECT Keywords Insert Multiple
Rows
INSERT INTO tablename (col1,
col2…) column_name data_type NOT NULL,
VALUES CONSTRAINT pkname PRIMARY KEY (col),
DISTINCT: Removes SELECT DISTINCT product_name (valA1, valB1), CONSTRAINT fkname FOREIGN KEY (col)
duplicate results FROM product; (valA2, valB2), REFERENCES other_table(col_in_other_table),
(valA3, valB3); CONSTRAINT ucname UNIQUE (col),
CONSTRAINT ckname CHECK (conditions)
BETWEEN: Matches a SELECT product_name
Update UPDATE tablename );
value between two FROM product
other values (inclusive) WHERE price BETWEEN 50 AND 100; SET col1 = val1
WHERE condition;
Create Temporary CREATE TEMPORARY TABLE
SELECT product_name Table tablename (
IN: Matches to any of
FROM product Update with UPDATE t colname datatype
the values in a list
WHERE category IN a Join SET col1 = val1 );
('Electronics', 'Furniture'); FROM tablename t
INNER JOIN table x Drop Table DROP TABLE tablename;
LIKE: Performs SELECT product_name ON t.id = x.tid
wildcard matches using FROM product WHERE condition;
_ or % WHERE product_name
Delete DELETE FROM tablename
Alter Table
LIKE '%Desk%';
WHERE condition;
Add Column ALTER TABLE tablename
ADD columnname datatype;
Joins Indexes
Drop Column ALTER TABLE tablename
Create Index CREATE INDEX indexname DROP COLUMN columnname;
SELECT t1.*, t2.*
ON tablename (cols);
FROM t1
join_type t2 ON t1.col = t2.col; Modify Column ALTER TABLE tablename CHANGE
Drop Index DROP INDEX indexname; columnname newcolumnname newdatatype;
Table 1 Table 2
A A
Set Operators Rename Column ALTER TABLE tablename CHANGE
COLUMN currentname TO newname;
B B
C D UNION: Shows unique ALTER TABLE tablename ADD
Add Constraint
rows from two result sets. CONSTRAINT constraintname
INNER JOIN: show all matching A
constrainttype (columns);
A
records in both tables. UNION ALL: Shows all
B B rows from two result sets.
Drop Constraint ALTER TABLE tablename DROP
constraint_type constraintname;
LEFT JOIN: show all records from left A A
INTERSECT: Shows rows that
table, and any matching records from ALTER TABLE tablename
B B exist in both result sets. Rename Table
right table. RENAME TO newtablename;
C
MINUS is not recognised in MySQL
RIGHT JOIN: show all records from
Window/Analytic Functions
A A
right table, and any matching records
B B
from left table.
D function_name ( arguments ) OVER (
Aggregate Functions [query_partition_clause]
[ORDER BY order_by_clause
FULL JOIN: show all records from A
A [windowing_clause] ] )
both tables, whether there is a match
SUM: Finds a total of the numbers provided
or not. B B
COUNT: Finds the number of records Example using RANK, showing the student details and their rank
C AVG: Finds the average of the numbers provided according to the fees_paid, grouped by gender:
MIN: Finds the lowest of the numbers provided
D SELECT
MAX: Finds the highest of the numbers provided
student_id, first_name, last_name, gender, fees_paid,
CASE Statement
RANK() OVER (
PARTITION BY gender ORDER BY fees_paid
Common Functions ) AS rank_val
Simple Case CASE name FROM student;
WHEN 'John' THEN 'Name John' LENGTH(string): Returns the length of the provided string
WHEN 'Steve' THEN 'Name Steve' INSTR(string, substring): Returns the position of the substring
ELSE 'Unknown' within the specified string.
END CAST(expression AS datatype): Converts an expression into the Subqueries
specified data type.
ADDDATE(input_date, days): Adds a number of days to a Single Row SELECT id, last_name, salary
Searched Case CASE FROM employee
specified date.
WHEN name='John' THEN 'Name John' WHERE salary = (
NOW: Returns the current date, including time.
WHEN name='Steve' THEN 'Name Steve' SELECT MAX(salary)
CEILING(input_val): Returns the smallest integer greater than
ELSE 'Unknown' FROM employee
the provided number.
END );
FLOOR(input_val): Returns the largest integer less than the
provided number.
Common Table Expression ROUND(input_val, [round_to]): Rounds a number to a specified
number of decimal places.
Multi Row SELECT id, last_name, salary
FROM employee
TRUNCATE(input_value, num_decimals): Truncates a number to WHERE salary IN (
WITH queryname AS ( SELECT salary
a number of decimals.
SELECT col1, col2 FROM employee
REPLACE(whole_string, string_to_replace, replacement_string):
FROM firsttable) WHERE last_name LIKE 'C%'
Replaces one string inside the whole string with another string.
SELECT col1, col2.. );
SUBSTRING(string, start_position): Returns part of a value,
FROM queryname...;
based on a position and length.