SELECT a FROM)Každý dotaz na výběr dat začíná klíčovým slovem SELECT, které vrací výsledky vždy ve formě dvojrozměrné tabulky (řádky a sloupce).
SELECT: Říká, jaké sloupečky chceme ve výsledku vidět. (Např. SELECT jmeno, prijmeni). Můžeš použít i SELECT * pro výběr všech sloupců.FROM: Říká, z jaké tabulky (nebo tabulek) budeme data brát. (Např. FROM studenti).
FROM napíšeš více tabulek (např. FROM studenti, tridy) a neřekneš, jak jsou propojené, databáze udělá kartézský součin – spojí každý řádek z první tabulky s každým řádkem z druhé. To je obrovská a zbytečná zátěž, proto se k propojování používá JOIN.JOIN)Když potřebujeme data z více tabulek (např. jméno studenta a název jeho třídy), musíme tabulky spojit přes jejich klíče (obvykle cizí klíč jedné se rovná primárnímu klíči druhé).
INNER JOIN (průnik): Vrátí jen ty řádky, které mají shodu v obou tabulkách.
LEFT JOIN (nebo Left Outer Join): Vrátí úplně všechny řádky z levé tabulky (té první) a k ním připojí odpovídající data z pravé tabulky.
NULL).RIGHT JOIN: Funguje úplně stejně jako LEFT JOIN, akorát naopak – bere vše z pravé tabulky. V praxi se používá málokdy, prostě se radši otočí pořadí tabulek a použije se LEFT JOIN.FULL OUTER JOIN: Vrátí úplně všechno z obou tabulek, "všechno se vším", ale narozdíl od kartézského součinu se to snaží spárovat. Kde páry chybí, hodí NULL.WHERE)Slouží k omezení jaké řádky se nám vrátí.
=, <, >, !=, AND, OR).WHERE vek > 18 AND mesto = 'Praha'.GROUP BY a HAVING)Když chceš z dat dělat statistiky (počítat průměry, součty, počty), potřebuješ data seskupit.
GROUP BY: Vytvoří z dat skupiny podle společného kritéria (např. GROUP BY trida udělá z každé třídy jednu skupinu). Obvykle se používá s agregačními funkcemi jako COUNT() (počet), SUM() (součet), AVG() (průměr).HAVING: Tohle je v podstatě WHERE pro skupiny. Klasické WHERE totiž neumí pracovat s agregacemi. Pokud chceš vypsat jen třídy, kde je víc než 20 studentů, musíš použít HAVING COUNT(student_id) > 20.ORDER BY a LIMIT / TOP)přicházejí na řadu až úplně na konci