Cvičení 2

Témata cvičení

Průběh cvičení

Dotazy na tabulku - SELECT

Pár (i pokročilých) příkladů použití SELECT v dokumentaci.

Podmínky a základní SELECT výraz

Mohou nás zajímat jen některé řádky tabulky. To ale znamená, že musíme nějak specifikovat které. K tomu slouží forma příkazu SELECT, kdy condition je podmínka, kterou musí splnit řádek, pokud má být ve výsledné tabulce:

SELECT * FROM name WHERE condition;

Pro informace k podmínkám a jejich tvorbě v SQL vizte texty přednášek nebo dokumentaci.

Příkazy UPDATE a DELETE

Příkaz UPDATE umožňuje měnit hodnoty atributů v n-ticích splňujících dané podmínky.

UPDATE name SET col1 = val1, col2 = val2,  ... , coln = valn WHERE condition;

Příkaz DELETE umožňuje mazat n-tice splňující dané podmínky.

DELETE FROM name WHERE condition;

Množinové operace

Dokumentace

Ukázky

Úkoly

  1. Vytvořte tabulku pro evidenci zaměstnanců s vlastnsotí “Pracuje u nás zaměstnanec se jménem name, příjmením surname, …”:

    • jméno tabulky: employee
    • sloupce:
      • name typu varchar(20)
      • surname typu varchar(20)
      • birthday typu date
      • job_start_day type date
      • office typu int
      • email type varchar(50)
      • web typu varchar(50)
      • children_count typu smallint
      • gender typu char(1)
  2. Napište příkazy SELECT nad tabulkou employee s vlastností:

    • Bezdětný zaměstnanec se jménem name, příjmením surname, …
    • Zaměstnanec se jménem name, příjmením surname, … pracuje v kanceláří číslo 007.
    • Zaměstnanec se jménem name, příjmením surname, …, který do zaměstnání nastoupil ještě před vlastním narozením.
    • Zaměstnanec se jménem name, příjmením surname, …, který má více dětí než je číslo jeho/její kanceláře.
  3. Přidejte do tabulky employee nové řádky tak, aby každý z příkazů z předchozího úkolu vrátil jedinečný výsledek.

  4. Zkuste si nad tabulkou employee libovolné úpravy a mazání ntic.

  5. Tady máte skript vytvářející tři relace: novakovi, kroupovi a kralikovi obsahujici soupis majetku tří rodin. Navrhněte dotazy vracející následující výsledky. Vyzkoušejte je.

    1. Objekty, které mají v domácnosti Nováků nebo v domácnosti Kroupů.
    2. Všechny objekty všech domácností (tj. Nováků, Kroupů i Králíků).
    3. Objekty, které mají jen Novácí (tj. nemají je Kroupovi ani Králíkovi). d4. Objekty, které má jen jedna rodina (kterákoliv).
  6. Nyní pracujte pouze s relací novakovi a vyjádřete (kde je to možné) relace s následujícími vlastnostmi.

    1. Obsahující pouze objekty s jinou než bílou barvou.
    2. Obsahující pouze objekty s cenou vyšší než 1000.
    3. Obsahující pouze bíle objekty těžší než 5.

    Zkuste to:

    • Nejprve pomocí relačních operací průniku, sjednocení a rozdílu nad relací získanou z dat SELECT výrazem s jednoduchou podmínkou. T.j výsledky více jendoduchých SELECT výrazů kombinujte danými operacemi.
    • Poté pomocí složených podmínek v SELECT výrazu nad původní relací. Tj. napište jeden SELECT dělající totéž složenou podmínkou.