Slidy ke cvičení DBI026, část 1

Slides:



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

MS ACCESS - DOTAZY DATABÁZOVÉ SYSTÉMY.
VISUAL BASIC Práce s řetězci Použitá literatura: Kvoch: Visual Basic 4.
Vlastní skript může být umístěn: v hlavičce stránky v těle stránky
Ing. David Pejčoch Tutorial
Tabulky v MS ACCESS Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Mgr. Jiří Novák.
Tabulkové procesory (MS Excel)
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í.
Vytváření, použití dávkových souborů
Fakulta elektrotechniky a informatiky
Klávesnice pc Mgr. Jan Fojtík Hardware F_21.
Informatika pro ekonomy II přednáška 11
Databázové systémy 1 Cvičení č. 2 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Programování v C++ Cvičení.
Temporální databáze a TSQL
Programování v Pascalu Přednáška 7
Radek Špinka Přepínače MSSQL výběr.
( vstupy a výstupy v Matlabu na konzolu [ do Command Windows]
Vzdělávací materiál / DUMVY_32_INOVACE_02B14 Příkazový řádek: obsah souborů PŘÍKLADY AutorIng. Petr Haman Období vytvořeníLeden 2013 Ročník / věková kategorie3.
PHP PHP – základy syntaxe (část 1) - 03 Mgr. Josef Nožička IKT PHP
Vzdělávací materiál / DUMVY_32_INOVACE_02B10 Příkazový řádek: úvod AutorIng. Petr Haman Období vytvořeníListopad 2012 Ročník / věková kategorie3. ročník.
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.
Caché Security. Jak vypadá zabezpečení dnes Jak bude vypadat a co by Caché měla umět v budoucnu Včera, dnes a zítra.
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Databázové systémy 2 Cvičení č. 7 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Základy práce na PC Ing. Jan Roubíček.
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
PHP – Základy programování
Shell Team Jan Kupka Petr Kykal Tomáš Paríšek si Vám dovoluje představit
Datové typy a práce s nimi
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.
Fakulta elektrotechniky a informatiky
Návrh a tvorba WWW Cvičení 4
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Tento výukový materiál vznikl v rámci Operačního programu Vzdělávání pro konkurenceschopnost Číslo projektu: CZ.1.07/1.5.00/ Číslo materiálu: VY_32_INOVACE_PSK-4-09.
Databázové systémy I Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
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.
Databázové systémy II Cvičení č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Programovací jazyk Haskell doc. Dr. Ing. Miroslav Beneš  katedra informatiky, A-1007 
UNIX Shell skripty Roman Danel VŠB TU Ostrava, Hornicko – geologická fakulta.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Aplikační a programové vybavení
Základní obeznámení s jazykem SQL Databázové systémy.
Práce s řetězci Řetězec je libovolný text nebo libovolná skupina znaků. Řetězec se také označuje jako string. Činnosti prováděné s řetězci: Počítání znaků.
VISUAL BASIC PRALG.
Úvod do UNIXu (4 th round) David Hoksza (většina sekce o vi a obrázek na slidu 7 převzat od Libora Forsta –
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.
Balíky Hlavní balík - main - zatím jsme s jiným nepracovali Rozdělují tzv. namespaces = množiny jmen pro proměnné $lemma = "cukr"; znamená $main::lemma.
Operační systém UNIX Příkazové prostředí UNIXu: příkaz [argumenty] [jméno] Ve jménech příkazů a parametrech se rozlišují malá a velká písmena.
Fce VB - matematické Abs( výraz ) Fix( výraz ) Int( výraz) Sgn(výraz )
Batové dávky Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Vojtěch Mrózek. Dostupné z Metodického portálu ISSN: ,
Import dat Access (16). Projekt: CZ.1.07/1.5.00/ OAJL - inovace výuky Příjemce: Obchodní akademie, odborná škola a praktická škola pro tělesně.
Makra v Excelu syntaxe. Zápis nahraného makra SubEnd Sub O klíčová slova Sub a End Sub – začátek a konec makra O komentáře O text za znakem ', až do konce.
Databáze MS ACCESS 2010.
Databázové systémy a SQL
Výukový materiál zpracován v rámci projektu
Funkce výstupu (2) Funkce printf: deklarována v: stdio.h
Databázové systémy a SQL
Databázové systémy a SQL
Databázové systémy a SQL
Programovací jazyk Haskell
Přednáška 9 Triggery.
Databázové systémy a SQL
Transkript prezentace:

Slidy ke cvičení DBI026, část 1 Databázové Aplikace Slidy ke cvičení DBI026, část 1 KSI MFF UK http://www.ms.mff.cuni.cz/~kopecky/vyuka/dbapl/ Verze 05.11.02.16.15

DBI026 -DB Aplikace - MFF UK Oracle @ MFF mates.ms.mff… Linux Server mates.ms.mff.cuni.cz Databáze devitka (9.2.0) Klienti Linux (9.2.0) Laboratoř UW1 Klienti Win32 (8.0.5, 9.2.0) Laboratoř US1 (u-pl*) Klienti Linux (8.1.5) devitka TCP/IP UW1 u-pl*.ms.mff… DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Oracle @ MFF - Výhled mates.ms.mff… Linux Server mates.ms.mff.cuni.cz Databáze devitka (9.2.0) Databáze desitka (10.x) Klienti Linux (9.2.0, 10.x) Laboratoř UW1 Klienti Win32 (9.2.0, 10.x) Laboratoř US1 (u-pl*) Klienti Linux (10.x) devitka desitka TCP/IP UW1 u-pl*.ms.mff… DBI026 -DB Aplikace - MFF UK

Konfigurace prostředí – UW1 Podle verze klientských aplikací N:\WINDOWS\ORANT\8_0_5\ N:\WINDOWS\ORANT\9_2_0\ (doporučeno) Spustit .\!ORACLE.REG Registruje nastavení prostředí v registru HKEY_CURRENT_USER\SOFTWARE\ORACLE .\!MENU\ Obsahuje odkazy na spustitelné aplikace (dále jen menu) DBI026 -DB Aplikace - MFF UK

Konfigurace prostředí – u-pl* Do spouštěcího (nebo samostatného) skriptu vložit ORACLE_BASE=/DB/oracle export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/8.1.5 # resp. ORACLE_HOME=$ORACLE_BASE/product/current export ORACLE_HOME TWO_TASK=devitka export TWO_TASK PATH=$ORACLE_HOME/bin:$PATH export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:$HOME/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH Samostatný skript spustit v aktuálním shellu pomocí . jméno_skriptu DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK SQL konzola SQL*Plus Základní prostředek pro komunikaci s databází Spuštění Windows Zástupce v menu „SQL Plus“, resp. „SQL Plus Home“ (druhý zástupce má jako pracovní nastaven adresář J:\) .\BIN\PLUS32W.EXE [jméno][/heslo][@jm_db] Spuštění Linux sqlplus [jméno][/heslo][@jm_db] uvádění hesla na příkazové řádce není doporučeno, lze zjistit příkazem ps DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK SQL konzola SQL*Plus Přihlašovací řetězec definuje jméno databáze V UW1 je přednastavena „devitka“ DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Příkazy v SQL*Plus SQL*Plus příkazy Vykonávané konzolou, mění její nastavení Jednořádkové, ukončené ENTER, nemusí se ukončit středníkem Zápis na více řádek pomocí rozdělovníku - na konci řádku SQL příkazy Vykonávané serverem Víceřádkové, ukončené středníkem Nemůže obsahovat prázdný řádek, zadání prázdného řádku ukončí zápis příkazu bez jeho odeslání na server DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Příkazy v SQL*Plus CASE insensitive, vyjma Řetězcových konstant v apostrofech ’Text’, ’TEXT’ , ’text’ , ’TeXt’ jsou navzájem různé Identifikátorů v uvozovkách ”Osoba”, ”OSOBA” , ”osoba” , ”OSoba” jsou navzájem různé identifikátory Osoba, OSOBA , osoba , OSoba jsou shodné s identifikátorem ”OSOBA” DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK SQL*Plus příkazy EXIT, QUIT Ukončení konzoly, běžící transakce je potvrzena DISCONNECT Odpojení od databáze bez ukončení konzoly, běžící transakce je potvrzena CONNECT (Odpojení a) nové připojení k databázi DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK SQL*Plus příkazy SHOW {ALL|parametr} Zobrazení hodnoty parametru konzoly, případně všech parametrů SET parametr hodnota Nastavení hodnoty parametru konzoly DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK SQL*Plus příkaz SET SET LINESIZE n Šířka výstupu ve znacích. SET PAGESIZE n Nastavení výšky stránky v řádcích. SET PAUSE {OFF|ON} Před výstupem každé stránky (i první) počkat na ENTER. SET TRIMSPOOL {OFF|ON} Výstup ořezává všechny mezery zprava na řádce. Důležité při výstupu do souboru, jinak mají řádky velikost LINESIZE. DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK SQL*Plus příkaz SPOOL SPOOL soubor[.lst] Zapnutí spoolování výstupu do souboru. Před zapnutím vhodné zapnout přepínač TRIMSPOOL SPOOL OFF Vypnutí spoolování výstupu do souboru. SPOOL Zjištění stavu spoolování DBI026 -DB Aplikace - MFF UK

SQL*Plus příkaz DEFINE DEFINE proměnná=hodnota Nastavení proměnné prostředí SQL*Plus na danou hodnotu &proměnná Použití proměnné v příkazech, pokud je hodnota nedefinovaná, konzola se na hodnotu zeptá Nahrazení probíhá i v řetězcích &&proměnná Použití proměnné v příkazech, pokud je hodnota nedefinovaná, konzola se na hodnotu zeptá a nadefinuje ji DBI026 -DB Aplikace - MFF UK

SQL*Plus příkaz DEFINE DEFINE _editor=editor.exe Nastavení standardního editoru, používaného v konzoli Předdefinovaný editor notepad.exe pro Windows ed (!) pro UNIX V UNIXu vhodné proměnnou předefinovat define _editor=vi define _editor=joe … DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Editor v SQL*Plus Konzola si pamatuje poslední zadaný SQL (ne SQL*Plus) příkaz a umožňuje ho měnit pomocí editoru EDIT Volání externího editoru definovaného proměnnou _editor Příkazy vestavěného (velmi omezeného) editoru R[UN] Spuštění posledního (případně editorem změněného) SQL příkazu DBI026 -DB Aplikace - MFF UK

Vestavěný editor v SQL*Plus L[IST] [m[ n]] Výpis všech / m-tého / intervalu řádek Poslední vypsaný řádek je označen znakem „*“ změny pomocí vestavěného editoru se budou týkat tohoto řádku C[HANGE]/vzor/náhrada/ Nahrazení prvního výskytu vzoru náhradním řetězcem Lomítka tvoří oddělovače, mohou být nahrazeny libovolným jiným znakem A[PPEND] text Doplnění textu na konec řádky První mezera tvoří oddělovač, zbytek se připojuje DBI026 -DB Aplikace - MFF UK

Vestavěný editor v SQL*Plus I[NSERT] 1. řádek 2. řádek  Vložení nových řádek za aktivní řádek označený hvězdičkou DEL[ETE] [m[ n]] Smazání aktivního / m-tého / intervalu řádek DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK SQL skripty Textový soubor, obsahující sadu SQL a SQL*Plus příkazů Obvykle s koncovkou .sql LOAD soubor[.sql] Nahrání skriptu s jedním SQL příkazem START soubor[.sql] @soubor[.sql] Spuštění skriptu Při spouštění konzola hledá a spouští skript login.sql, V něm je možné nadefinovat potřebné nastavení konzole Poziční parametry &1, …, &9. Jsou globální, jakékoli volání skriptu je redefinuje DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Komentáře v SQL Jednořádkové komentáře, uvozené dvojznakem -- SELECT rc, -- rodné číslo dn, -- datum narození … Víceřádkové komentáře, uzavřené mezi /* a */ /* Seznam všech zaměstnanců pobírajících přídavky na děti */ SELECT * FROM Zam WHERE …; Za ukončovacím středníkem nesmí být na řádce komentář, jinak SQL*Plus nepoznají konec příkazu DBI026 -DB Aplikace - MFF UK

SELECT příkaz Vestavěné funkce a operátory Oracle Úvod do Oracle SQL SELECT příkaz Vestavěné funkce a operátory Oracle

DBI026 -DB Aplikace - MFF UK Demonstrační tabulky Tabulky EMP (Employee) DEPT (Department) Používané v dokumentaci i v řadě příkladů Lze je vytvořit spuštěním skriptu @?\sqlplus\demo\demobld.sql DBI026 -DB Aplikace - MFF UK

SQL*Plus Příkaz DESCRIBE Získání stručného popisu objektu v databázi DESC[RIBE] název_objektu DESC EMP DESC DEPT … DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK TABULKA DUAL Speciální tabulka s jediným sloupcem DUMMY, obsahující jedinou řádku s hodnotou ’X’ Používá se pro získání hodnoty výpočtu nad konstantami a funkcemi bez parametrů Zaručuje návrat právě jedné řádky s výsledkem Například SELECT 1+1 FROM DUAL; SELECT SysDate, User FROM DUAL; DBI026 -DB Aplikace - MFF UK

Vestavěné funkce Oracle Několik hlavních skupin funkcí Číselné (číslo  číslo) Řetězcové Datumové Konverzní Speciální DBI026 -DB Aplikace - MFF UK

Vestavěné číselné funkce Oracle Obvyklé funkce známé z jiných programovacích jazyků SIN(x), COS(x), … ABS(x), SQRT(x), SIGN(x), … MOD(x,y) ROUND(x) (matematické zaokrouhlování) TRUNC(x) (zaokrouhlování dolů) … DBI026 -DB Aplikace - MFF UK

Vestavěné řetězcové funkce Oracle CONCAT(s1,s2) , operátor || Řetězení, obvykle se téměř výhradně používá přehlednější zápis pomocí operátoru SELECT Concat(’polo’,’vina’) FROM DUAL; SELECT ’tře’||’ti’||’na’ FROM DUAL; DBI026 -DB Aplikace - MFF UK

Vestavěné řetězcové funkce Oracle LENGTH(s) Délka řetězce SUBSTR(s, n[, k]) Podřetězec od n-tého znaku (počítáno od jedné) o délce k znaků, resp. do konce řetězce Pokud je n záporné, počítá se n-tý znak od konce SUBSTR(’babička’,3,3)  ’bič’ SUBSTR(’babička’,-3,1)  ’č’ DBI026 -DB Aplikace - MFF UK

Vestavěné řetězcové funkce Oracle INSTR(Txt, Vzor[, n[, k]]) Pozice k-tého výskytu Vzoru v textu, počínaje n-tým znakem. Pokud je n záporné, počítá se n-tý znak od konce INSTR(’babička’,’bič’)  3 INSTR(’babička’,’a’)  2 INSTR(’babička’,’a’,4)  7 INSTR(’babička’,’a’,1,2)  7 INSTR(’babička’,’a’,3,2)  0 DBI026 -DB Aplikace - MFF UK

Vestavěné řetězcové funkce Oracle UPPER(s), LOWER(s) Převod na velká, resp. malá písmena INITCAP(s) První Písmeno Každého Slova Velké, Ostatní Písmena Malá DBI026 -DB Aplikace - MFF UK

Vestavěné řetězcové funkce Oracle LTRIM(Txt [,Znaky]) Z řetězce Txt odřízne zleva všechny znaky, nacházející se v řetězci Znaky Standardně ořezává mezery LTRIM(’babička’,’abc’)  ’ička’ RTRIM(Txt [,znaky]) Totéž zprava RTRIM(’babička’,’abc’)  ’babičk’ TRIM(Txt [,znaky]) Totéž oboustranně DBI026 -DB Aplikace - MFF UK

Vestavěné řetězcové funkce Oracle LPAD(Txt, n, [,Vzor]) Doplňuje zleva řetězec Txt na celkovou délku n znaků. Pro doplňování používá cyklicky znaky z řetězce Vzor. Standardně doplňuje mezery. LPAD(’ička’,7,’ba’)  ’babička’ RPAD(Txt, n, [,Vzor]) Totéž zprava DBI026 -DB Aplikace - MFF UK

Vestavěné řetězcové funkce Oracle REPLACE(Txt, Vzor, Náhrada) Nahradí všechny výskyty vzoru v textu Txt. REPLACE(’babička’,’ba’,’kra’)  ’krabička’ REPLACE(’babička’,’a’,’(a)’)  ’b(a)bičk(a)’ DBI026 -DB Aplikace - MFF UK

Vestavěné řetězcové funkce Oracle TRANSLATE(Txt, Vzor, Náhrada) Nahradí v textu všechny výskyty znaků ze Vzoru pozičně odpovídajícími znaky Náhrady. Pokud je náhrada kratší, znaky bez náhrady se odstraňují TRANSLATE(’babička’,’aei’,’AEI’)  ’bAbIčkA’ TRANSLATE(’babička’,’aei’,’AE’)  ’bAbčkA’ DBI026 -DB Aplikace - MFF UK

Vestavěné řetězcové funkce Oracle TRANSLATE(Txt, Vzor, Náhrada) Vhodné na ověřování formátu dat TRANSLATE(r_cislo, ’0123456789’,’9999999999’) vrací pro korektní r.č. ’999999/999’ nebo ’999999/9999’ DBI026 -DB Aplikace - MFF UK

Vestavěné datumové funkce Oracle SYSDATE Aktuální datum a čas na serveru D + n Datum D plus n dní SELECT SYSDATE + 18/24 FROM DUAL; O 18 hodin více D2 – D1 Rozdíl mezi daty ve dnech DBI026 -DB Aplikace - MFF UK

Vestavěné datumové funkce Oracle ADD_MONTHS(D,n) O n měsíců později ADD_MONTHS(’30.1.2005’,1)  ’28.2.2005’ ADD_MONTHS(’30.1.2005’,2)  ’30.3.2005’ LAST_DAY(D) Poslední den v měsíci k datu D LAST_DAY(’30.1.2005’)  ’31.1.2005’ NEXT_DAY(D,název) Datum prvního dne s daným názvem po datu D NEXT_DAY(’30.1.2005’,’monday’)  ’31.1.2005’ NEXT_DAY(’30.1.2005’,’sunday’)  ’6.2.2005’ DBI026 -DB Aplikace - MFF UK

Vestavěné datumové funkce Oracle TO_CHAR(D[, Maska]) Datum D převedené na textový formát dle masky DD – den 1..31 MM – měsíc 1..12 YY, YYY, YYYY – rok na 2, 3, 4 cifry HH, HH24 – hodina 0..12, resp. 0..23 MI – minuta 0..59 SS – sekunda 0..59 Mon, MON, mon, Month, MONTH, month – měsíc zkratkou, slovem D – den v týdnu 0..6, resp. 1..7 podle kalendáře DDD – den v roce 1..366 TH – předchozí číslo je s pořadovou koncovkou (anglickou) SP – předchozí číslo je zapsáno slovy (anglicky) … – řada dalších TO_CHAR(SYSDATE,’dd.mm.yyyy hh24:mi:ss’)  ’02.03.2005 07:47:12’ DBI026 -DB Aplikace - MFF UK

Vestavěné speciální funkce Oracle USER Jméno přihlášeného uživatele ROWNUM V SELECT klauzuli pořadové číslo řádky na výstupu Vyhodnocuje se dříve než ORDER BY klauzule! SELECT ROWNUM, ENAME FROM EMP WHERE ROWNUM<=5 DBI026 -DB Aplikace - MFF UK

Relační model Oracle SQL Vytváření tabulek a pohledů Integritní omezení Aktualizace dat

DBI026 -DB Aplikace - MFF UK Vytváření tabulek CREATE TABLE jm_tab ( jm_sloupce typ [(velikost)] [omezení], …, omezení_řádky, … ); CREATE TABLE Osoba ( rc varchar2(11) CONSTRAINT Osoba_PK PRIMARY KEY, jmeno varchar2(50) NOT NULL ); DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Vytváření tabulek CREATE TABLE jm_tab AS SELECT …; CREATE TABLE OsobaX AS SELECT * FROM Osoba WHERE jmeno>=’X’; Takto vytvořená tabulka nemá definovaná žádná integritní omezení, (ani primární klíč) Nutno doplnit DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Integritní omezení [CONSTRAINT jméno] definice_omezení NULL, resp. NOT NULL UNIQUE PRIMARY KEY CHECK (podmínka) REFERENCES tabulka(sloupec) [ON DELETE {CASCADE|SET NULL}] DEFAULT hodnota DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Datový slovník Informace o tabulkách jsou uloženy v USER_OBJECTS (seznam všech vlastních objektů) USER_TABLES (seznam tabulek) USER_TAB_COLUMNS (seznam sloupců tabulek) USER_CONSTRAINTS (seznam omezení) DBI026 -DB Aplikace - MFF UK

Řádková integritní omezení Mohou kontrolovat vzájemný vztah více sloupců jednoho řádku CHECK (zacatek <= konec) Mohou definovat vícesloupcové primární a kandidátní a cizí klíče PRIMARY KEY (zacatek, konec) FOREIGN KEY (zacatek, konec) REFERENCES Rodic (x, y) DBI026 -DB Aplikace - MFF UK

Atributy integritních omezení ENABLED / DISABLED Omezení je aktivní a platnost se ověřuje ALTER TABLE tabulka {ENABLE|DISABLE} CONSTRAINT omezení; DEFERRED / NOT DEFERRED MODIFY CONSTRAINT omezení [[NOT] DEFERRABLE] [INITIALLY {IMMEDIATE|DEFERRED}]; Ověření se odloží/neodloží na konec transakce DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Vkládání dat INSERT INTO tabulka [( sloupec1, sloupec2, …)] VALUES ( hodnota1, hodnota2, …); Pokud nejsou sloupce uvedeny, převezmou se všechny sloupce tabulky v pořadí dle definice Neuvedené sloupce budou inicializovány DEFAULT hodnotou DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Vkládání dat INSERT INTO tabulka [( sloupec1, sloupec2, …)] SELECT …; Pokud nejsou sloupce uvedeny, převezmou se všechny sloupce tabulky v pořadí dle definice Neuvedené sloupce budou inicializovány DEFAULT hodnotou DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Aktualizace dat UPDATE tabulka SET sloupec1=hodnota1, … [WHERE podmínka]; Pokud není podmínka definována, aktualizují se všechny řádky DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Rušení dat DELETE FROM tabulka [WHERE podmínka]; Pokud není podmínka definována, ruší se všechny řádky! DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Rušení tabulky DROP TABLE tabulka [CASCADE CONSTRAINTS]; Provádí automaticky potvrzení transakce S klauzulí CASCADE CONSTRAINTS zruší cizí klíče od podřízených tabulek DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Změna definic ALTER TABLE tabulka ADD ( definice sloupce | omezení, … ); ALTER TABLE tabulka DROP COLUMN sloupec; ALTER TABLE tabulka DROP CONSTRAINT omezení; ALTER TABLE tabulka MODIFY redefinice sloupce; DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Pohledy Pojmenované dotazy Skrývání dat (řádků či sloupců) před uživateli Zjednodušování dotazů. CREATE [OR REPLACE] VIEW Pohled [(sloupec1, …)] AS SELECT [WITH {READ ONLY | CHECK OPTION}]; WITH READ ONLY: Pohled nelze aktualizovat WITH CHECK OPTION: Pohled lze aktualizovat pouze tak, aby řádky stále patřily do pohledu DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Pohledy DROP VIEW Pohled; ALTER VIEW Pohled COMPILE; Informace o pohledech jsou uloženy v USER_VIEWS USER_TAB_COLUMNS USER_UPDATABLE_COLUMNS DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Synonyma Alternativní názvy pro již existující objekty (tabulky, pohledy, synonyma, …) CREATE [PUBLIC] SYNONYM nové_jméno FOR [schema.]staré_jméno; Všechny dotazy a manipulace s daty prostřednictvím identifikátoru nové_jméno jsou ekvivalentní příkazům používajícím staré_jméno DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Synonyma DROP [PUBLIC] SYNONYM nové_jméno; Informace o synonymech jsou uloženy v USER_SYNONYMS DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Funkce a NULL hodnoty Většina funkcí, dostanou-li za některý parametr NULL, vrací NULL Oracle: v řetězcových fcích i jinde (NULL ~ ’’) ’Jan’||NULL||’ ’||NULL||’Novák’’Jan Novák’ Bohužel odchylka od ANSI, kde NULL má být disjunktní od libovolné platné hodnoty jakéhokoli typu Ve speciálních funkcích se s NULL hodnotami počítá NVL, NVL2 a COALESCE DECODE DBI026 -DB Aplikace - MFF UK

Funkce NVL, NVL2 a COALESCE NVL(výraz, if_null_hodnota) Oracle SQL - pokud je výraz NULL, vrací druhý argument, jinak vrací výraz NVL2(výraz, if_null, if_not_null) Oracle 9+ SQL - pokud je výraz NULL, vrací druhý argument, jinak třetí argument COALSECE(výraz1, výraz2, …) ANSI SQL, Oracle 9+ SQL, vrací první definovaný výraz ze seznamu DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Agregační funkce AVG(x), SUM(x), MIN(x), MAX(x), COUNT(DISTINCT x) NULL hodnoty se neuvažují COUNT(x) NULL hodnoty se korektně započítají DBI026 -DB Aplikace - MFF UK

Funkce LEAST a GREATEST LEAST(výraz1, výraz2, …) Akceptuje různé datové typy Vrací hodnotu nejmenšího uvedeného výrazu NULL hodnota v seznamu má za následek výsledek NULL GREATEST(výraz1, výraz2, …) Vrací hodnotu největšího uvedeného výrazu DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Funkce DECODE DECODE(výraz, vzor1, hodnota1, … [, default]) Oracle SQL, pokud je výraz roven i-tému vzoru, je výsledkem i-tá hodnota, jinak default, případně NULL Vzorem může být i NULL hodnota Dekódování SELECT DECODE(den,’S’,’Sobota’,’N’,’Neděle’,’Pracovní den’) Rozdělení jedné hodnoty do více sloupců SELECT Cena, Decode(DPH,5,Cena*0.05,NULL) Dph5, Decode(DPH,19,Cena*0.19,NULL) Dph19 FROM Prodej; DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Příklady Dána tabulka DBI026(Grupik VARCHAR2(100)) Data ve formátu ’Jmeno Prijmeni (login) …’ Napište dotaz, který vrátí seznam loginů SELECT Substr(Grupik, Instr(Grupik,’(’)+1, Instr(Grupik,’)’) - Instr(Grupik,’(’) – 1 ) Login FROM DBI026; DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Příklady Dána tabulka DBI026(Grupik VARCHAR2(100)) Data ve formátu ’Jmeno Prijmeni (login) …’ Napište dotaz, který vrátí seznam ve tvaru PŘÍJMENÍ Jméno, setříděný vzestupně SELECT Upper(Substr(Grupik,Instr(Grupik,’ ’)+1, Instr(Grupik,’(’)-Instr(Grupik,’ ’)–2) ||’ ’||Substr(Grupik,1,Instr(Grupik,’ ’)-1) PrJm FROM DBI026 ORDER BY PrJm; DBI026 -DB Aplikace - MFF UK

DBI026 -DB Aplikace - MFF UK Příklady Dána tabulka DBI026(Grupik VARCHAR2(100)) Data ve formátu ’Jmeno Prijmeni (login) …’ Vytvořte pohled, který bude obsahovat sloupec PrJm obsahující „PŘÍJMENÍ Jméno“ CREATE VIEW Student AS SELECT Upper(Substr(Grupik,Instr(Grupik,’ ’)+1, Instr(Grupik,’(’)-Instr(Grupik,’ ’)–2) ||’ ’||Substr(Grupik,1,Instr(Grupik,’ ’)-1) PrJm FROM DBI026; DBI026 -DB Aplikace - MFF UK