Lekce 2.2

SQL v praxi

Výběr, filtrování a řazení dat, vkládání, úpravy a mazání záznamů, potom JOINy včetně rozdílu LEFT a RIGHT a agregace – vše nad připravenou databází e-shopu.

Shrnutí

SQL je jazyk, kterým se s relační databází mluví. Popisujeme v něm, co chceme dostat nebo změnit, a cestu k datům necháváme na databázi.

Příkaz K čemu je
SELECT … FROM … výběr sloupců z tabulky
WHERE filtrování řádků; NULL se hledá přes IS NULL
ORDER BY, LIMIT řazení a omezení počtu řádků
INSERT INTO … VALUES vložení řádku; id přidělí databáze
UPDATE … SET … WHERE úprava řádků
DELETE FROM … WHERE smazání řádků
JOIN … ON spojení tabulek; jen řádky s protějškem
LEFT JOIN, RIGHT JOIN spojení, které zachová všechny řádky levé, nebo pravé tabulky
COUNT, SUM, AVG, MIN, MAX agregační funkce
GROUP BY výpočet pro každou skupinu zvlášť
HAVING filtrování skupin podle výsledku agregace
  • Části dotazu jdou v pevném pořadí: SELECT, FROM, JOIN, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT.
  • UPDATE a DELETE bez WHERE se týkají celé tabulky. Před spuštěním si podmínku ověřte dotazem SELECT.
  • Cizí klíč nedovolí smazat řádek, na který se odkazuje, pokud tabulka nemá nastavené ON DELETE CASCADE nebo SET NULL. SQLite kontrolu cizích klíčů zapíná až po PRAGMA foreign_keys = ON.
  • Seskupuje se podle klíče, ne podle jména, které se může opakovat.

Umím?

  • Vysvětlím, k čemu slouží SQL a na jaké skupiny se dělí jeho příkazy.
  • Napíšu dotaz, který vybere sloupce, vyfiltruje řádky a seřadí je.
  • Najdu řádky s prázdnou hodnotou a vím, proč nefunguje = NULL.
  • Vložím, upravím a smažu záznam a ověřím, že se změna povedla.
  • Vysvětlím, proč databáze odmítla smazat zákazníka s objednávkami.
  • Spojím dvě i víc tabulek přes JOIN.
  • Vysvětlím rozdíl mezi JOIN, LEFT JOIN a RIGHT JOIN a najdu řádky bez protějšku.
  • Spočítám součet, průměr a počet za každou skupinu a skupiny vyfiltruji.
  • Najdu a opravím chybu v cizím dotazu.