Cvičení 9
Témata
- pohledy
- skalární výrazy
- Vypočítané atributy
- Pořadí n-tic a ORDER BY
- Části tabulky a LIMIT/OFFSET.
Pohledy
- co je to pohled (virtuální relační proměnná)?
(ukázka)
Aktualizovatelnsot relační proměnné
Virtuální vs. základní relační proměnná.
Jak je to v PostgreSQL?
Simple views are automatically updatable: the system will allow INSERT, UPDATE and DELETE statements to be used on the view in the same way as on a regular table. A view is automatically updatable if it satisfies all of the following conditions:
The view must have exactly one entry in its FROM list, which must be a table or another updatable view.
The view definition must not contain WITH, DISTINCT, GROUP BY, HAVING, LIMIT, or OFFSET clauses at the top level.
The view definition must not contain set operations (UNION, INTERSECT or EXCEPT) at the top level.
The view's select list must not contain any aggregates, window functions or set-returning functions.
(ukázka)
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
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)
Vypočítané atributy
- 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
- zapisujeme pomocí SELECT
- (ukázka)
Vypočítané atributy a aktualizovatelnost
- virtuální relační proměnná (pohled) může mít některé atributy aktualizovatelné a jiné ne
- “Atribut aktualizovatelné virtuální relační proměnné je aktualizovatelný, pokud je definovaný skalárním výrazem tvořeným pouze aktualizovatelným atributem.”
- Tedy pokud jde přímo o atribut ze základní relace, tak je aktualizovatelný. Pokud jsme použili nějaký jiný skalární výraz, tak ne.
- (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)