1 / 21

Architektury a techniky DS

Architektury a techniky DS. Cvičení č. 1 a 2 RNDr. David Žák, Ph.D . Fakulta elektrotechniky a informatiky david.zak @ upce.cz. Cíl cvičení. Konfigurace připojení k databázovému serveru Přístup k databázovému serveru přes VPN Práce s SQL Developerem

padma
Download Presentation

Architektury a techniky DS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Architektury a techniky DS Cvičení č. 1 a 2 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatikydavid.zak@upce.cz

  2. Cíl cvičení • Konfigurace připojení k databázovému serveru • Přístup k databázovému serveru přes VPN • Práce s SQL Developerem • Seznámení s tabulkou A_POPIS ve vzorových schématech • Rekurzivní příkazy

  3. Přístupová data na DS Oracle jméno serveru: SQL101.upceucebny.cz servicename / connectstring: oracle10 username: vaše_doménové_jméno (např. ST12345) password: při prvním přihlášení vaše_doménové_jméno velkými písmeny port: 1521 změna hesla ALTER USER st12345IDENTIFIED BY nove_heslo

  4. Připojení mimo síť Upce: • Přihlaste se na http://vpnc.upce.cz, použijte svůj účet ve tvaru stxxxxx@upce.cz, kde stxxxxx je vaše uživatelské jméno k systémům na síti Upce (knihovna, objednávky obědů, …). • Vyčkejte, příp. potvrďte nainstalování ActiveX (nebo Javového) appletu. • Aktivujte VPN připojení do sítě Upce. • Poté můžete využít některou z možností přístupu, např.: • SSH přístup na server a konzolu SQLplus • iSQLplus z WWW prohlížeče • SQL Developer

  5. iSQLplus Další možností je využití WWW prohlížeče pro práci s Oracle http://SQL101.upceucebny.cz:5560/isqlplus Možnosti: • nastavit vyšší šířku textového pole v Preferences • vložení skriptů s více SQL příkazy • přehledné zobrazení výsledků (s možností volby počtu řádků na stránku)

  6. SQL Developer Další možností je využití freeware aplikace SQL Developer • dobrý nástroj, má však určité nedostatky • je třeba být opatrný při práci v PL/SQL • pozor na aktualizace (neprovádí se automaticky) • přehledná struktura objektů • práce i přes menu (netřeba zadávat textové příkazy pro některé operace) http://www.oracle.com/technology/software/products/sql/index.html

  7. SQL Developer • Nástroj pro vizuální práci s databází • Obdoba je například • Toad for Oracle • Toad for MySQL 2.0 Freeware • vytváření databázových objektů (průvodci) • vkládání a editace dat • kompilace funkcí a procedur • zadávání SQL příkazů • reporty, grafické zobrazení výsledku

  8. SQL Developer - přehled

  9. SQL Developer – SQL worksheet

  10. SQL Developer – editace, kompilace

  11. Častý problém • z hlediska transakčního zpracování dat je vhodné provedené změny v databázi potvrdit příkazem COMMIT a to i v prostředí SQL Developeru (buď stiskem tlačítka COMMIT nebo zapsáním příkazu COMMIT) • jinak jde totiž o rozpracovanou transakci, která • zabírá systémové prostředky • je možné ji vrátit zpět příkazem rollback • pokud nebude ukončena, může dojít i k automatickému návratu zpět (tedy ztrátě změn provedených od minulého příkazu commit) například při nekorektním ukončení připojení k databázovému serveru

  12. Vzorová schémata • Na databázovém serveru je několik vzorových schémat, s nimiž budeme během semestru pracovat, tato schémata mají název „A_problematika“, např. A_CLOVEK • V těchto schématech je tabulka A_POPIS, která obsahuje • ve sloupci TEXT popis problematiky, která je v daném schématu řešena • ve sloupci ERD diagram ve formátu jpg souboru, který je možné zobrazit, případně i uložit

  13. Cvičení 1 – úvodní část Vyzkoušejte připojení k serveru Oracle prostřednictvím • SSH přístupu na server a konzoly SQLplus • iSQLplus z WWW prohlížeče • SQL Developeru Pro přihlášení používejte váš osobní účet.

  14. Cvičení 1 Úkoly: Máme dánu ve schématu A_CLOVEK tabulku: Lide = (Id, jmeno, prijmeni, narozen, pohlavi, Id_otce, Id_matky) • zjistěte, kolik dětí má otce s ID=2 a matku s ID=3 • zjistěte jména a příjmení všech vnoučat osoby Božena Malá • zjistěte počet vnoučat osoby Božena Malá • zjistěte průměrný počet dětí, které mají "plodné" páry (za pár uvažujte stejného otce a matku) • vypište počty dětí narozených v jednotlivých letech 2000 až 2005, uveďte i nulové hodnoty, pro řešení použijte PL/SQL – vytvořte proceduru narozeno_deti(od_roku, do_roku)

  15. Hierarchické dotazy v Oracle • SELECTsloupceFROMtabulka[WHEREpodmínka3]START WITH podmínka1CONNECT BYpodmínka2[ORDER BY…] • Řádky vyhovující podmínce ve START WITH jsou považovány za kořenové řádky na první úrovni vnoření (pseudo-sloupec LEVEL nabývá hodnoty 1) • Pro každou řádku na úrovni i se rekurzivně hledají přímí potomci vyhovující podmínce v klauzuli CONNECT BY na úrovni i+1 • Řádka předka se v podmínce označuje klíčovým slovem PRIOR • Na závěr jsou odstraněny řádky nevyhovující podmínce ve WHERE • Pokud není definováno třídění, odpovídá pořadí průchodu pre-order • Každý řádek obsahuje pseudo-sloupec LEVEL, obsahující úroveň řádku v hierarchii

  16. Příklad hierarchických dotazů SELECT ZAMESTNANEC_ID, JMENO, PRIJMENI, MANAZER_ID, LEVEL FROM A_HR.ZAMESTNANCI CONNECT BY MANAZER_ID = PRIOR ZAMESTNANEC_ID START WITH MANAZER_ID is null; • Sloupce, přes které je hierarchie provázána určuje klauzule CONNECT BY. Klauzule PRIOR říká, že se pole MANAZER_ID má porovnávat s polem ZAMESTNANEC_ID nadřízeného (tedy "předchozího") záznamu v hierarchii. • Klauzule START WITH definuje podmínku určující záznamy v první úrovni hierarchie. V tomto případě je nejvyšší manažer definován tak, že nemá vyplněné pole MANAZER_ID . Viz také např. http://www.dbsvet.cz/view.php?cisloclanku=2006060701

  17. Příklad hierarchických dotazů Pseudosloupec LEVEL určuje úroveň daného záznamu v hierarchii. Můžete jej mimo jiné jednoduše použít pro formátování výstupu: SELECT lpad(' ',level*3)||PRIJMENI||' '||JMENO name, ZAMESTNANEC_ID, MANAZER_ID, level FROM A_HR.ZAMESTNANCI CONNECT BY MANAZER_ID = PRIOR ZAMESTNANEC_ID START WITH MANAZER_ID is null ORDER SIBLINGS BY PRIJMENI; Uvedený příklad ukazuje způsob, jakým lze ovlivnit řazení záznamů na jednotlivých úrovních – jde o klauzuli ORDER SIBLINGS BY. Běžnou klauzuli ORDER BY provádí Oracle až úplně nakonec – tedy přes všechny záznamy, čímž by způsobila, že by již záznamy vizuálně netvořily hierarchii.

  18. Příklad hierarchických dotazů • SELECT lpad(' ',level*3)||PRIJMENI||' '||JMENO name, • ZAMESTNANEC_ID, MANAZER_ID, level • FROM A_HR.ZAMESTNANCI • CONNECT BY MANAZER_ID = PRIOR ZAMESTNANEC_ID • START WITH MANAZER_ID is null • ORDER SIBLINGS BY PRIJMENI;

  19. Doplnění hierarchických dotazů • Pro jednotlivé záznamy můžete také získat cestu od nejvyššího záznamu (jak to znáte třeba ze souborového systému) nebo řadu dalších informací: • Funkce SYS_CONNECT_BY_PATH vrací cestu v hierarchii k aktuálnímu záznamu. • Klauzule CONNECT_BY_ROOT vrací hodnotu z příslušného záznamu nejvyšší úrovně (tj. například nejvyššího manažera). • Pokud byste chtěli výstup z dotazu použít pro zobrazení ve formě rozbalovací hierarchie tak, jak to třeba dělá u souborů Windows Explorer, bude se vám hodit i pseudosloupec CONNECT_BY_ISLEAF, který určuje, zda je aktuální záznam na poslední úrovni hierarchie (CONNECT_BY_ISLEAF=1) nebo zda má podřízené záznamy (CONNECT_BY_ISLEAF=0).

  20. Příklad hierarchických dotazů • SELECT lpad(' ',level*3)||PRIJMENI||' '||JMENO name, • SYS_CONNECT_BY_PATH(PRIJMENI, '/') path, • CONNECT_BY_ROOT PRIJMENI topmgr, • CONNECT_BY_ISLEAF isleaf, • level • FROM A_HR.ZAMESTNANCI • CONNECT BY MANAZER_ID = PRIOR ZAMESTNANEC_ID • START WITH MANAZER_ID is null • ORDER SIBLINGS BY PRIJMENI;

  21. Cvičení 2 Úkoly: Máme dánu ve schématu A_CLOVEK tabulku: Lide = (Id, jmeno, prijmeni, narozen, pohlaví, Id_otce, Id_matky) Úkoly řešte • pomocí příkazu SELECT s klauzulí START WITH pro rekurzivní spojení • Pomocí PL/SQL – viz funkce níže pro příklad 2 bez využití rekurzivního SELECTu • zjistěte jména a příjmení všech dětí, vnoučat a pravnoučat osoby Božena Malá, u každé osoby uveďte vztah (dítě, vnouče, pravnouče) PL/SQL: procedura vypis_potomky(jmeno, prijmeni) • zjistěte, kolik dětí, vnoučat a pravnoučat má Božena Malá (výsledkem tohoto dotazu je více čísel podle vztahu)PL/SQL: procedura vypis_pocty_potomku(jmeno, prijmeni) Pro řešení vytvořte funkci: pocet_nasledniku(id_osoby IN INT, uroven IN INT)

More Related