Databázové systémy a SQL

Slides:



Advertisements
Podobné prezentace
Fakulta elektrotechniky a informatiky
Advertisements

Informatika pro ekonomy II přednáška 11
Autor, Název akce Databázové systémy a SQL Lekce 7 Daniel Klimeš.
Fulltextové technologie a jejich využití v UIS Bc. Miroslav Prachař datamanagement
Školení MS Word 2007 pro začátečníky RNDr. Milan Zmátlo MěÚ Třebíč, říjen 2011 Vzdělávání v eGON centru Třebíč Tento.
Název školy: ZŠ A MŠ ÚDOLÍ DESNÉ, DRUŽSTEVNÍ 125, RAPOTÍN Název projektu: Ve svazkové škole aktivně - interaktivně Číslo projektu: CZ.1.07/1.4.00/
Tabulátory (20). Projekt: CZ.1.07/1.5.00/ OAJL - inovace výuky Příjemce: Obchodní akademie, odborná škola a praktická škola pro tělesně postižené,
ZÁKLADNÍ TYPOGRAFICKÁ PRAVIDLA Mgr. Petra Toboříková.
HTML (I) (2). Projekt: CZ.1.07/1.5.00/ OAJL - inovace výuky Příjemce: Obchodní akademie, odborná škola a praktická škola pro tělesně postižené,
Řetězce v jazyce C ● řetězec je posloupnost znaků ● řetězcové konstanty se v C vkládají mezi uvozovky, např. "Ahoj Hugo!" ● v paměti je řetězec uložen.
Projekt MŠMTEU peníze středním školám Název projektu školyICT do života školy Registrační číslo projektuCZ.1.07/1.5.00/ ŠablonaIII/2 Sada 37 AnotaceRegulátory.
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.
Kritéria dotazů II Access (10). Projekt: CZ.1.07/1.5.00/ OAJL - inovace výuky Příjemce: Obchodní akademie, odborná škola a praktická škola pro.
Databáze © Mgr. Petr Loskot
Úvod do databází MS Access (1).
Databázové systémy I Přednáška 7 Databázové systémy 1 – KIT/IDAS1
Základy automatického řízení 1
Dotazovací jazyk SQL I.
Projekt 1 Databázové systémy I
Dotazovací jazyk SQL - III
Databázové systémy a SQL
Databázové systémy a SQL
Databázové systémy a SQL
Sazba matematického textu
Úvod do databázových systémů
Název školy : Základní škola a mateřská škola,
ADT zásobník - příklad Prakticky aplikovatelný příklad využití ADT zásobník je vyhodnocování aritmetických výrazů v Postfixové notaci: Pro zápis aritmetických.
Databáze MS ACCESS 2010.
Název: Word pokračování DUM:VY_32_INOVACE_VII_3_04
Abstract Factory.
Databázové systémy a SQL
Název: Práce s tabulátory Autor: Hokr Jan
Databázové systémy a SQL
Databázové systémy a SQL
Formální úprava rešerše
Databázové systémy a SQL
Obsahuje asi 4,5 mil. bibliografických záznamů
SÁRA ŠPAČKOVÁ MARKÉTA KOČÍBOVÁ MARCELA CHROMČÁKOVÁ LUKÁŠ BARTOŠ B3E1
Vyhledávání je zaměřeno na informační zdroje z oblasti vědy, výzkumu a
Práce s textovými řetězci
Databázové systémy a SQL
Jak postupovat při měření?
Databázové systémy a SQL
MS Excel – příklady na databázové funkce
Aplikace vyhledávače Google na zdroje odborných informací
Počítačová cvičení z předmětu Datové sklady
ZÁKLADNÍ TYPOGRAFICKÁ PRAVIDLA
MU002 Informatika II Základy algoritmizace 2/13
Dotazovací jazyk SQL I.
Open Access Infrastructure for Research in Europe.
Možnost volby vyhledávacího pole
1.
Úvod do praktické fyziky
Dotazovací jazyk SQL - II
A5M33IZS – Informační a znalostní systémy
Vy_32_INOVACE_66_Číslovky
Přednáška 10 Uložené procedury.
Databázové systémy a SQL
Modely obnovy stárnoucího zařízení
M Nahraďte tento nápis vlastním textem. Vyberte písmeno a vložte vlastní text. Pro každý snímek použijte jeden znak.
Hudební databáze (Omezený počet souběžných přístupů.)
Moravská zemská knihovna v Brně
EBSCO - základní vyhledávání
Algoritmizace a datové struktury (14ASD)
Grafy kvadratických funkcí
Algoritmizace a datové struktury (14ASD)
Hromadné dokumenty opakující se pro kolekci osob
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Open Access Infrastructure for Research in Europe.
Transkript prezentace:

Databázové systémy a SQL Lekce 9 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í SELECT value FROM eav_string WHERE REGEXP_LIKE(value, 'operace','i') AND NOT REGEXP_LIKE(value, 'operace','c') 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 (11, 22, 33,…) 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

Greedy x non-greedy SELECT value, REGEXP_SUBSTR(value, '\d.*\d') greedy, REGEXP_SUBSTR(value, '\d.*?\d') non_greedy FROM eav_string WHERE REGEXP_LIKE (value, '\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

PostgreSQL C:\Program Files\PostgreSQL\9.1\doc\postgresql\html\functions-matching.html http://www.postgresql.org/docs/9.1/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.*' regexp_replace(string text, pattern text, replacementtext [, flags text]) Daniel Klimeš, Databázové systémy a SQL