Cvičení 3

Témata cvičení

Opakování z přednášky

Restrikce - výběr řádků tabulky

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

SELECT * FROM name WHERE condition;

Předpokládejme tabulku zvire se sloupci:

Podmínka condition může být složena z více jednodušších podmínek pomocí logických spojek - v SQL OR, AND, NOT.

(ukázky - příkaz vracející restrikci tabulky na: zvířata se srstí; zvířata s alespoň 2 nohama, která máme rádi; alespoň 5 let stará zvířata, která nemáme rádi)

Množinové operace

Dokumentace

(ukázka)

UPDATE a DELETE

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

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

(ukázka)

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

DELETE FROM name WHERE condition;

(ukázka)

Úkoly

Tady (a také na serveru v adresaří /home/PUBLIC/) 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. Dotazy si pište do skriptu, třeba do toho dodaného, ať si to nakonec můžeme celé projít.

  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).
  4. Objekty, které má jen jedna rodina (kterákoliv).

Nyní si představte, že můžete do relace novakovi pouze přidávat (INSERT), z relace kroupovi pouze mazat (DELETE) a v relaci kralikovi pouze měnit hodnoty (UPDATE). Pomocí těchto akcí zajistěte, aby platilo:

  1. Dotaz 1. a dotaz 2. vrátí stejnou relaci.
  2. Dotaz 3. a dotaz 4. vrátí stejnou relaci.
  3. Dotaz 1. a 3. vrátí stejnou relaci.

Nyní pracujte pouze s relací novakovi a vyjádřete (kde je to možné) nejprve pomocí množinových operací nad restrikcí tabulky s jednoduchou podmínkou a poté pomocí složených podmínek v restrikci relace:

  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.