Obsah

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 <seznam_výstupních_sloupců>
  FROM <seznam_tabulek>
  [WHERE <podmínka_řádku>]
  [GROUP BY <seznam_výrazů_seskupení>]
  [HAVING <podmínka_skupiny>]
  [ORDER BY <seznam_kritérií_třídění>]

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 <název_tabulky>
  [<pojmenování_tabulky>]
  SET <název_sloupce1> = <výraz1>
  [,<název_sloupce2> = <výraz2>  [, ....]]
  [WHERE <podmínka>]

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 <název_tabulky>
  [(<název_sloupce1> [, <název_sloupce2> [, ...]])]
  <příkaz_select> | VALUES
  (<výraz1> [, <výraz2>[, ...])

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 <název_tabulky>
  [WHERE <podmínka>]

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'