Databázové systémy a SQL

Slides:



Advertisements
Podobné prezentace
Standardní knihovní funkce pro práci s textovými řetězci
Advertisements

Databázové systémy 2 Cvičení č. 8
KIV/ZIS Cvičení 6 SQL - SELECT.
VISUAL BASIC Práce s řetězci Použitá literatura: Kvoch: Visual Basic 4.
Tabulkové procesory (MS Excel)
Základy jazyka SQL Jan Tichava
Zpracování SQL Lubomír Andrle 5. přednáška
Programování funkcí v Excelu
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í
Opakování Co je výsledkem následujícího prográmku? my $a="kol"; my $b="o"; $a.= $b; $b.= $a; print "a = $a, b = $b\n"; Vkládání speciálních znaků? Uvozovací.
DB1 – 9. cvičení Optimalizace dotazu Konkurenční přístup a deadlock Indexace Transakce.
Fakulta elektrotechniky a informatiky
Co jsou to regulární výrazy?
Informační systémy Nástroje pro sběr dat, návrh a realizace databáze.
Výpočetní technika Akademický rok 2008/2009 Letní semestr Mgr. Petr Novák Katedra informatiky a geoinformatiky FŽP UJEP
53. Šrámkova Sobotka Sobotka 9. července 2009
Informatika pro ekonomy II přednáška 11
Databázové systémy 1 Cvičení č. 4 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
1 BUMI Úvod do medicínské informatiky Počítačové cvičení č. 3 Ing. Vratislav Čmiel.
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.
MySQL ÚVOD DO 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.
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Fakulta elektrotechniky a informatiky
Datové typy a práce s nimi
Návrh a tvorba WWW Přednáška 11
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 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.
SQL PVA Jan Hora. SQL „graficky“ Grafický vs. pravý SQL SELECT ORDED BY WHERE.
Čí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ý.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
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
UNIX — doplňky Informatika pro ekonomy II přednáška 9.
Informatika II PAA DOTAZOVACÍ JAZYKY
2OP483 Manažerská informatika 3Access - BankaSnímek 1 2OP483 Manažerská informatika 3 Microsoft Office Access 2007 Dotazy v databázi Banka
KIV/PPA1 cvičení 9 Cvičící: Pavel Bžoch. Osnova cvičení Třída String a její metody –Řetězce a operace s nimi.
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 SQL Výběr dat.
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.
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“ odkaz na další lišty.
ACCESS DOTAZY Ing. Jana Horáková IKT MS Office
Databázové systémy I Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2015.
Databázové systémy I Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Sed O co jde Regulární výrazy Příkazy Adresování Příklady Michal Trs,
Dynamická webová aplikace Autor:Ondřej Soukup Třída:I3.
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
Fulltextové vyhledávání
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
Databázové systémy a SQL
Databázové systémy a SQL
Knihovny.cz Vyhledávání patentových dokumentů
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 values LIKE '%\%%' ESCAPE '\'; Jednoznakové texty SELECT * FROM eav_string WHERE values LIKE ‘_’; Text podobný datumu kdekoliv v textu SELECT * FROM eav_string WHERE values 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 Daniel Klimeš, Databázové systémy a SQL

PostgreSQL https://www.postgresql.org/docs/current/static/functions-matching.html Operator Description Example ~ Matches regular expression, case sensitive 'thomas' ~ '.*thomas.*' ~* Matches regular expression, case insensitive 'thomas' ~* '.*Thomas.*' !~ Does not match regular expression, case sensitive 'thomas' !~ '.*Thomas.*' !~* Does not match regular expression, case insensitive 'thomas' !~* '.*vadim.*' WHERE sloupec ~ ‘vyraz’ SUBSTRING (string FROM pattern) REGEXP_REPLACE(string text, pattern text, replacementtext [, flags text]) Daniel Klimeš, Databázové systémy a SQL

ORACLE 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 values FROM eav_string WHERE values ~ '\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 values FROM eav_string WHERE values ~ '\d{1,2}\.\d{1,2}\.\d{2,4}' 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 values FROM eav_string WHERE values ~ '[0123]?\d\.[01]?\d\.\d{2,4}' Dvě stejné číslice za sebou (11, 22, 33,…) SELECT values FROM eav_string WHERE values ~ '(\d)\1\1' Daniel Klimeš, Databázové systémy a SQL

Extrakce řetězce Extrakce subřetězce: SUBSTRING (string FROM pattern) SELECT SUBSTRING (values from '[0123]?\d\.[01]?\d\.\d{2,4}'), values FROM eav_string WHERE values ~ '[0123]?\d\.[01]?\d\.\d{2,4}‘ --pouze první výskyt SELECT REGEXP_MATCHES (values, '[0123]?\d\.[01]?\d\.\d{2,4}', 'g'), values FROM eav_string --WHERE values ~ '[0123]?\d\.[01]?\d\.\d{2,4}‚ -- pro každý výskyt nový řádek SELECT REGEXP_MATCHES (values, '([0123]?\d\.[01]?\d\.\d{2,4}).*?([0123]?\d\.[01]?\d\.\d{2,4})'), values --dva výskyty => pole (array) Daniel Klimeš, Databázové systémy a SQL

Pole (array) Na položky se odkazujeme indexem v hranatých závorkách Index od 1 SELECT datumy, datumy[1] prvni_datum, datumy[2] druhe_datum FROM ( SELECT REGEXP_MATCHES (values, '([0123]?\d\.[01]?\d\.\d{2,4}).*?([0123]?\d\.[01]?\d\.\d{2,4})') datumy, values FROM eav_string ) a Daniel Klimeš, Databázové systémy a SQL

Extrakce a konverze Konverze na datum: SELECT TO_DATE(SUBSTRING (values from '[0123]?\d\.[01]?\d\.\d{4}'), 'dd.mm.yyyy'), values FROM eav_string WHERE values ~ '[0123]?\d\.[01]?\d\.\d{4}' Pokus o konverzi může selhat, pokud nejde o platné datum nebo… INSERT INTO eav_string (values) VALUES ('30.02.2016') SELECT TO_DATE (SUBSTRING (values from '[0123]?\d\.[01]?\d\.\d{4}'), 'dd.mm.yyyy'), values FROM eav_string WHERE values = '30.02.2016' Daniel Klimeš, Databázové systémy a SQL

Možné odhalení nežádoucích konverzí SELECT datum, s, TO_CHAR(datum, 'FMdd.FMmm.yyyy') bez_nul, TO_CHAR(datum, 'dd.mm.yyyy') plne, values FROM ( SELECT TO_DATE(SUBSTRING (values from '[0123]?\d\.[01]?\d\.\d{4}'), 'dd.mm.yyyy') datum, SUBSTRING (values from '[0123]?\d\.[01]?\d\.\d{4}') s, values FROM eav_string WHERE values ~ '[0123]?\d\.[01]?\d\.\d{4}' ) a WHERE s <> TO_CHAR(datum, 'FMdd.FMmm.yyyy') AND s <> TO_CHAR(datum, 'dd.mm.yyyy') Daniel Klimeš, Databázové systémy a SQL

REGEXP_REPLACE Nahrazení nalezeného vzoru za jiný text: REGEXP_REPLACE(sloupec, pattern, novy_text, modifikator) modifikator– ‘g’ = všechny výskyty SELECT REGEXP_REPLACE(values, '([0123]?\d)\.([01]?\d)\.(\d{4})', '\3-\2-\1') datum, values FROM eav_string WHERE values ~ '[0123]?\d\.[01]?\d\.\d{4}' Daniel Klimeš, Databázové systémy a SQL

Rozklad pomocí reg. výrazu SELECT foo FROM REGEXP_SPLIT_TO_TABLE('the quick brown fox jumps over the lazy dog', '\s+') AS foo; Daniel Klimeš, Databázové systémy a SQL

Greedy x non-greedy SELECT values, SUBSTRING(values from '\d.*\d') greedy, SUBSTRING(values, '\d.*?\d') non_greedy FROM eav_string WHERE values ~ '\d.*\d' Znak Význam * 0 – n opakování + 1 – n opakování ? 0 nebo 1 opakování {m,} m nebo více opakování {m,n} Minimálně m, maximálně n opakování Daniel Klimeš, Databázové systémy a SQL

Odkazy http://www.regularnivyrazy.info/ Jan Goyvaerts: Regulární výrazy Daniel Klimeš, Databázové systémy a SQL

Cvičení Obsahuje tabulka PSČ? Obsahuje tabulka Rodná čísla? Daniel Klimeš, Databázové systémy a SQL

SELECT values FROM eav_string WHERE values ~ '^[1-7]\d{2}\s?\d{2}\s*$' WHERE values ~ '^\d{6}/\d{4}' Daniel Klimeš, Databázové systémy a SQL