Databázové systémy a SQL

Slides:



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

Databázové systémy 2 Cvičení č. 8
MS ACCESS - DOTAZY DATABÁZOVÉ SYSTÉMY.
Základy jazyka SQL Jan Tichava
SQL: DDL v ORACLE CREATE TABLE jméno_tabulky (atribut datový_typ [DEFAULT][attribut_constraint] [, atribut datový_typ [DEFAULT] [attribut_constraint]],...
Aplikační a programové vybavení
DB1 – 9. cvičení Optimalizace dotazu Konkurenční přístup a deadlock Indexace Transakce.
Fakulta elektrotechniky a informatiky
Informační systémy Realizace uložených procedur a spouští, jejich praktické využití.
Informační systémy Realizace sběru dat v rámci realizovaných úloh.
Informační systémy Nástroje pro sběr dat, návrh a realizace databáze.
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.
Informatika pro ekonomy II přednáška 11
Fakulta elektrotechniky a informatiky
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 II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 2 Cvičení č. 6 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy II Přednáška č. 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
1 BUMI Úvod do medicínské informatiky Počítačové cvičení č. 3 Ing. Vratislav Čmiel.
Temporální databáze a TSQL
TEMPORÁLNÍ DATABÁZE A TSQL2
Programování v Pascalu Přednáška 7
PL/SQL Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd. Rozšířením jazyka SQL.
MySQL - Vytvoření nové tabulky  create table jméno_tabulky (jméno_položky typ_položky,... ) Přehled nejběžnějších datových typů Přehled nejběžnějších.
Databázové systémy 2 Cvičení č. 7 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy II Přednáška č. 4, 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Fakulta elektrotechniky a informatiky
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy Přednáška č. 6.
SQL PVA Jan Hora. SQL „graficky“ Grafický vs. pravý SQL SELECT ORDED BY WHERE.
Databázové systémy 2 Cvičení č. 6 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Číslo šablony: III/2 VY_32_INOVACE_P4_3.8 Tematická oblast: Aplikační software pro práci s informacemi II. Databáze – základy SQL Typ: DUM - kombinovaný.
Databázové systémy II Přednáška V Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Cvičení č. 8 Pokročilé regulární výrazy - na co je třeba dát pozor David Chudán Upravil D. Pejčoch.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 2 Zkouška – 12:00. Příklad I - Funkce Vytvořte funkci ZK_TRP_TREND(P_ID_TRPASLIKA IN NUMBER, P_DATUM_OD IN VARCHAR2, P_DATUM_DO.
Informatika II PAA DOTAZOVACÍ JAZYKY
Databázové systémy 2 Zkouška – 8:00. Příklad I – Procedura – 5 bodů Vytvořte proceduru P_ZK2(p_table_name VARCHAR2, p_min_nuls NUMBER, p_drop.
Aplikační a programové vybavení
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B13 Autor Ing. Jiří Kalousek Období vytvoření březen.
Databázové systémy 2 Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Základní obeznámení s jazykem SQL Databázové systémy.
TEMPORÁLNÍ DATABÁZE A TSQL2
Databázové Aplikace Slidy ke cvičení DBI026, část 3 KSI MFF UK Verze
Databázové systémy 2 Zkouška – 8:00. Příklad I - Funkce Vytvořte funkci ZK_DIFF_MIN_MAX (P_ZAM_ID NUMBER) RETURN VARCHAR2. Funkce může vracet.
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.
Databázové systémy I Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Autor, Název akce Databázové systémy a SQL Lekce 7 Daniel Klimeš.
Autor, Název akce Databázové systémy a SQL Lekce 2 Daniel Klimeš 1.
Autor, Název akce Databázové systémy a SQL Daniel Klimeš 1.
Databázové systémy a SQL
Dobývání znalostí z databází fulltext
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
Dotazovací jazyk SQL - III
Databázové systémy a SQL
Databázové systémy a SQL
Databázové systémy a SQL
Databázové systémy a SQL
Databázové systémy a SQL
Optimalizace SQL dotazů
Databázové systémy a SQL
Přednáška 9 Triggery.
Přednáška 10 Uložené procedury.
Databázové systémy a SQL
Databázové systémy a SQL
Transkript prezentace:

Databázové systémy a SQL Lekce 8 Daniel Klimeš

Vyhledávání v textu Operátor LIKE zástupné znaky _ = 1 libovolný znak % = 0 nebo n libovolných znaků ESCAPE '\' Příklad: Pracoviště Ústí SELECT * FROM sites WHERE site LIKE ‘%Ústí%’ Text obsahující znak procento SELECT * FROM eav_string WHERE value LIKE '%\%%' ESCAPE '\'; Jednoznakové texty SELECT * FROM eav_string WHERE value LIKE ‘_’; Text podobný datumu kdekoliv v textu SELECT * FROM eav_string WHERE value LIKE ‘%__.__.____%’; Daniel Klimeš, Databázové systémy a SQL

Regulární výrazy Regulární výraz = šablona/vzor (pattern) Pochází z programovacích jazyků pro zpracování textu Nejen pro databáze Skládá se: z hledaných znaků, textu zástupných znaků kvantifikátorů modifikátory operátory Oracle funkce: WHERE REGEXP_LIKE(sloupec, ‘reg. vyraz’) WHERE REGEXP_LIKE(first_name, '^Ste(v|ph)en$') Daniel Klimeš, Databázové systémy a SQL

Zástupné znaky Znak Význam . (tečka) Jakýkoliv znak ^ Začátek řetězce $ Konec řetězce \d Číslice \D Vše kromě číslice \w Písmeno, číslice, podtržítko \W Doplněk k \w \s Bílý znak – mezera, tabulátor \S Doplněk k \s Hledání datumu: SELECT value FROM eav_string  WHERE REGEXP_LIKE(value, '\d\d\.\d\d\.\d\d\d\d') Daniel Klimeš, Databázové systémy a SQL

Kvantifikátory, modifikátory Znak Význam * 0 – n opakování + 1 – n opakování ? 0 nebo 1 opakování {m} Přesně m opakování {m,} m nebo více opakování {m,n} Minimálně m, maximálně n opakování select value from eav_string WHERE REGEXP_LIKE(value, '\d{1,2}\.\d{1,2}\.\d{2,4}') Znak Význam i Case insensitive hledání c Case sensitive hledání Daniel Klimeš, Databázové systémy a SQL

Operátory Znak Význam [abc] Jeden z uvedených znaků (a nebo b nebo c) Libovolný znak kromě uvedených (vše kromě a b c) (abc) Uzavření skupiny znaků-blok | nebo \1 Odkaz na první blok \ Ruší speciální význam znaku např.: „\.“ = tečka SELECT value FROM eav_string WHERE REGEXP_LIKE(value, '[0123]?\d\.[01]?\d\.\d{2,4}') Dvě stejné číslice za sebou SELECT value FROM eav_string WHERE REGEXP_LIKE(value, '(\d)\1') Daniel Klimeš, Databázové systémy a SQL

Extrakce řetězce Extrakce subřetězce: REGEXP_SUBSTR(sloupec, pattern, hledat_od, vyskyt, modifikator) Extrakce pozice subřetězce: REGEXP_INSTR(sloupec, pattern, hledat_od, vyskyt, navratova_hodnota, modifikator) Hledat_od – pořadí znaku, od kterého hledat, 1 = od začátku (default) Vyskyt – kolikátý výskyt vrátit, 1 = první (default) Modifikátor – c = case sensitive, i= case insensitive Návratová_hodnota – 0 = vrátí pořadí prvního znaku nalezeného vzoru, 1 = vrátí pořadí prvního znaku za nalezeným vzorem Daniel Klimeš, Databázové systémy a SQL

Extrakce a konverze SELECT REGEXP_SUBSTR(value, '[0123]?\d\.[01]?\d\.\d{2,4}') FROM eav_string WHERE REGEXP_LIKE(value, '[0123]?\d\.[01]?\d\.\d{2,4}') Konverze na datum: SELECT TO_DATE(datum, 'dd.mm.yyyy') FROM ( SELECT REGEXP_SUBSTR(value, '[0123]?\d\.[01]?\d\.\d{2,4}') datum FROM eav_string WHERE REGEXP_LIKE(value, '[0123]?\d\.[01]?\d\.\d{2,4}')) Pokus o konverzi může selhat, pokud nejde o platné datum ORACLE nemá funkci, která by testovala, zda lze text konvertovat na datum, ale… Daniel Klimeš, Databázové systémy a SQL

Uživatelská funkce CREATE OR REPLACE FUNCTION STUDENT.jetodatum (p_str IN VARCHAR2 ,format_datumu IN VARCHAR2) RETURN DATE IS BEGIN RETURN TO_DATE(p_str, format_datumu); EXCEPTION WHEN OTHERS THEN RETURN NULL; END; / PLSQL procedura/funkce může obsahovat blok výjimek (exception) , který odchytává chyby při běhu programu Daniel Klimeš, Databázové systémy a SQL

Použití uživatelské funkce SELECT TO_DATE(datum, 'dd.mm.yy'), value FROM ( SELECT REGEXP_SUBSTR(value, '[0123]?\d\.[01]?\d\.\d{2,4}') datum, value FROM eav_string WHERE REGEXP_LIKE(value, '[0123]?\d\.[01]?\d\.\d{2,4}')) WHERE jetodatum(datum, 'dd.mm.yyyy') IS NOT NULL Lépe zpracovat zvlášť dvojciferné a 4-ciferné roky SELECT REGEXP_SUBSTR(REGEXP_SUBSTR(value, '[0123]?\d\.[01]?\d\.\d{2}(\D|$)'),'[0123]?\d\.[01]?\d\.\d{2}'), value FROM eav_string WHERE REGEXP_LIKE(value, '[0123]?\d\.[01]?\d\.\d{2}(\D|$)'); SELECT REGEXP_SUBSTR(value, '[0123]?\d\.[01]?\d\.\d{4}'), value FROM eav_string WHERE REGEXP_LIKE(value, '[0123]?\d\.[01]?\d\.\d{4}'); Daniel Klimeš, Databázové systémy a SQL

REGEXP_COUNT, REGEXP_REPLACE Vrací počet výskytů vzoru: REGEXP_COUNT(sloupec, pattern, hledat_od, modifikator) SELECT REGEXP_COUNT(value, '[0123]?\d\.[01]?\d\.\d{4}') datum, value FROM eav_string WHERE REGEXP_LIKE(value, '[0123]?\d\.[01]?\d\.\d{4}') Nahrazení nalezeného vzoru za jiný text: REGEXP_REPLACE(sloupec, pattern,novy_text, hledat_od, vyskyt, modifikator) vyskyt – kolikátý výskyt nahradit, 0 = všechny SELECT REGEXP_REPLACE(value, '([0123]?\d)\.([01]?\d)\.(\d{4})', '\3-\2-\1') datum, value FROM eav_string WHERE REGEXP_LIKE(value, '[0123]?\d\.[01]?\d\.\d{4}') Daniel Klimeš, Databázové systémy a SQL

FIREBIRD – testovací databáze Tabulka Pacienti ID Jmeno Datum_narozeni Pohlavi Tabulka Vysetreni ID_vysetreni ID Datum_vysetreni Typ_vysetreni Vysledek Minulé cvičení: Vytvořte skript, který Vytvoří tabulku „prvni_vysetreni“ – sloupce ID, Jmeno, Datum_narozeni, Pohlavi, Datum_vysetreni, typ vysetreni, vysledek Přenese první vyšetření každého pacienta (podle datumu vyšetření) ze spojených tabulek Pacienti, Vysetreni do této nové tabulky Smaže všechny muže Změní výsledek 0 u všech záznamů na 1 Daniel Klimeš, Databázové systémy a SQL

FIREBIRD – testovací databáze CREATE TABLE prvni_vysetreni ( ID Integer, Jmeno varchar(30), Datum_narozeni timestamp, Pohlavi char(1) , Datum_vysetreni timestamp, Typ_vysetreni smallint, Vysledek smallint ); INSERT INTO prvni_vysetreni (ID, Jmeno, Datum_narozeni, Pohlavi, Datum_vysetreni, typ_vysetreni, vysledek) SELECT p.ID, p.Jmeno, p.Datum_narozeni, p.Pohlavi, v.Datum_vysetreni, v.typ_vysetreni, v.vysledek FROM pacienti p, vysetreni v WHERE p.id = v.id AND NOT EXISTS ( SELECT * FROM vysetreni v2 WHERE v2.id = v.id AND v2.datum_vysetreni < v.datum_vysetreni); DELETE FROM prvni_vysetreni where pohlavi = 'M'; UPDATE prvni_vysetreni SET vysledek = 1 WHERE vysledek = 0; Daniel Klimeš, Databázové systémy a SQL