Úvod do databázových systémů Lekce 9
Anatomie příkazu SQL Selekce Alias Projekce Třídění Funkce Úvod do databázových systémů – Ing. Nulíček Vladimír Anatomie příkazu SQL Selekce Alias Projekce Třídění Funkce Textové Číselné Datumové Konverzní Podmíněné výrazy Lekce 9
Výběr sloupců (projekce) Úvod do databázových systémů – Ing. Nulíček Vladimír Příkaz SELECT Jeden z nejvíce používaných příkazů v SQL Slouží pro načtení dat z DB Ve své nejjednodušší formě musí příkaz SELECT obsahovat následující: klauzuli SELECT, která určuje sloupce, které mají být zobrazeny klauzuli FROM, která určuje tabulku obsahující sloupce uvedené v klauzuli SELECT Výběr sloupců (projekce) Ze které tabulky Lekce 9
Úvod do databázových systémů – Ing. Nulíček Vladimír Základní pojmy Klíčové slovo - odkazuje na individuální příkaz SQL (např. SELECT, FROM) Klauzule je součástí SQL příkazu (např. SELECT title) Příkaz je kombinací dvou klauzulí (např. SELECT title FROM) Lekce 9
Projekce a selekce Projekce = výběr sloupců z tabulky Úvod do databázových systémů – Ing. Nulíček Vladimír Projekce a selekce Projekce = výběr sloupců z tabulky Selekce = výběr řádků z tabulky Lekce 9
Projekce (výběr sloupců) Úvod do databázových systémů – Ing. Nulíček Vladimír Projekce (výběr sloupců) Výběr všech sloupců Výběr některých sloupců Lekce 9
Použití aritmetických operátorů Úvod do databázových systémů – Ing. Nulíček Vladimír Použití aritmetických operátorů V příkazu SELECT lze používat libovolné kombinace aritmetických operátorů + - * / Použití těchto operátorů nevytváří nové sloupce v tabulkách ani nemění aktuální hodnoty dat. Výsledky výpočtů se objeví pouze ve výstupu. Lekce 9
Precedence aritmetických operátorů Úvod do databázových systémů – Ing. Nulíček Vladimír Precedence aritmetických operátorů Stejně jako v matematice Nejprve * /, potom + - Při stejné precenci se vyhodnocuje zleva doprava Precedenci lze změnit pomocí závorek Lekce 9
Alias Alias je způsob, jak přejmenovat záhlaví sloupce ve výstupu. Úvod do databázových systémů – Ing. Nulíček Vladimír Alias Alias je způsob, jak přejmenovat záhlaví sloupce ve výstupu. Pokud zobrazujeme výsledek SQL příkazu bez aliasu, zobrazí se stejné názvy sloupců jako názvy v tabulce nebo název ukazující aritmetickou operaci, např. 12*(SALARY + 100). Aliasy sloupců vám dovolí přejmenovat sloupce ve výstupu. Lekce 9
Alias Při použití aliasů k formátování výstupu platí několik pravidel. Úvod do databázových systémů – Ing. Nulíček Vladimír Alias Při použití aliasů k formátování výstupu platí několik pravidel. přejmenuje záhlaví sloupce je vhodný pro výpočty následuje ihned po názvu sloupce může mít nepovinné AS klíčové slovo mezi názvem sloupce a aliasem vyžaduje dvojité uvozovky, pokud alias obsahuje mezery, speciální znaky nebo rozlišuje velká a malá písmena Lekce 9
Alias - příklad Úvod do databázových systémů – Ing. Nulíček Vladimír Lekce 9
Úvod do databázových systémů – Ing. Nulíček Vladimír Odstranění duplicit duplicity Používejte klíčové slovo DISTINCT k tomu, abyste odstranili zdvojené záznamy dotazu. DISTINCT ovlivňuje veškeré uvedené sloupce a vrací každou zřetelnou kombinaci sloupců ve frázi výběru. Klíčové slovo DISTINCT musí být použito ihned po klíčovém slově SELECT. Lekce 9
Úvod do databázových systémů – Ing. Nulíček Vladimír Selekce – fráze WHERE Při výběru dat z databáze můžete potřebovat omezit výběr zobrazených záznamů. To provedete použitím fráze WHERE. Klauzule WHERE obsahuje podmínku, která musí být splněna, a Fráze WHERE přímo následuje za frází FROM v příkazu SQL. Lekce 9
Fráze WHERE - příklad Projekce (výběr sloupců) Úvod do databázových systémů – Ing. Nulíček Vladimír Fráze WHERE - příklad Projekce (výběr sloupců) Projekce + selekce (výběr sloupců a řádků) Lekce 9
Fráze WHERE - příklad Projekce (výběr sloupců) Úvod do databázových systémů – Ing. Nulíček Vladimír Fráze WHERE - příklad Projekce (výběr sloupců) Projekce + selekce (výběr sloupců a řádků) Lekce 9
Fráze WHERE - operátory Úvod do databázových systémů – Ing. Nulíček Vladimír Fráze WHERE - operátory Pro sestavení fráze WHERE lze použít tyto operátory: Textový řetězec a datum je nutno uzavřít do apostrofů Číslo se neuzavírá do apostrofů Lekce 9
Úvod do databázových systémů – Ing. Nulíček Vladimír Operátory - příklad Datum Číslo Text Lekce 9
Zřetězení Spojení několika textových řetězců dohromady Úvod do databázových systémů – Ing. Nulíček Vladimír Zřetězení Spojení několika textových řetězců dohromady Operátor zřetězení v Oracle V MySQL se používá + Lze také použít funkci CONCAT Lekce 9
Úvod do databázových systémů – Ing. Nulíček Vladimír Pravidla přednosti V jakém pořadí jsou výrazy vyhodnocovány a počítány? Lekce 9
Třídění – fráze ORDER BY Úvod do databázových systémů – Ing. Nulíček Vladimír Třídění – fráze ORDER BY SQL používá pro třídění řádků frázi ORDER BY ORDER BY být poslední klauzule v příkazu SQL dotazu. Je-li uvedeno více kritérií třídění, jsou vyhodnocovány zleva doprava (lze použít i aliasy) Výchozí třídění je vzestupné, chcete-li třídit sestupně, je nutno použít klíčové slovo DESC. Třídění nejprve podle pole „title“, následně podle pole „year“ Lekce 9
Jednořádkové znakové funkce Úvod do databázových systémů – Ing. Nulíček Vladimír Jednořádkové znakové funkce Jednořádkové znakové funkce jsou rozděleny do dvou kategorií: Funkce, které převádějí znakové řetězce. Funkce, které mohou spojit, získat, ukázat, najít, doplnit a ořezat řetězce znaků. Jednořádkové funkce mohou být použity v klauzuli SELECT, WHERE a ORDER BY. Funkce pro manipulaci se znaky jsou důležité, protože nemusíte vždy vědět, jaká písmena (velká, malá nebo oboje) dat jsou uložena v databázi. Manipulace se znaky vám umožňuje dočasně převést databázová data na znaky dle vašeho výběru. Vyhneme se nesrovnalostem mezi uloženými databázovými znaky a znaky dotazu. Lekce 9
Textové funkce Úvod do databázových systémů – Ing. Nulíček Vladimír Funkce pro manipulaci s textovými řetězci Funkce pro převod malá/velká písmena Lekce 9
LOWER – převod na malá písmena Úvod do databázových systémů – Ing. Nulíček Vladimír LOWER – převod na malá písmena UPPER – převod na velká písmena INITCAP – první znak každého slova se převede na velké písmeno, ostatní jsou malá Příkazy SELECT zde uvedené vyberou řádky, kde ve sloupci „title“ je uvedeno „carpe diem“ napsané jakoukoli velikostí písmen, např. „carpe diem“ „CARPE DIEM“ „Carpe diem“ „Carpe Diem“ Lekce 9
Funkce pro manipulaci s daty Úvod do databázových systémů – Ing. Nulíček Vladimír Funkce pro manipulaci s daty Funkce pro manipulaci se znaky se používají k získání, změně, formátování nebo úpravě řetězce znaků. Jeden nebo více znaků nebo slov je předáno funkci, která vykoná svou úlohu na vstupním řetězci znaků a vrátí změněnou, získanou, spočítanou, nebo upravenou hodnotu. Lekce 9
Funkce pro manipulaci s daty Úvod do databázových systémů – Ing. Nulíček Vladimír Funkce pro manipulaci s daty CONCAT: spojí dvě hodnoty dohromady SUBSTR: získá řetězec stanovené délky LENGTH: zobrazí délku řetězce jako číselnou hodnotu INSTR: najde číselnou pozici pojmenovaného znaku LPAD: doplní na levé straně řetězce znakem na požadovanou délku RPAD: doplní na pravé straně řetězce znakem na požadovanou délku TRIM: odstraní všechny uvedené znaky buď na začátku nebo na konci řetězce. REPLACE: nahradí posloupnost znaků v řetězci jinou sadou znaků. Lekce 9
Funkce pro manipulaci s daty Úvod do databázových systémů – Ing. Nulíček Vladimír Funkce pro manipulaci s daty Syntaxe funkce TRIM Syntaxe funkce REPLACE Příklad funkce REPLACE Tímto se bude nahrazovat Výsledek bude „BLACK and BLUE“ Tady se bude nahrazovat Toto se bude nahrazovat Lekce 9
Úvod do databázových systémů – Ing. Nulíček Vladimír Číselné funkce ROUND - může být použit s čísly i s hodnotami typu datum. Používá se především pro zaokrouhlování čísel na zadaný počet desetinných míst, ale může být také použit na zaokrouhlení číslic vlevo od desetinné čárky. TRUNC - Funkce TRUNC může být použita s čísly i s hodnotami typu datum. Používá se především k ořezání sloupce, výrazu nebo hodnoty na zadaný počet desetinných míst. MOD - zjistí zbytek po vydělení jedné hodnoty jinou hodnotou (např. MOD z 5 děleno 2 = 1). a další... Lekce 9
Úvod do databázových systémů – Ing. Nulíček Vladimír ROUND Syntaxe příkazu Není-li uveden počet desetinných míst, pak se zaokrouhluje na celá čísla (1) Pokud je počet desetinných míst kladné číslo, je číslo zaokrouhleno na tento počet desetinných míst (2) Pokud je počet desetinných míst záporné číslo, jsou zaokrouhlené číslice vlevo od desetinné čárky (3) Příklady: 2 1 3 Lekce 9
Úvod do databázových systémů – Ing. Nulíček Vladimír TRUNC Syntaxe příkazu Příklady: Stejně jako u ROUND, pokud u funkce TRUNC není definován počet desetinných míst, nebo je 0, je číslo ořezáno na celá čísla (bez desetinných míst). TRUNC není zaokrouhlení čísla, ale oříznutí na daný počet míst (odpovídá zarovnání dolů) Lekce 9
MOD Sloupec "Mod Demo" ukáže, zda je plat sudé nebo liché číslo. Úvod do databázových systémů – Ing. Nulíček Vladimír MOD Příklady: Sloupec "Mod Demo" ukáže, zda je plat sudé nebo liché číslo. Lekce 9
Datumové funkce Pracují s datumem (časem) Úvod do databázových systémů – Ing. Nulíček Vladimír Datumové funkce Pracují s datumem (časem) SYSDATE – vrací systémové datum a čas MONTHS_BETWEEN – počet měsíců mezi dvěma zadanými daty ADD_MONTHS – přidá k datu zadaný počet měsíců NEXT_DAY – první pracovní den po zadaném datu LAST_DAY – datum posledního dne v měsíci ROUND – zaokrouhlení data (viz číselné funkce) TRUNC – uříznutí data (viz číselné funkce) Lekce 9
Úvod do databázových systémů – Ing. Nulíček Vladimír Datový typ DATUM Datumový datový typ vždy ukládá interně informace o roku jako čtyřmístné číslo: 2 číslice pro století a 2 číslice pro rok. Přestože vnitřní paměť udržuje informace o úplném datu, pokud sloupec s datem je zobrazen na obrazovce, století není zobrazeno ve výchozím formátu. Interně jsou data uložena v číselném formátu (podobně jako např. v Excelu) Lekce 9
Úvod do databázových systémů – Ing. Nulíček Vladimír Práce s daty S daty s typem „datum a čas“ lze pracovat stejně jako s čísly (používat na ně aritmetické operace a některé funkce) – viz příklady: Lekce 9
Úvod do databázových systémů – Ing. Nulíček Vladimír SYSDATE vrací aktuální datum a čas nastavený na databázovém serveru (nebo klientu; podle nastavení). Lekce 9
Datumové funkce - příklady Úvod do databázových systémů – Ing. Nulíček Vladimír Datumové funkce - příklady Ve sloupci TENURE bude zaokrouhlený počet měsíců mezi datem ve sloupci „hire_date“ a systémovým datem Ve sloupci REVIEW bude datum „hire_date“ zvětšené o 6 měsíců Ve sloupci NEXT_DAY bude první pátek následující po datu „hire_date“. Ve sloupci LAST_DAY bude poslední datum měsíce odpovídající datu „hire_date“ Budou vybrány jen ty řádky, kde počet měsíců mezi „hire_date“ a systémovým datem je větší než 36 Lekce 9
Datumové funkce - příklady Úvod do databázových systémů – Ing. Nulíček Vladimír Datumové funkce - příklady Ve sloupci TENURE bude zaokrouhlený počet měsíců mezi datem ve sloupci „hire_date“ a systémovým datem Ve sloupci REVIEW bude datum „hire_date“ zvětšené o 6 měsíců Ve sloupci NEXT_DAY bude první pátek následující po datu „hire_date“ Ve sloupci LAST_DAY bude poslední datum měsíce odpovídající datu „hire_date“ Budou vybrány jen ty řádky, kde počet měsíců mezi „hire_date“ a systémovým datem je větší než 36 Lekce 9
Konverzní funkce Slouží k explicitnímu převodu datových typů Úvod do databázových systémů – Ing. Nulíček Vladimír Konverzní funkce Slouží k explicitnímu převodu datových typů Převod datového typu datum na znakový datový typ Převod číselného datového typu na znakový datový typ Převod znakového datového typu na číselný datový typ Převod znakového datového typu na datový typ datum Lekce 9
Konverze DATUMZNAKY Syntaxe Úvod do databázových systémů – Ing. Nulíček Vladimír Konverze DATUMZNAKY Syntaxe Jako „format model“ může být vložen jakýkoli platný formát data – viz tabulka na následujícím snímku Příklad: Výsledek bude např. „September 30, 2016“ (podle jazykového nastavení) Lekce 9
Formáty pro datum Úvod do databázových systémů – Ing. Nulíček Vladimír Lekce 9
Úvod do databázových systémů – Ing. Nulíček Vladimír Konverze ČÍSLOZNAKY Čísla uložená v databázi nejsou formátována. To znamená, že se neuchovávají žádné znaky měny, symboly, čárky desetinných míst nebo jiný typ formátování. Chcete-li přidat formátování, musíte nejprve převést čísla na znakový formát. Tato konverze je zvláště užitečná při zřetězení. Lekce 9
Konverze ČÍSLOZNAKY Syntaxe Příklad Úvod do databázových systémů – Ing. Nulíček Vladimír Konverze ČÍSLOZNAKY Syntaxe Příklad Dostupné formáty pro „format model“ – viz následující tabulka Lekce 9
Dostupné formáty pro převod čísla na text Úvod do databázových systémů – Ing. Nulíček Vladimír Dostupné formáty pro převod čísla na text Lekce 9
V poli „Number Change“ bude číselná hodnota 460 Úvod do databázových systémů – Ing. Nulíček Vladimír Konverze ZNAKYČÍSLO Syntaxe Převádí nečíselné hodnoty jako je „450“ na číslo, bez apostrofů S čísly lze následně provádět aritmetické operace Příklady: V poli „Number Change“ bude číselná hodnota 460 Lekce 9
Konverze ZNAKYDATUM Syntaxe Úvod do databázových systémů – Ing. Nulíček Vladimír Konverze ZNAKYDATUM Syntaxe Převede řetězec znaků, jako je "November 3, 2001", na datum. Formátovací model říká serveru, jak znakový řetězec „vypadá“. Příklad: Lekce 9
Vnoření funkcí Funkce lze do sebe vnořovat do libovolné hloubky Úvod do databázových systémů – Ing. Nulíček Vladimír Vnoření funkcí Funkce lze do sebe vnořovat do libovolné hloubky Vyhodnocování probíhá od nejvnitřnější úrovně směrem k vnější úrovni Příklad: Pořadí vyhodnocení funkcí? ADD_MONTHS NEXT_DAY TO_CHAR Lekce 9
Úvod do databázových systémů – Ing. Nulíček Vladimír Funkce s hodnotou NULL NULL = hodnota, která je k dispozice a je nepřiřazená, neznámá nebo ji nelze uplatnit. Nemůžeme testovat, zda je stejná jako jiné hodnoty, protože nevíme, jakou hodnotu má Abychom mohli s hodnotou NULL pracovat, existují tyto speciální funkce pro práci s touto hodnotou: NVL NVL2 NULLIF COALESCE Lekce 9
Úvod do databázových systémů – Ing. Nulíček Vladimír Funkce NVL Funkci NVL lze použít pro převedení hodnot sloupce, obsahujícího hodnoty null, na číslo před provedením výpočtu. Je-li aritmetický výpočet proveden s hodnotou null, výsledek je null. Funkce NVL může převést hodnotu null na číslo, než jsou aritmetické výpočty provedeny, aby se zabránilo výsledku null. Lekce 9
Úvod do databázových systémů – Ing. Nulíček Vladimír Funkce NVL - příklad V tomto příkladu sloupec auth_expense_amt tabulky D_PARTNERS obsahuje hodnoty null. Funkce NVL je použita pro změnu hodnot null na 0 dříve, než jsou provedeny aritmetické výpočty (vynásobení číslem 1,05 a uložení do sloupce Expenses) Lekce 9
Funkce NVL2 Funkce NVL2 vyhodnotí výraz se třemi hodnotami. Úvod do databázových systémů – Ing. Nulíček Vladimír Funkce NVL2 Funkce NVL2 vyhodnotí výraz se třemi hodnotami. Pokud první hodnota není NULL, pak NVL2 vrací druhý výraz. Pokud je první hodnota NULL, pak je vrácen třetí výraz. Datový typ vrácené hodnoty je vždy stejný, jako datový typ výrazu 2. Lekce 9
Úvod do databázových systémů – Ing. Nulíček Vladimír Funkce NVL2 - příklad Vyhodnocuje se „commission_pct“ z tabulky „employees“ Pokud nemá hodnotu NULL do výrazu „income“ se vloží hodnota „salary+(salary*commission_pct) Pokud má hodnotu NULL, do výrazu „income“ se vloží hodnota „salary“ Lekce 9
Funkce NULLIF Porovnává dva výrazy. Úvod do databázových systémů – Ing. Nulíček Vladimír Funkce NULLIF Porovnává dva výrazy. Pokud se rovnají, funkce vrací hodnotu NULL Jestliže se nerovnají, vrací funkce první výraz. Příklad: Funkce NULLIF porovnává délku textových řetězců „first_name“ a „last_name“ Pokud jsou shodné, vrací hodnotu NULL Pokud nejsou shodné, vrací délku řetězce „first_name“ Lekce 9
Funkce COALESCE Vrátí první argument, který nemá hodnotu NULL Úvod do databázových systémů – Ing. Nulíček Vladimír Funkce COALESCE Vrátí první argument, který nemá hodnotu NULL Je ekvivalentní příkazu CASE v této podobě: CASE WHEN (expression1 IS NOT NULL) THEN expression1 ... WHEN (expressionN IS NOT NULL) THEN expressionN ELSE NULL END Lekce 9
Funkce COALESCE - příklad Úvod do databázových systémů – Ing. Nulíček Vladimír Funkce COALESCE - příklad Do proměnné „comm“ se vloží: Pokud hodnota „commission_pct“ není NULL, vloží se tato hodnota Je-li „commission_pct“ NULL, pak se zkoumá „salary“, pokud není „salary“=NULL, pak se vloží hodnota „salary“ Pokud je hodnota „commision_pct“ i „salary“ NULL, vloží se hodnota 10 Lekce 9
Úvod do databázových systémů – Ing. Nulíček Vladimír Podmíněné výrazy Tyto výrazy vyhodnocují příkaz podobně jako IF-THEN-ELSE logika Používají se výrazy: CASE DECODE Lekce 9
Úvod do databázových systémů – Ing. Nulíček Vladimír CASE Syntaxe Příklad Lekce 9
DECODE Syntaxe DECODE porovnává výraz s s každou z hledaných hodnot Úvod do databázových systémů – Ing. Nulíček Vladimír DECODE Syntaxe DECODE porovnává výraz s s každou z hledaných hodnot Pokud je „expression” roven některé z hodnot „search n”, je vrácena odpovídající hodnota „result n” Pokud vyhledávanému výrazu neodpovídá žádná z hodnot „search n“, je vrácena hodnota „default“ Není-li hodnota „default“ zadána, pak je vrácena hodnota NULL. Lekce 9