Cvičení 9
Témata hodiny
- Skalární výrazy
- Operace rozšíření
- Singletony a operátor IN
- Pořadí n-tic a ORDER BY
- Části tabulky a LIMIT/OFFSET.
- Agregace a shlukování
- Agregační funkce v PostgreSQL
- Klauzule GROUP BY a HAVING výrazu SELECT
Skalární výrazy
- výrazy, jejichž hodnota je daného skalárního typu
- hodnotu určujeme vzhledem k n-tici
- literály - skalární výrazy mající stejnou hodnotu vzhledem ke každé n-tici
- lze vytvářet n-tici obsahující pouze literál
(SELECT literal AS atr_name
)
Skalární výrazy typu integer
- literály: celá čísla v daném rozsahu
- jsou-li e1 a e2 skalární výrazy typu integer, tak i
- -e1 je skalární výraz téhož typu
- (e1 op e2), kde op binární operátor je +,-,*,/,%,^, …, je skalární výraz téhož typu
- obvyklá priorita operátoru
- asociativita zleva
Skalární výrazy typu boolean
- literály: true - pravda, false - nepravda
- jsou-li e1 a e2 skalární výrazy typu boolean, tak i
- NOT e1 je skalární výraz téhož typu
- (e1 AND e2) je skalární výraz téhož typu
- (e1 OR e2) je skalární výraz téhož typu
- jsou-li e1 a e2 skalární výrazy typu integer, tak
- (e1 comp e2), kde comp je operátor porovnávání <,>,=, < =, > =, < >, je skalární výraz typu boolean
- (podobně pro další typy: čísla, data, řetězce, )
- priorita:
- aritmetika
- porovnávání
- logické operace
- podobně pro ostatní standardní typy (viz dokumentace)
Skalární funkce
- volání funkce je skalární výraz
- tvar volání fukce f s argumenty a1, …, an je f(a1, …, an)
- seznam funkcí a operátorů v PostgreSQL
- (ukázka)
Operace rozšíření
- nová relační operace
- rozšiřuje relaci R o nový atribut A, jehož hodnota v n-tici T je určena skalárním výrazem E
- tj nová relace má atributy z R plus nový atribut A, jehož hodntoa se pro každou novou n-tici dopočítá z původní n-tice T v R pomocí výrazu E
- výsledkem je nová relace
- (ukázka)
Singletony
- singleton - relace s aritou i kardinalitou 1
- dá se zaměnit přímo za hodnotu, která v ní je
- (ukázka)
Operátor IN
- obsahuje daná relace danou hodnotu?
- omezení: daná relace musí mít aritu 1 (jeden atribut A), daná hodnota musí být téhož typu jako atribut A
- (ukázka)
Pořádí n-tic
- v tabulce vrácené dotazem lze vynutit pořadí n-tic
- je určené sloupci a klíčovými slovy ASC pro vzestupné pořadí v daném sloupci nebo DESC pro sestupné pořadí v daném sloupci
- výsledné uspořádání je po složkách (tj. např je-li vše ASC, pak slovníkové). Pokud nějaký sloupec nemá specifikované pořadí, pak to u něj může dopadnout jakkoliv.
- (ukázka)
Části tabulky
- z tabulky určené výrazem lze požadovat jen danou (souvislou) část.
- OFFSET určuje od kolikátého řádku začít
- LIMIT určuje kolik řádků vrátit
- u tabulek bez určení pořadí n-tic to moc nedává smysl
- (ukázka)
Agregace a shlukování
- Opakování z přednášky:
- Co je to agregace?
- Co je to shlukování?
- Jak to funguje?
Agregační funkce v PostgreSQL
- Funkce očekávající buďto jeden sloupec dané tabulky, nebo všechny sloupce dané tabulky.
- Vrací jednu hodnotu skalárního typu.
- Příklady: max, min, count, sum, …
- Další v dokumentaci.
Ukázky
Úkoly
- V souboru.