Objetives
(Structure Query Language)
Generate, Manipulate, 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-- Structure
SELECT fields FROM table_name WHERE condition-- SELECT fields
-- FROM table_name
-- WHERE condition
-- Just retrieve the week with id=1
SELECT * FROM weeks WHERE id = 1;-- SELECT fields
-- FROM table_name
-- WHERE condition
-- Just retrieve all weeks without the week id=1
SELECT * FROM weeks WHERE id != 1;-- SELECT fields
-- FROM table_name
-- WHERE condition
-- Just retrieve the week with name "week 1"
SELECT * FROM weeks WHERE name LIKE 'week 1';-- 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';-- 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';SELECT *
FROM weeks
WHERE name IN ('week 1', 'week 2');SELECT *
FROM weeks
WHERE name NOT IN ('week 1', 'week 2');-- Structure
SELECT fields
FROM table_name
WHERE condition
ORDER BY field ASC|DESCSELECT * 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;-- Structure
SELECT DISTINCT field
FROM table_nameSELECT DISTINCT created_at FROM weeks;
SELECT COUNT(DISTINCT created_at) FROM weeks;-- Structure
SELECT field
FROM table_name
LIMIT number OFFSET start_afterSELECT * FROM weeks LIMIT 2;
-- week 1
-- week 2
SELECT * FROM weeks LIMIT 2 OFFSET 1;
-- week 2
-- week 3Create custom outputs with this clause
-- Structure
SELECT field CASE
WHEN field comparison THEN result
ELSE default
END AS case_alias
FROM tableSELECT 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;