SQL Queries 1
Objetives

Databases

Entity-Relationships


SQL
(Structure Query Language)
Generate, Manipulate, Retrieve

Retrieve

-- Basic structure
SELECT fields FROM table_name-- SELECT fields FROM table_name
SELECT * FROM weeks; -- All weeks
SELECT id FROM weeks; -- All weeks only show id's
SELECT id, name FROM weeks; -- All weeks & show id, name columns

Retrieve with Condition

-- Structure
SELECT fields FROM table_name WHERE conditionSQL Condition Operators


-- SELECT fields
-- FROM table_name
-- WHERE condition
-- Just retrieve the week with id=1
SELECT * FROM weeks WHERE id = 1;
EQUALS "="

-- SELECT fields
-- FROM table_name
-- WHERE condition
-- Just retrieve all weeks without the week id=1
SELECT * FROM weeks WHERE id != 1;
NOT EQUALS "!="

-- SELECT fields
-- FROM table_name
-- WHERE condition
-- Just retrieve the week with name "week 1"
SELECT * FROM weeks WHERE name LIKE 'week 1';
LIKE

-- SELECT fields
-- FROM table_name
-- WHERE condition
-- Just retrieve all weeks without the week name 'week 1'
SELECT * FROM weeks WHERE name NOT LIKE 'week 1';
NOT LIKE

-- Retrieve all weeks that contain "ek" in the middle for the name
SELECT * FROM weeks WHERE name LIKE '%ek%';
-- Retrieve every week name regardless of the first letter
SELECT * FROM weeks WHERE name LIKE '_eek 1';
LIKE with "%" and "_"

SELECT *
FROM weeks
WHERE name IN ('week 1', 'week 2');
IN

SELECT *
FROM weeks
WHERE name NOT IN ('week 1', 'week 2');
NOT IN
Retrieve with Condition & Order

-- Structure
SELECT fields
FROM table_name
WHERE condition
ORDER BY field ASC|DESC
SELECT * FROM weeks ORDER BY created_at ASC;
SELECT * FROM weeks ORDER BY created_at DESC;
SELECT * FROM weeks
WHERE name IN ('week 1', 'week 2')
ORDER BY created_at DESC;
ORDER BY
Filter Data

DISTINCT

-- Structure
SELECT DISTINCT field
FROM table_name
SELECT DISTINCT created_at FROM weeks;
SELECT COUNT(DISTINCT created_at) FROM weeks;
DISTINCT
LIMIT

-- Structure
SELECT field
FROM table_name
LIMIT number OFFSET start_after
SELECT * FROM weeks LIMIT 2;
-- week 1
-- week 2
SELECT * FROM weeks LIMIT 2 OFFSET 1;
-- week 2
-- week 3
LIMIT
CASE
Create custom outputs with this clause

-- Structure
SELECT field CASE
WHEN field comparison THEN result
ELSE default
END AS case_alias
FROM table
SELECT name, created_at,
CASE
WHEN created_at > '2021-03-01' THEN 'Not March'
WHEN created_at > '2021-02-01' THEN 'Not February'
WHEN created_at > '2021-01-01' THEN 'Not January'
ELSE 'Is January'
END AS not_month
FROM weeks;
CASE
SQL Queries 1
By Paulo Tijero
SQL Queries 1
- 42