Basic SQL Cheat Sheet

Basic SQL Cheat Sheet Interview ready Quick Revision

SQL or Structured Query Language is a basic query language that every programmer should have in their skillset. SQL stores, retrieves, and manipulates data within relational databases. This ‘Basic SQL Cheat Sheet for Interview ready’ article will provide you with a quick walkthrough to face interviews or to get started.

Using SQL, we can interact with a database by writing queries.

sql cheat sheet

A table is created in a database using CREATE TABLE.

 CREATE TABLE Customers(
  	--columnName datatype
  	firstName varchar(255),
  	lastName varchar(255),
  	City varchar(50),
  	Country varchar(10), -- variable sized string data
  	CONSTRAINT Ucp UNIQUE (CustomerID) -- prevents two identical values

INSERT INTO is used to insert new records in a table in two ways.

INSERT INTO Customers VALUES (14, 'Akash', 'Obroi', 'Mumbai', 'India');
INSERT INTO Customers (CustomerID, firstName, lastName)
VALUES (10, 'Tom', 'Erichsen'); -- City and Country is NULL at this moment

To select everything from the ‘products’ table:

 SELECT * FROM products;

Selecting only the ‘product_id’ and ‘price’ of each product from the products table:

 SELECT product_id, price FROM products;

Aliases are used to provide a column with a temporary title. It’s also used for complex queries.

 SELECT firstName AS 'Name' FROM Customers;

WHERE Clause is used for filtering based on the applied conditions.

SELECT product_id, item, price FROM products WHERE price >= 500;
SELECT * FROM Customers WHERE Country = 'Germany';
SELECT * FROM Customers WHERE CustomerID <> '11'; -- CustomerID is not 11
SELECT * FROM Customers WHERE City IS NULL; -- or check IS NOT NULL

DISTINCT is used to eliminate duplicate rows from the result.

 SELECT DISTINCT Country FROM Customers;

The UPDATE statement is used to modify one or more existing records in a table.

UPDATE Customers
SET firstName = 'Alfred', City= 'New York'
WHERE CustomerID = 10;

RENAME is capable of changing a table name.

 RENAME TempOrders TO Orders;

GROUP BY groups rows based on one or more columns and it is often used with aggregate functions to group the result set by one or more columns.

ORDER BY keyword is used to sort the result set. By default, sorting is done in ascending order.

SELECT * FROM Customers
ORDER BY CustomerName;
SELECT orderCount, CustomerID FROM Orders
ORDER BY orderCount DESC; -- No of orders by users in descending order
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;
SELECT orderCount, CustomerName, COUNT(price) FROM Orders
GROUP BY CustomerName
ORDER BY orderCount DESC; -- most frequent buyer, name, total spent by the user

The LIMIT clause is used to specify the number of records to return.

SELECT * FROM Customers
LIMIT 2, 5;
-- select 5 customers after offset value 2, Selecting 3rd to 7th Customer rows.
-- selects the first 10% of the records

Aggregate functions like AVG(), MIN(), MAX(), COUNT(), SUM(), etc. perform a calculation on multiple values and return a single value.

SELECT AVG(Price) FROM Products;
SELECT MAX(Price) FROM Products;
SELECT MIN(Price) FROM Products;
SELECT COUNT(*) FROM Customers WHERE Country='Germany';

The Having clause can do condition checking in place of WHERE when we’ve used Aggregated functions. Usually, it is used to apply a filter on the result of GROUP BY based on the specified condition.

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5;

LIKE is used in a WHERE clause to search for a specified pattern in a column. Wildcards are to substitute one or more characters in a string.

After the LIKE follows the matchable pattern. The query selects Customer names starting with ‘a’ and can have anything after that.

 SELECT * FROM Customers
 WHERE CustomerName LIKE 'a%';
  -- similary '%a%' means 'a' can be at any index

Select 4 letters long Customer names having the second letter ‘a’.

 SELECT * FROM Customers
 WHERE CustomerName LIKE '_a__';
-- similary '%a_ _ _' means 'a' is second fourth last letter of any word of random length.
sql SELECT * FROM Products

Read More: Linux Command Cheatsheet for Beginners (opens in a new tab)

DROP is used to delete an entire table, view, or other database objects. It also deletes the structure of a table.


TRUNCATE is used to remove all data from a table, but unlike DROP it retains the table’s structure.


DELETE is used to remove existing records in a table without affecting the rest of the rows.

 DELETE FROM Customers WHERE firstName = 'Akash';

UNION operator is used to combining the output from the result of two or more SELECT command queries into a single distinct result set. Whereas UNION ALL does not remove duplicates.

 SELECT * FROM Customers
 SELECT * FROM Customers_Old;
 -- using UNION ALL will also include duplicate rows

INTERSECT is used to return only the rows that are common (distinct rows) to the result sets of two or more SELECT statements.

SELECT * FROM Customers
SELECT * FROM Customers_Old;

EXCEPT is used to produce only the rows that are in the first result set but not in the second or more SELECT statements. In other words, it’s used to subtract the result obtained by the first SELECT query from the result set obtained by the second SELECT query.

SELECT * FROM Customers
SELECT * FROM Customers_Old; -- same as MINUS for MySQL

EXISTS returns Boolean true if a subquery returns at least one row.

SELECT * FROM Customers
WHERE EXISTS (SELECT * FROM Orders WHERE Customers.CustomerID = Orders.CustomerID);
SELECT * FROM Customers
WHERE Country IN ('USA', 'UK');
-- Selects Customers from both countries
WHERE Country NOT IN ('USA'');
-- Any customer except from USA

CAST is used to convert an expression of one data type to another.


Few of the functions that are used to return the Date, Time, etc.

SELECT YEAR(OrderDate) FROM Orders;
SELECT MONTH(OrderDate) FROM Orders;
SELECT DAY(OrderDate) FROM Orders;
WHERE OrderDate BETWEEN '2022-01-01' AND '2022-12-31';

CASE expression goes through conditions similar to if-else and returns a value when a condition is met.

 SELECT CustomerName,
    WHEN Country = 'USA' THEN 'North America'
    WHEN Country = 'UK' THEN 'Europe'
    ELSE 'Other'
END AS Region
FROM Customers;
-- Selects CustomerName and Region

ANY is used to compare a value to any value in a list or returned by a subquery whereas the ALL clause is used to compare a value to all values in a list or returned by a subquery

WHERE Quantity = ANY (SELECT Quantity FROM OrderDetails);
WHERE Quantity > ALL (SELECT Quantity FROM OrderDetails);

JOIN clause is used to combine rows from two or more tables. There are a few types of join- Cross or cartesian join, Left Join, Right Join, Inner Join, Outer Join, and Self Join.

To visualize the Joins in SQL check out this Visualizer page (opens in a new tab) which lets you understand how joins work by interacting and seeing it visually

SELECT Customers.CustomerName, Orders.OrderDate FROM Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID; -- same as JOIN
SELECT Customers.CustomerName, Orders.OrderDate FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
SELECT Customers.CustomerName, Orders.OrderDate FROM Customers
RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

ALTER TABLE is used to make changes like adding, deleting, or modifying columns in an existing table.


Dynamically adding rows in the email column, based on the customer’s first name & last name.

UPDATE Customers SET email = CONCAT(firstName + lastName + '@gmail.com');
-- Coditional based updating using concatenation operator ||
UPDATE students
SET email = firstName || lastName ||
    WHEN gender = 'M' THEN '@indgeek.com'
    WHEN gender = 'F' THEN '@gmail.com'
-- use REPLACE(firstName, ' ', '') if having spaces in firstName
-- e.g. email field of Akash Obroi is set to 'akashobroi@indgeek.com'

SUBSTRING is used to extract a specific part of a String. If the email field consists of ‘Akash@gmail.com’, we are to extract only the email provider from the field or the name from the email value.

 SELECT SUBSTRING(email, 1, INSTR(email, '@')-1) as domain FROM Customers;
-- it finds the index of @ in email and returns string from 1st index to that index [firstName + lastName]
SELECT SUBSTRING(email, INSTR(email, '@')+1, LENGTH(email)) as domain FROM Customers;
-- it finds the index of @ in email and returns string from that index to size of string [gmail.com]

Transaction in SQL Server is a sequential group of statements or queries to perform single or multiple tasks in a database. Either all modification is successful when the transaction is committed or Rollback to the previous state to retain the ACID Property of DBMS.

UPDATE Customers SET balance = balance + 100 WHERE first_name='Robert';
UPDATE Customers SET balance = balance - 100 WHERE first_name='Betty';
COMMIT; -- e.g Transaction of Betty sending 100 bucks to Robert
ROLLBACK; -- use rollback to undo a transaction

A view is a virtual table based on the result set of an SQL statement. It is used to allow users to access data, without granting the users permission to directly access the underlying tables.

SELECT CustomerName, ContactName
FROM Customers
WHERE Country = 'USA';
SELECT * FROM [USA Customers];

Summing up

I believe this SQL Cheat Sheet will be enough for revision of the SQL queries either for interviews, development, or exams.

If you’re someone starting out to learn SQL, you may opt for Oracle DevGym (opens in a new tab) which is a free course on ‘Database for Developers’.

Comment below if I’ve missed anything to add to the cheat sheet or if you find anything imprecise & even let us know what you think about the SQL cheat sheet.

IndGeek provides solutions in the software field, and is a hub for ultimate Tech Knowledge.