Quick SQL Cheatsheet
A quick reminder of all relevant SQL queries and examples on how to use them.
Table of Contents
1. Finding Data Queries
SELECT: used to select data from a database
SELECT*FROMtable_name;
DISTINCT: filters away duplicate values and returns rows of specified column
SELECT DISTINCTcolumn_name;
WHERE: used to filter records/rows
SELECTcolumn1, column2FROMtable_nameWHEREcondition;SELECT*FROMtable_nameWHEREcondition1ANDcondition2;SELECT*FROMtable_nameWHEREcondition1ORcondition2;SELECT*FROMtable_nameWHERE NOTcondition;SELECT*FROMtable_nameWHEREcondition1AND(condition2ORcondition3);
ORDER BY: used to sort the result-set in ascending or descending order
SELECT*FROMtable_nameORDER BYcolumn;SELECT*FROMtable_nameORDER BYcolumnDESC;SELECT*FROMtable_nameORDER BYcolumn1ASC, column2DESC;
SELECT TOP: used to specify the number of records to return from top of table
SELECT TOPnumber columns_namesFROMtable_nameWHEREcondition;SELECT TOPpercent columns_namesFROMtable_nameWHEREcondition;- Not all database systems support
SELECT TOP. The MySQL equivalent is theLIMITclause SELECTcolumn_namesFROMtable_nameLIMIToffset, count;
LIKE: operator used in a WHERE clause to search for a specific pattern in a column
- % (percent sign) is a wildcard character that represents zero, one, or multiple characters
- _ (underscore) is a wildcard character that represents a single character
SELECTcolumn_namesFROMtable_nameWHEREcolumn_nameLIKEpattern;LIKE‘a%’ (find any values that starts with “a”)LIKE‘%a’ (find any values that ends with “a”)LIKE‘%or%’ (find any values that have “or” in any position)LIKE‘_r%’ (find any values that have “r” in the second position)LIKE‘a_%_%’ (find any values that start with “a” and are at least 3 characters in length)LIKE‘[a-c]%’ (find any values starting with “a”, “b”, or “c”
IN: operator that allows you to specify multiple values in a WHERE clause
- essentially the IN operator is shorthand for multiple OR conditions
SELECTcolumn_namesFROMtable_nameWHEREcolumn_nameIN(value1, value2, …);SELECTcolumn_namesFROMtable_nameWHEREcolumn_nameIN(SELECT STATEMENT);
BETWEEN: operator selects values within a given range inclusive
SELECTcolumn_namesFROMtable_nameWHEREcolumn_nameBETWEENvalue1ANDvalue2;SELECT*FROMProductsWHERE(column_nameBETWEENvalue1ANDvalue2)AND NOTcolumn_name2IN(value3, value4);SELECT*FROMProductsWHEREcolumn_nameBETWEEN#01/07/1999# AND #03/12/1999#;
NULL: values in a field with no value
SELECT*FROMtable_nameWHEREcolumn_nameIS NULL;SELECT*FROMtable_nameWHEREcolumn_nameIS NOT NULL;
AS: aliases are used to assign a temporary name to a table or column
SELECTcolumn_nameASalias_nameFROMtable_name;SELECTcolumn_nameFROMtable_nameASalias_name;SELECTcolumn_nameASalias_name1, column_name2ASalias_name2;SELECTcolumn_name1, column_name2 + ‘, ‘ + column_name3ASalias_name;
UNION: operator used to combine the result-set of two or more SELECT statements
- Each SELECT statement within UNION must have the same number of columns
- The columns must have similar data types
- The columns in each SELECT statement must also be in the same order
SELECTcolumns_namesFROMtable1UNION SELECTcolumn_nameFROMtable2;UNIONoperator only selects distinct values,UNION ALLwill allow duplicates
GROUP BY: statement often used with aggregate functions (COUNT, MAX, MIN, SUM, AVG) to group the result-set by one or more columns
SELECTcolumn_name1, COUNT(column_name2)FROMtable_nameWHEREconditionGROUP BYcolumn_name1ORDER BYCOUNT(column_name2) DESC;
HAVING: this clause was added to SQL because the WHERE keyword could not be used with aggregated functions
SELECTCOUNT(column_name1), column_name2FROMtableGROUP BYcolumn_name2HAVINGCOUNT(column_name1)> 5;
2. Data Modification Queries
INSERT INTO: used to insert new records/rows in a table
INSERT INTOtable_name (column1, column2)VALUES(value1, value2);INSERT INTOtable_nameVALUES(value1, value2 …);
UPDATE: used to modify the existing records in a table
UPDATEtable_nameSETcolumn1 = value1, column2 = value2WHEREcondition;UPDATEtable_nameSETcolumn_name = value;
DELETE: used to delete existing records/rows in a table
DELETE FROMtable_nameWHEREcondition;DELETE*FROMtable_name;
3. Reporting Queries
COUNT: returns the # of occurrences
SELECT COUNT (DISTINCTcolumn_name);
MIN() and MAX(): returns the smallest/largest value of the selected column
SELECT MIN (column_names) FROMtable_nameWHEREcondition;SELECT MAX (column_names) FROMtable_nameWHEREcondition;
AVG(): returns the average value of a numeric column
SELECT AVG (column_name) FROMtable_nameWHEREcondition;
SUM(): returns the total sum of a numeric column
SELECT SUM (column_name) FROMtable_nameWHEREcondition;
4. Join Queries
INNER JOIN: returns records that have matching value in both tables
SELECTcolumn_namesFROMtable1INNER JOINtable2ONtable1.column_name=table2.column_name;SELECTtable1.column_name1, table2.column_name2, table3.column_name3FROM((table1INNER JOINtable2ONrelationship)INNER JOINtable3ONrelationship);
LEFT (OUTER) JOIN: returns all records from the left table (table1), and the matched records from the right table (table2)
SELECTcolumn_namesFROMtable1LEFT JOINtable2ONtable1.column_name=table2.column_name;
RIGHT (OUTER) JOIN: returns all records from the right table (table2), and the matched records from the left table (table1)
SELECTcolumn_namesFROMtable1RIGHT JOINtable2ONtable1.column_name=table2.column_name;
FULL (OUTER) JOIN: returns all records when there is a match in either left or right table
SELECTcolumn_namesFROMtable1FULL OUTER JOINtable2ONtable1.column_name=table2.column_name;
Self JOIN: a regular join, but the table is joined with itself
SELECTcolumn_namesFROMtable1 T1, table1 T2WHEREcondition;