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