Fakulta elektrotechniky a informatiky

Slides:



Advertisements
Podobné prezentace
Aplikační a programové vybavení
Advertisements

KIV/ZIS Cvičení 6 SQL - SELECT.
MS ACCESS - DOTAZY DATABÁZOVÉ SYSTÉMY.
SQL Další dotazy a pohledy
Cvičení 05 Joins, isNull, case when Ing. Pavel Bednář
Jazyk SQL Ing. Zdena DOBEŠOVÁ. SQL Structured Query Language 1974 SEQUEL (Structured English Query Language) neprocedurální relační dotazovací jazyk norma.
Databázové systémy SQL Výběr dat.
YDASYS1 Ing. Monika Šimková.
Fakulta elektrotechniky a informatiky
Informační systémy Nástroje pro sběr dat, návrh a realizace databáze.
AGREGACE Distinct, Group By, Having, SUM, …. DISTINCT  Slučování stejných řádků ve výsledku dotazu. AGREGACE 2 JménoPříjmeníID FrantišekVomáčka1 JosefPokorný2.
Další dotazy SQL Structured Query Language. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
SQL Structured Query Language
Informatika pro ekonomy II přednáška 11
Databázové systémy 1 - řešení Cvičení č. 10 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 1 Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy 1 Cvičení č. 4 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy 1 Cvičení č. 2 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy I Přednáška č. 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 1 Cvičení č. 3 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Temporální Databáze Jaroslav Dražan. Čím se budeme zabývat Proč je čas v DB důležitý Práce s časem pomocí klasického SQL Reprezentace časové domény Spojování.
Radek Špinka Přepínače MSSQL výběr.
SQL Přednáška DB1. Literatura CONNOLLY, T.M.-BEGG,C.E.-STRACHAN,A.D.: Database Systems – A Practial Approach to Design, Implementation and Management.
Databázové systémy 2 Cvičení č. 7 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Cvičení 04 SQL Exists, Any, All Ing. Pavel Bednář
Databázové systémy II Přednáška č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
LOGICKÉ ŘÍZENÍ GEORGE BOOLE
Fakulta elektrotechniky a informatiky
Databázové systémy I Cvičení č. 9 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
KIV/ZIS cvičení 6 Tomáš Potužák. Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Stáhnout soubor studenti_dotazy_sql.mdb.
Databázové systémy 2 Cvičení č. 4 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy Přednáška č. 6.
SQL – základní pojmy Ing. Roman Danel, Ph.D.
Databázové systémy II Přednáška č. X Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Fakulta elektrotechniky a informatiky
Title of the document The content of the document Úroveň 1 Úroveň 2 Úroveň 3 Titulek Výrobky Služby O nás Autorem materiálu a všech jeho částí, není-li.
Databázové systémy Přednáška č. 3.
Databázové systémy 2 Cvičení č. 10 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy II Cvičení č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy I Cvičení č. 10 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy I Cvičení č. 7 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Fuzzy SQL Jaroslav Tykal, Jiří Dokulil. Proč Fuzzy Přesné vs. „nepřesné“ hodnoty Kdo má nejvyšší plat Kdo má vysoký plat Výhody přesnosti Jednoznačná.
Informatika II PAA DOTAZOVACÍ JAZYKY
Aplikační a programové vybavení
Databázové systémy 2 Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy SQL Výběr dat.
Databázové systémy 2 Cvičení č. 4 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové Aplikace Slidy ke cvičení DBI026, část 3 KSI MFF UK Verze
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B15 Autor Ing. Jiří Kalousek Období vytvoření březen.
SQL Další dotazy a pohledy Databázové systémy. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
Lišta nástrojů Standard otevření, uložení a další manipulace se soubory (tj. projekty) načítání dat (mapových vrstev) „žluté plus“ změna měřítka odkaz.
ACCESS DOTAZY Ing. Jana Horáková IKT MS Office
J. Macur, FAST VUT, 2011 (kombinované studium BU04)
Databázové systémy I Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Příkazy jazyka SQL ve VFP a na SQL Serveru
Filtrování záznamů Filtr podle výběru Filtr podle formuláře Rozšířený filtr Symboly, výrazy Dotazy.
Databázové systémy I Přednáška 7 Databázové systémy 1 – KIT/IDAS1
SQL – příkaz SELECT Ing. Roman Danel, Ph.D.
Databázové systémy I Přednáška 5 Databázové systémy 1 – KIT/IDAS1
Databázové systémy I Přednáška 8 Databázové systémy 1 – KIT/IDAS1
Databázové systémy a SQL
[ START WITH podmínka ] CONNECT BY podmínka
Dotazovací jazyk SQL - II
Přednáška 7 SQL – JOIN.
Databázové systémy a SQL
Databázové systémy a SQL
Transkript prezentace:

Fakulta elektrotechniky a informatiky jiri.zechmeister@upce.cz Databázové systémy I Přednáška č. 7 Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky jiri.zechmeister@upce.cz

Databázové systémy 1 - př. 7 Obsah Vnitřní a vnější spojení tabulek Opakování Spojování více než 2 tabulek (SQL 92) Vlastní spojení Alias Logické operátory Funkce Databázové systémy 1 - př. 7

Spojení tabulek – syntaxe SELECT Vnitřní spojení INNER INNER JOIN, JOIN Do výsledku budou zahrnuty pouze ty řádky, pro které byla nalezena odpovídající hodnota v druhé tabulce. Vnější spojení OUTER Ve výsledku budou i ty řádky, pro které nebyly nalezeny odpovídající hodnoty v druhé tabulce. Pravé (RIGHT JOIN) .. Ve výsledku budou všechny řádky z pravé (druhé tabulky). Nebyl-li nalezen aspoň jeden odpovídající řádek v levé tabulce, budou ve výsledku hodnoty NULL ve všech sloupcích z první tabulky. Levé (LEFT JOIN) .. Ve výsledku budou všechny řádky z levé (první tabulky). Nebyl-li nalezen aspoň jeden odpovídající řádek v pravé tabulce, budou ve výsledku hodnoty NULL ve všech sloupcích z druhé tabulky. Úplné (FULL JOIN) .. Ve výsledku budou všechny řádky z levé i pravé (první i druhé tabulky). Databázové systémy 1 - př. 7

Databázové systémy 1 - př. 7 Spojení tabulek Produkty Příklad: Máme 4 tabulky popisující produkty, jejich dodavatele, lokální zastoupení v ČR a pobočky, v nichž mají tato zastoupení vlastní prodejny. PRODUKT_ID DODAVATEL_ID OZNACENI CENA 6 2 A600N 34000 7 A2500H 21000 8 A8JN-4P019M 64000 9 3 Lifebook S2110 22000 17 null Star new A_OBCHOD SCHÉMA Dodavatele DODAVATEL_ID NAZEV 2 Asus 3 Fujitsu Siemens 8 UMAX 9 VBI Pobocky Zastoupeni POBOCKA_ID ZASTOUPENI_ID MESTO 101 30 Stříbro 102 Karviná 103 33 Praha 105 Brno 106 Ostrava 104 88 DODAVATEL_ID ZASTOUPENI_ID ZASTOUPENI 3 30 Fujitsu CR, a.s. 33 Fujitsu Siemens Computers, s.r.o. 8 88 UMAX Czech a.s. Databázové systémy 1 - př. 7

Databázový model – schéma A_OBCHOD Databázové systémy 1 - př. 7

Spojení tabulek – příklady A_OBCHOD SCHÉMA Zjistěte produkty a města, v nichž je lze přímo od oficiálního zastoupení dodavatele v ČR zakoupit. Varianta dle SQL92: SELECT DISTINCT Produkty.oznaceni, Pobocky.mesto FROM Produkty JOIN Zastoupeni ON produkty.dodavatel_id = zastoupeni.dodavatel_id JOIN Pobocky ON zastoupeni.zastoupeni_id = pobocky.zastoupeni_id; Databázové systémy 1 - př. 7

Spojení tabulek – příklady A_OBCHOD SCHÉMA Zjistěte produkty a města, v nichž je lze přímo od oficiálního zastoupení dodavatele v ČR zakoupit. Varianta dle SQL89: SELECT DISTINCT Produkty.oznaceni, Pobocky.mesto FROM Produkty, Zastoupeni, Pobocky WHERE produkty.dodavatel_id = zastoupeni.dodavatel_id AND zastoupeni.zastoupeni_id = pobocky.zastoupeni_id; Databázové systémy 1 - př. 7

Spojení tabulek – příklady A_OBCHOD SCHÉMA Zjistěte názvy všech dodavatelů, kteří nemají v ČR oficiální zastoupení a doplňte názvy jejich produktů, které lze na trhu zakoupit (pokud nějaké dodávají). SELECT Dodavatele.nazev, Produkty.oznaceni FROM Dodavatele LEFT JOIN zastoupeni ON dodavatele.dodavatel_id = zastoupeni.dodavatel_id LEFT JOIN Produkty ON dodavatele.dodavatel_id = produkty.dodavatel_id WHERE zastoupeni.zastoupeni_id IS NULL; Databázové systémy 1 - př. 7

Spojení tabulek – příklady Příklady využití vnějších spojení: Zobrazení všech dodavatelů, tedy i těch, kteří nedodávají žádný výrobek Zobrazení všech výrobků, tedy i těch, které nejsou přiřazeny žádnému dodavateli S využitím agregačních funkcí zobrazení počtu výrobků, které dodávají jednotliví dodavatelé (s vnějším spojením se zobrazí i hodnoty 0 u těch dodavatelů, kteří žádný výrobek nedodávají, v případě vnitřního spojení ve výsledku nebudou vůbec zahnuti) Databázové systémy 1 - př. 7

Databázové systémy 1 - př. 7 Logické operátory AND a zároveň (vrací ANO, pokud oba operandy jsou zároveň ANO) OR nebo (vrací ANO, pokud alespoň jeden operand je ANO) NOT není pravda, že (vrací ANO, když následující operand je NE) Databázové systémy 1 - př. 7

Pravdivostní tabulka AND Operand 1 Operand 2 Výsledek AND ANO NE NULL Databázové systémy 1 - př. 7

Pravdivostní tabulka OR Operand 1 Operand 2 Výsledek AND ANO NE NULL Databázové systémy 1 - př. 7

Pravdivostní tabulka NOT Operand 1 Výsledek AND ANO NE NULL Databázové systémy 1 - př. 7

Logické operátory – příklady A_OBCHOD SCHÉMA Příklady použití logických operátorů v jednoduchém dotazu nad jedinou tabulkou: SELECT DISTINCT oznaceni, cena FROM Produkty WHERE cena > 25000 ; WHERE cena IS NULL OR oznaceni LIKE ‘A%’; WHERE (cena <30000 AND oznaceni LIKE 'A%') OR dodavatel_id IS NULL; Databázové systémy 1 - př. 7

Aliasy v syntaxi příkazu SELECT SELECT <seznam výstupních sloupců> FROM <seznam tabulek> …………. <seznam výstupních sloupců> =[ALL|DISTINCT|DISTINCTROW] { * | <specifikace sloupce1> [, <specifikace sloupce2> [, …]] } <specifikace sloupce> = { <název sloupce> | < specifikace tabulky > . <název sloupce> | < specifikace tabulky > . * | výraz } [[AS] <pojmenování sloupce> ] < specifikace tabulky > = { <název tabulky> | <pojmenování tabulky> | <název pohledu> } [<pojmenování tabulky>] Databázové systémy 1 - př. 7

Databázové systémy 1 - př. 7 Aliasy – příklad A_OBCHOD SCHÉMA Příklad SELECT prd.oznaceni AS Vyrobek, dod.Nazev Vyrobce FROM Produkty prd, Dodavatele dod WHERE dod.dodavatel_id = prd.dodavatel_id; Vyrobek Vyrobce A600N Asus A2500H A8JN-4P019M Lifebook S2110 Fujitsu Siemens Databázové systémy 1 - př. 7

Aliasy – kdy se bez nich neobejdeme ? A_CLOVEK SCHÉMA Příklad - spojení tabulky s tou samou tabulkou Máme dánu tabulku: LIDE(Id, jmeno, prijmeni, narozen, pohlaví, Id_otce, Id_matky) Zjistěte jména dětí, které mají matku Boženu Malou? SELECT deti.jmeno as jmeno_ditete FROM lide rodice JOIN lide deti ON deti.Id_matky=rodice.Id WHERE rodice.jmeno LIKE 'Božena' AND rodice.prijmeni LIKE 'Malá'; Databázové systémy 1 - př. 7

Aliasy – kdy se bez nich neobejdeme ? A_CLOVEK SCHÉMA Další příklady Zjistěte jména dětí, které mají rodiče s Id=2? SELECT vnoucata.jmeno as jmeno_vnoucete FROM lide JOIN lide deti ON (deti.Id_matky=lide.Id OR deti.Id_otce=lide.Id) WHERE lide.id=2; Databázové systémy 1 - př. 7

Aliasy – kdy se bez nich neobejdeme ? A_CLOVEK SCHÉMA Další příklady Zjistěte jména vnoučat, které má osoba s Id=6? SELECT vnoucata.jmeno as jmeno_vnoucete FROM lide JOIN lide deti ON (deti.Id_matky=lide.Id OR deti.Id_otce=lide.Id) JOIN lide vnoucata ON (vnoucata.Id_matky= deti.Id OR vnoucata.Id_otce= deti.Id) WHERE lide.id=6; Databázové systémy 1 - př. 7

Databázové systémy 1 - př. 7 Výrazy Výraz je skupina konstant, proměnných a funkcí spojených pomocí operátorů. Výsledkem je hodnota. Datový typ je odvozen z datových typů jednotlivých prvků ve výrazu. Automatická konverze datových typů (například znaky na číslo při sčítání atd.) Základními kameny výrazů jsou Názvy sloupců Textové konstanty Číselné konstanty Výsledky funkcí Hodnota NULL Uzavření do závorek Unární (+/-) a binární operátory Vnořené dotazy (SELECT ….) Databázové systémy 1 - př. 7

Databázové systémy 1 - př. 7 Funkce Funkce jsou programové bloky, které provádějí požadované operace například s číselnými, znakovými či datovými hodnotami. Seznam lze najít např. na: http://www.techonthenet.com/oracle/functions/index.php Obecně je můžeme rozdělit: a) Jednořádkové funkce Analytické Konverzní Funkce pro práci s datem a časem Matematické Funkce pro práci s hodnotou NULL Řetězcové funkce Objektové funkce Funkce pro práci s formátem XML b) Agregační funkce Databázové systémy 1 - př. 7

Databázové systémy 1 - př. 7 Datové typy Oracle Datové typy pro kalendářní a časové hodnoty datum a čas Oba typy se skládají z polí YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, TIMEZONE_HOUR, TIMEZONE_MINUTE (časový posun) DATE Vyjádření konkrétního data a času s přesností na sekundy, rozsah je od 1.1.4712 př.n.l. do 31.12.9999 TIMESTAMP (<přesnost sekund>) Struktura obsahující datum a čas s požadovanou přesností (až na miliontiny sekundy pro hodnotu parametru <přesnost sekund>=6). TIMESTAMP WITH TIME ZONE Struktura jako TIMESTAMP doplněná o časový posun oproti UTC Vnitřní reprezentace data v Oracle je číselná (rozdíl jednoho dne odpovídá 1). Datum možno sčítat a odčítat. Databázové systémy 1 - př. 7

Aktuální datum a čas v Oracle Pro zjištění data a času můžeme použít několik funkcí SYSDATE – vrací aktuální datum a čas jako typ date, Pozor: obvykle se zobrazuje jen datum, ale hodnota obsahuje i čas, pro plné zobrazení je třeba použít konverzní funkci např. SELECT TO_CHAR(sysdate, 'DD.MM.YYYY HH24:MI:SS') FROM dual; LOCALTIMESTAMP vrací TIMESTAMP (v lokálním časovém pásmu) SYSTIMESTAMP vrací TIMESTAMP WITH TIME ZONE (s uvedeným časovým posunem systému) CURRENT_TIMESTAMP vrací TIMESTAMP WITH TIME ZONE (dle časového posunu nastaveného pro danou session) SELECT SESSIONTIMEZONE from dual; ALTER SESSION SET TIME_ZONE = '+1:0'; Všechny hodnoty jsou odvezeny dle systémových hodin na dtb. serveru. Databázové systémy 1 - př. 7

Databázové systémy 1 - př. 7 Tabulka DUAL V Oracle není možné použít příkaz SELECT bez klauzule „FROM" Příkaz SELECT 1+1 je syntakticky nesprávný. Chceme-li zapsat příkaz bez přístupu dat k reálné tabulce, můžeme uvést tabulku DUAL, která je součástí systémového katalogu a vždy vrací jediný řádek výsledku. Příklad SELECT 1+1 FROM DUAL; SELECT sysdate FROM DUAL; SELECT user FROM DUAL; Databázové systémy 1 - př. 7

Práce s typy datum a čas v Oracle Pro zjištění jedné hodnoty z hodnoty typu datum a čas je vhodná funkce EXTRACT. Příklad použití: SELECT EXTRACT(year FROM systimestamp) EY, EXTRACT(month FROM systimestamp) EM, EXTRACT(day FROM systimestamp) ED, EXTRACT(hour FROM systimestamp) EH, EXTRACT(minute FROM systimestamp) EM, EXTRACT(second FROM systimestamp) ES, EXTRACT(timezone_hour FROM systimestamp) TH, EXTRACT(timezone_minute FROM systimestamp) TM, EXTRACT(timezone_region FROM systimestamp) TR, EXTRACT(timezone_abbr FROM systimestamp) TA FROM dual; Databázové systémy 1 - př. 7

Práce s typy datum a čas v Oracle Posun datumu a času lze povést například takto: SELECT current_timestamp + INTERVAL '10:30' MINUTE TO SECOND FROM dual; SELECT localtimestamp + INTERVAL '1' year(1) SELECT sysdate + 1/24 -- výsledek bude o hodinu posunut, nicméně čas není zobrazen (jen nastavení způsobu zobrazení) SELECT to_char(sysdate + 1/24, 'DD.MM.YYYY HH24:MI:SS') -- v posledním příkladu je pro zobrazení času použita funkce to_char Databázové systémy 1 - př. 7

Funkce pro zjištění aktuálního času Next_day(datum, den_v_týdnu) funkce vrací nové datum představující následující zadaný den v týdnu Last_day(datum) poslední den v aktuálním měsíci Add_months(datum, n-měsíců) posune datum o n měsíců Months_between(datum1, datum2) počet měsíců mezi 2 daty Databázové systémy 1 - př. 7

Databázové systémy 1 - př. 7 Konverzní funkce Bin_To_Num(posloupnost 0 a 1 oddělená čárkami) převod binárního čísla na číslo desítkové soustavy To_Char(řet) převádí řetězec do standardní znakové sady To_Char(number [, formátovací_řetězec, nsl_par]) převádí datový typ NUMBER na typ VARCHAR2 To_Char(datetime [, formátovací_řetězec, nsl_par]) převádí datové typy na typ VARCHAR2 To_Date(řet, formátovací_řetězec [, nsl_par]) převádí textové datové typy na datový typ DATE To_Number(řet, formátovací_řetězec [, nsl_par]) převádí datový typ VARCHAR2 na číselný typ NUMBER nsl_par … parametr určující národní formát pro zápis data a času, čísel .. Databázové systémy 1 - př. 7

Databázové systémy 1 - př. 7 Parametry formátovacího řetězce funkce TO_CHAR pro práci s datem a časem YYYY 4-číslicový formát roku YYY, YY, Y Poslední 3, 2 nebo 1 číslice roku Q Čtvrtletí (1, 2, 3, 4) MM Měsíc (01-12; JAN = 01) MON Měsíc vyjádřený 3 znaky MONTH Měsíc celým názvem velkými písmeny RM Měsíc vyjádřený římskými číslicemi (I-XII; JAN = I) WW Týden v roce (1-53) W Týden v rámci měsíce (1-5) D Den v týdnu (1-7) DAY Den v týdnu vyjádřený slovně velkými písmeny DD Den v měsíci (1-31) DDD Den v roce (1-366) DY Den v týdnu vyjádřený pomocí zkratky názvu dne HH Hodina (1-12) HH12 Hodina vyjádřená ve 12-hodinovém formátu (1-12) HH24 Hodina vyjádřená ve 24-hodinovém formátu (0-23) MI Minuta (0-59) SS Sekunda (0-59) SSSSS Sekundy od půlnoci (0-86399) Databázové systémy 1 - př. 7

Konverzní funkce TO_CHAR Příklady pro práci s datem a časem: to_char(sysdate, 'yyyy/mm/dd'); '2003/07/09' to_char(sysdate, 'Month DD, YYYY'); Říjen 16, 2006' to_char(sysdate, 'Month DD, YYYY', 'NLS_DATE_LANGUAGE=American') October 16, 2006 to_char(sysdate, 'Month DD, YYYY', 'NLS_DATE_LANGUAGE=Czech') Říjen 16, 2006 Databázové systémy 1 - př. 7

Parametry formátovacího řetězce funkce TO_CHAR pro práci s čísly 9 Symbol pro číslo se stanoveným počtem číslic (je-li číslo kratší, je doplněno mezerami a před záporným je znak mínus) 0 Číslo je na začátku nebo konci doplněné nulami $ Na začátku čísla je znak $ B Symbol zabrání vypsání čísla, pokud je jeho hodnota nula D Symbol pro určení oddělovače desetinných číslic G Symbol pro určení oddělovače tisíců L Symbol pro určení lokálního symbolu měny , Na příslušné pozici je čárka . Na příslušné pozici je tečka V číslo je zobrazené v exponenciálním formátu RN číslo je zobrazené velkými římskými číslicemi (do 3999) FM číslo je zobrazené bez úvodních mezer EEEE číslo ve vědeckém formátu Databázové systémy 1 - př. 7

Konverzní funkce TO_CHAR Příklady pro práci s čísly: to_char(1210.73, '9999.9') '1210.7' to_char(1210.73, '9,999.99') '1,210.73' to_char(1210.73, '$9,999.000') '$1,210.730' to_char(21, '000099') '000021' select to_char(191145.23458798, '999G999D999L', 'NLS_NUMERIC_CHARACTERS =,.') from dual '191.145,235Kč' NLS_NUMERIC_CHARACTERS = "<decimal_character><group_separator>" Databázové systémy 1 - př. 7

Funkce zaokrouhlování data a času Round(datum, zaokrouhlení) zaokrouhlení data datum původní datum zaokrouhlení YEAR na celé roky MONTH na celé měsíce DDD na celé dny DAY první den v týdnu HH na celé hodiny MI na celé minuty Trunc(datum, část) ořezání data (parametry stejné jako u Round) Extract(část FROM datum) vrací požadovanou část z data (YEAR, MONTH, DAY, HOUR, MINUTE, SECOND) Databázové systémy 1 - př. 7

Funkce zaokrouhlování data a času Příklady: SELECT ROUND (sysdate, 'DAY') FROM dual; SELECT TRUNC(sysdate, 'HH') SELECT EXTRACT(YEAR FROM sysdate) SELECT TO_CHAR(TRUNC(sysdate, 'HH'), 'DD. Month YYYY HH:MI') Databázové systémy 1 - př. 7

Jednořádkové znakové funkce Case-manipulation funkce Funkce, které mění velikost znaků UPPER LOWER INITCAP Character-manipulation funkce Funkce, které mění řetězec CONCAT SUBSTR LENGTH LPAD Databázové systémy 1 - př. 4

Case-manipulation funkce UPPER – všechny znaky převede na velké UPPER(sloupec | výraz) SELECT UPPER(username) FROM uzivatele; LOWER – všechny znaky převede na malé LOWER(sloupec | výraz) SELECT LOWER(username) FROM uzivatele; INITCAP – všechny první znaky každého slova převede na velké, ostatní znaky na malé INITCAP(sloupec | výraz) SELECT INITCAP(mesto) FROM adresy; Databázové systémy 1 - př. 4

Case-manipulation funkce Příklady: SELECT * FROM zamestnanci WHERE UPPER(jmeno)=‘PETR‘; SELECT * FROM zamestnanci WHERE LOWER(jmeno)=‘petr‘; SELECT * FROM zamestnanci WHERE INITCAP(jmeno)=‘Petr‘; Databázové systémy 1 - př. 4

Character-manipulation funkce CONCAT – spojí dva řetězce do jednoho Alternativou je operátor || SUBSTR – extrahuje podřetězec zadané délky SUBSTR(retezec, pocat, delka) LENGTH – vrátí délku řetězce ve znacích LENGTH(retezec) INSTR – nalezne pozici znaku v řetězci INSTR(řetězec, znak) LPAD – doplní řetězec na zadanou délku zleva LPAD(retezec, delka [, znak]) RPAD – doplní řetězec na zadanou délku zprava RPAD(retezec, delka [, znak]) Databázové systémy 1 - př. 4

Character-manipulation funkce TRIM – odstraní z řetězce zadané znaky TRIM([ leading | trailing | booth [znaky FROM ]] řetězec) REPLACE – zamění výskyt sekvence znaků v řetězci za zadanou sekvenci znaků REPLACE(řetězec, co [, čím]) Databázové systémy 1 - př. 4

Akceptování hodnot NULL A_OBCHOD SCHÉMA NVL(výraz1, výraz2) Pokud není hodnota výraz1 NULL, je vrácena hodnota výraz1, jinak výraz2. Tato funkce je vhodná pro nahrazení hodnoty null jinou hodnotou. NVL2(výraz1, výraz2, výraz3) Pokud není hodnota výraz1 NULL, je vrácena hodnota výraz2, jinak výraz3. Tato funkce rozšiřuje možnosti předchozí funkce. Použití v agregačních funkcích například: SELECT AVG(NVL(cena, 0)) as Prumerna_cena FROM produkty (interpretace – průměrná cena všech produktů produkt s neudanou cenou se pro výpočet považuje za produkt s nulovou cenou) SELECT AVG(cena) as Prumerna_cena FROM produkty (interpretace – průměrná cena všech produktů s udanou cenou) Databázové systémy 1 - př. 7

Databázové systémy 1 - př. 7 Čas pro dotazy Děkuji za pozornost Databázové systémy 1 - př. 7