===== Základní syntaxe jazyka SQL ===== ==== Výběr z databáze ==== Jediným příkazem, kterým je možné získat data z databázových tabulek je příkaz //SELECT//. Tento příkaz nemění žádná data v databázi. SELECT FROM [WHERE ] [GROUP BY ] [HAVING ] [ORDER BY ] //Příklad:// Výběr partnerů a k nim počet vystavených faktur a celková cena k úhradě. Omezení podmínkou data vystavení od 1.1.2005 a celkovou sumou k úhradě větší než 1000 Kč. Seřazeno dle čísla partnera. select idpartner, count(idfaktura), sum(cenakuhrade) from faktury_faktury where datumvystaveni > '1.1.2005' and idfdruh = 'fv' group by idpartner having sum(cenakuhrade) > 1000 order by idpartner //Příklad:// Výběr ze dvou tabulek -- použití spojení dvou tabulek. Výběr partnerů a k nim seznam vystavených faktur. Omezení podmínkou data vystavení faktur od 1.1.2005. select * from partneri_partneri partneri join faktury_faktury faktury on faktury.idpartner = partneri.idpartner where faktury.datumvystaveni $>$ '1.1.2005' and faktury.idfdruh = 'fv' order by idpartner} ==== Změna hodnot ve sloupcích řádků tabulky ==== UPDATE [] SET = [, = [, ....]] [WHERE ] Do všech sloupců, které jsou uvedeny za klíčovým slovem //SET// se vloží hodnota odpovídajícího výrazu. Pomocí podmínky za klíčovým slovem //WHERE// můžeme omezit množinu řádků, kterých se bude aktualizace týkat. //Příklad:// Vynulování množství u rozpočtu 'RZ00015'. update rozpocty_rpolozky set mnozstvi = '0' where idrozp = 'RZ00015' ==== Přidání řádků do tabulky ==== INSERT INTO [( [, [, ...]])] | VALUES ( [, [, ...]) Nový řádek přidáme do tabulky uvedením hodnot pro všechny sloupce v tabulce. Tímto způsobem můžeme přidat vždy pouze jeden řádek. Více řádků najednou přidáme do tabulky pomocí vnořeného dotazu //SELECT//, který musí mít stejnou strukturu seznamu výstupních sloupců (počet a datové typy sloupců), jako má tabulka, do které chceme řádky přidat. Řádky, které jsou výsledkem tohoto dotazu, jsou automaticky přidány k již existujícím řádkům v tabulce. //Příklad:// Doplnění číselníku nákladů z číselníku rekapitulačních položek. insert into rozpocty_crnakl (idnakl, popis, vypocet, barva, typ, koef, zaklad, druhy) select idrek, popis, vypocet, barva, typ, koef, zaklad, druhy from rozpocty_crekap ==== Vymazání řádků z tabulky ==== DELETE FROM [WHERE ] Příkaz //DELETE// vymaže z tabulky všechny řádky, které splňují podmínku zadanou za klíčovým slovem //WHERE//. Není-li tato podmínka uvedena, jsou z tabulky vymazány všechny řádky. Příkaz //DELETE// vymaže z tabulky celé řádky. Pokud chceme pouze vymazat hodnotu v určitém sloupci (nastavit ji na //NULL//), musíme použít příkaz //UPDATE//. //Příklad:// Smazání všech ceníkových položek z druhu 'old'. delete from rozpocty_cenik where iddruh = 'old'