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. UPDATEaDELETEbezWHEREse týkají celé tabulky. Před spuštěním si podmínku ověřte dotazemSELECT.- Cizí klíč nedovolí smazat řádek, na který se odkazuje, pokud tabulka nemá nastavené
ON DELETE CASCADEneboSET NULL. SQLite kontrolu cizích klíčů zapíná až poPRAGMA 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 JOINaRIGHT JOINa 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.