DEV Community

Cover image for The Ultimate SQL SELECT Cheat Sheet
Christian Paez
Christian Paez

Posted on

The Ultimate SQL SELECT Cheat Sheet

Have you ever found yourself staring blankly at your SQL code, trying to recall the syntax for a SELECT query? Don't worry; you're not alone. SQL, with its vast array of commands and clauses, can be daunting to remember every detail. Here I will share a useful cheat sheet to write the most common SELECT queries.

The Power of a Cheat Sheet

Memorizing every SQL command and its syntax is not easy, that's where cheat sheets come to the rescue. Instead of flipping through documentation a cheat sheet provides quick and easy access to essential commands.

Deciphering the SELECT Query

Let's check the anatomy of a SELECT query. At its core, this query retrieves data from one or more tables in a database. Here's a breakdown of its components:

  • SELECT: This keyword specifies the columns you want to retrieve from the database. You can either select specific columns or use the wildcard (*) to fetch all columns.
  • FROM: Here, you specify the table or tables from which you want to retrieve data.
  • DISTINCT (optional): This optional keyword removes duplicate rows from the result set.
  • WHERE(optional): This optional clause filters rows based on specified conditions. It allows you to narrow down your results to only those that meet certain criteria.
  • GROUP BY(optional): When you want to group your results based on the values of one or more columns, you use this clause. It's commonly used in conjunction with aggregate functions.
  • HAVING(optional): Similar to the WHERE clause, HAVING filters grouped rows based on specified conditions. It comes into play after the GROUP BY clause.
  • ORDER BY (optional): This optional clause sorts the result set based on specified columns or expressions.

The base for a SELECT query will look like this:

-- [Mandatory] SELECT: This keyword specifies the columns you want to retrieve from the database.
SELECT 
    column1, -- Specify columns to retrieve or * to fetch all columns
    column2, 
    ...
    -- [Optional] DISTINCT: This keyword removes duplicate rows from the result set, ensuring only unique rows are returned.
    -- Tipically used immediately after the SELECT keyword.
    -- For example:
    -- SELECT DISTINCT column1, column2 FROM table_name;
-- [Mandatory] FROM: Here, you specify the table or tables from which you want to retrieve data.
FROM 
    table1, -- [Mandatory] Specify at least one table
    table2, 
    ...;

-- [Optional] WHERE: This clause filters rows based on specified conditions.
-- For example:
-- SELECT * FROM employees WHERE salary > 50000;

-- [Optional] GROUP BY: When you want to group your results based on the values of one or more columns,
-- you use this clause. It's commonly used in conjunction with aggregate functions.
-- For example:
-- SELECT department_id, COUNT(*) FROM employees GROUP BY department_id;

-- [Optional] HAVING: Similar to the WHERE clause, HAVING filters grouped rows based on specified conditions.
-- It comes into play after the GROUP BY clause.
-- For example:
-- SELECT department_id, COUNT(*) FROM employees GROUP BY department_id HAVING COUNT(*) > 3;

-- [Optional] ORDER BY: This clause sorts the result set based on specified columns or expressions.
-- It's typically used to arrange the data in ascending or descending order.
-- For example:
-- SELECT employee_name, salary FROM employees ORDER BY salary DESC;
Enter fullscreen mode Exit fullscreen mode

Some examples

This query retrieves all columns from the employees table without applying any filtering criteria.

-- Basic Example without WHERE Clause
SELECT *
FROM employees;
Enter fullscreen mode Exit fullscreen mode

This query uses the DISTINCT keyword to retrieve unique values of the department_id column from the employees table.

-- Example with DISTINCT
-- This query retrieves distinct values of the department_id column from the employees table.
SELECT DISTINCT department_id
FROM employees;
Enter fullscreen mode Exit fullscreen mode

This query filters employee records based on the salary column, only returning those with a salary greater than $50,000.

-- Example with WHERE Clause
-- This query retrieves employee records with a salary greater than $50,000.
SELECT employee_name, salary
FROM employees
WHERE salary > 50000;

Enter fullscreen mode Exit fullscreen mode

This query groups employee records by department and calculates the count of employees in each department.

-- Example with GROUP BY Clause
-- This query counts the number of employees in each department.
SELECT department_id, COUNT(*) AS employee_count
FROM employees
GROUP BY department_id;

Enter fullscreen mode Exit fullscreen mode

This query first groups employee records by department and then filters the grouped results to only include departments with more than three employees.

-- Example with HAVING Clause
-- This query finds departments with more than three employees.
SELECT department_id, COUNT(*) AS employee_count
FROM employees
GROUP BY department_id
HAVING COUNT(*) > 3;

Enter fullscreen mode Exit fullscreen mode

This example retrieves employee records and sorts them by salary in descending order using the ORDER BY clause.

-- Example with ORDER BY Clause
-- This query retrieves employee records sorted by salary in descending order.
SELECT employee_name, salary
FROM employees
ORDER BY salary DESC;

Enter fullscreen mode Exit fullscreen mode

Happy querying!

Top comments (0)