1 / 35

Adatbázis használat I.

Adatbázis használat I. 3 . gyakorlat. Figyelem!!!. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele a minimum elégséges érdemjegynek!. Weboldalak. www.orakulum.com www.jerry.gorextar.hu /ab1 www.gorex.gorextar.hu /ab1

kayo
Download Presentation

Adatbázis használat I.

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. Adatbázis használat I. 3. gyakorlat

  2. Figyelem!!! A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele a minimum elégséges érdemjegynek!

  3. Weboldalak www.orakulum.com www.jerry.gorextar.hu/ab1 www.gorex.gorextar.hu/ab1 www.gazdinfo.hu

  4. Tábla létrehozása • Táblát a CREATE TABLE táblanév utasítással hozhatunk létre • Létező táblát pedig CREATE TABLE táblanév AS SELECT * FROM létezőtáblanév-el tudunk klónozni. • Törölni pedig a DROP TABLE táblanévvel tudunk

  5. Mezők frissítése • A rekordokban az egyes adatokat a következő utasítással frissíthetjük: UPDATE táblanév SET oszlopnév = újérték WHERE oszlopnév = aktuálisérték;

  6. Többtáblás lekérdezések

  7. Többtáblás lekérdezések • Táblákat összekapcsolhatunk FROM és WHERE utasításrészben vagy • FROM utasításrészben a JOIN segítségével

  8. JOIN • Fajtái • Inner • Azokat a sorokat (rekordokat) listázza ki, ahol az összekapcsoló oszlopnak mindkét táblában van értéke. • Left • Minden sort felsorol a bal oldali táblából, annak ellenére, hogy a jobb oldali táblában nincsen minden esetben megfelelő érték.

  9. JOIN • Fajtái • Right • A jobboldali rekordok közül mindet kilistázza még akkor is, ha a baloldalon nincs megfelelő elem. • Full • Mindent kilistázz a bal és a jobb oldalról is

  10. JOIN Használata:SELECT [Szelekciók]FROM tábla1 INNER/LEFT/RIGHT/FULL JOIN tábla2 ON összekötőfeltétel USING(oszlop1,oszlop2,stb)…

  11. Táblák összekapcsolása WHERE-el • A tábláknak is adhatunk másodlagos neveket • …FROM emp dolgozó …; • Gyakran szükség van rá, ha össze akarunk kapcsolni táblákat a WHERE-ben • Például: kérdezzük le a főnökökhöz tartozó beosztottak nevét

  12. Táblák összekapcsolása WHERE-el SELECT FROM tábla1, tábla2, és így továbbWHEREGROUP BYHAVINGORDER BY;

  13. Táblák összekapcsolása WHERE-el EMP és DEPT tábla összekapcsolása:Példa: SELECT a.ename, b.locFROM emp a, dept bWHERE a.deptno = b.deptno; avagy: SELECT ename, locFROM emp, deptWHERE emp.deptno = dept.depno;

  14. Hierarchialekérdezés (CONNET BY) • Segítségével olyan oszlopot hozhatunk létre, amelyből látszik a rekordok egymás alá való rendeltsége. • Általános alakja:SELECT … FROM tábla[WHERE …]CONNECT BY { PRIOR kifejezés = kifejezés vagy kifejezés = PRIOR kifejezés }[START WITH kifejezés = kifejezés][OREDER BY];

  15. Hierarchialekérdezés (CONNET BY) • Kulcsszavak jelentése: • LEVEL megadja, hogy az aktuálisan kilistázott elem a hierarchia mely szintjén található. • START WITH megadhatjuk hol honnét kezdjük a hierarchikus szerkezet feldolgozása • WHERE utasításnál nem tudunk szűrni elődöt és utódot csak konkrét sorokat • CONNECT BY utasításrészben megadott feltételt használjuk a sorok és leszármazottaik szűrésére • PIOR a bejárás szerinti szülőcsúcsot határozza meg

  16. Hierarchialekérdezés (CONNET BY) Példák • Az előző feladatot egészítsük ki, hogy lássuk ki milyen szinten van a cégnél. • Nézzük meg SMITH, hogy neki mennyit kell még előre lépni a létrán, hogy elnök legyen.

  17. Allekérdezés • Azokat a lekérdezéseket nevezzük allekérdezésnek, amelyeket nem jelenítünk meg, de valamilyen eredmény(eket) ad át egy külső utasítás számára. • A feldolgozás ilyenkor mindig belülről kifelé halad, azaz a legbelső SELECT értékelődik ki először. • Használható a FROM, WHERE, HAVING utasításrészekben.

  18. Allekérdezés (FROM-ban) • A FROM-on belüli allekérdezéstinline nézetnek szokás nevezni. • Ilyenkor a FROM-ban lévő SELECT-et másodlagos táblanévvel kell ellátni (lásd 9. dia)

  19. Allekérdezés (FROM-ban) • Példa: Mennyi a részlegenkénti maximumfizetések átlaga? Select AVG(inlinepelda.Maxfizu) as "Maximum átlag" from (SELECT deptnoasReszlegszam, MAX(sal+nvl(comm,0)) asMaxfizu fromemp groupbydeptno) inlinepelda;

  20. Allekérdezés (WHERBEN) • IN/NOT IN • IGAZ, ha szerepel az adott halmazban/ha nem • ANY • Ha a halmaz legalább egy eleme megfelel • ALL • Ha a halmaz összes eleme megfelel • EXISTS / NOT EXISTS • Ha a halmaz legalább egy elemet tartalmaz/Egyet sem

  21. Allekérdezés (WHERBEN) • IN/NOT IN • IGAZ, ha szerepel az adott halmazban/ha nem • ANY • Ha a halmaz legalább egy eleme megfelel • ALL • Ha a halmaz összes eleme megfelel • EXISTS / NOT EXISTS • Ha a halmaz legalább egy elemet tartalmaz/Egyet sem

  22. Allekérdezés (WHERBEN) • A WHERE-ben szereplő allekérdezéseknél, összehasonlító reláció esetén a bal oldalon mindig csak oszlopkifejezés állhat, jobb oldalon szerepelhet allekérdezés is zárójelek között „(” „)” Persze ezeknek összhangban kell lenniük.

  23. ALL / ANY Select * from emp where sal > ALL (Select sal from emp where sal between 1200 AND 2900); Select * from emp where sal > ANY (Select sal from emp where sal between 1200 AND 2900);

  24. Házi feladat Kérdezze le minden dolgozó nevét, jövedelmét, részlegének nevétés a részlegében dolgozók legkisebb és legnagyobb jövedelmét, végül pedig a dolgozó jövedelembeállási értékét (vagyis a jövedelmének és az iménti legkisebb értéknek különbségét). A lista legyen a jövedelembeállás alapján rendezve, és használjon másodlagos oszlopneveket.

  25. Házi feladat1. lépés feladat értelmezése Keressük meg a lekérdezéseket (általában valamilyen kötőszóval vannak összekapcsolva a feladatban is) Kérdezze le minden dolgozó nevét, jövedelmét, részlegének nevét (dept táblában a dname)és arészlegében dolgozók legkisebb jövedelmét, végül pedig a dolgozó jövedelembeállási értékét (jövedelmének és a legkisebb jövedelem különbségét). A lista legyen a név alapján rendezve, és használjon másodlagos oszlopneveket.

  26. Házi feladat2. lépés allekérdezés • A kidolgozás során mindig az allekérdezésselkezdjünk. • Arészlegében dolgozók legkisebb és legnagyobb jövedelmét SELECT MIN(sal+NVL(comm,0)) AS minimumfizetés,deptno AS részleg FROM empGROUP BY deptno;

  27. Házi feladat3. lépés a külső lekérdezés • Kérdezze le minden dolgozó nevét, jövedelmét, részlegének nevét és arészlegében dolgozók legkisebb jövedelmét végül pedig a dolgozó jövedelembeállási értékét. • Vegyük észre, hogy bele kell vennünk az allekérdezést a külső lekérdezésbe.

  28. Házi feladat3. lépés a külső lekérdezés • Mi kell a külső lekérdezésünkbe • Dolgozó neve • Jövedelme • Részlegének neve • A vele egy csoportban dolgozók legkisebb jövedelme • A jövedelembeállás

  29. Házi feladat3. lépés a külső lekérdezés SELECT dolgozó.ename, dolgozó.sal + NVL(dolgozó.comm,0) as fizu, telephely.dname, allek.minimumfizetés,/* elhagyható az allek, ha egyedi */ /*az allekérdezésben a másodlagos oszlpnév*/ dolgozó.sal+ NVL(dolgozó.comm,0) - minimumfizetésas beáll FROM emp dolgozó, dept telephely, (SELECT MIN(sal+NVL(comm,0)) AS minimumfizetés, deptno AS részleg FROM empGROUP BY deptno)allek/* itt nem hagyjuk el sose a másodlagos */ WHERE telephely.deptno = allek.részleg AND /*táblanevet*/ telephely.deptno = dolgozó.deptno ORDER BY dolgozó.ename;

  30. Amire figyeljünk • Az allekérdezést mindig zárójelbe kell, hogy tegyük a másodlagos táblanév adása miatt. • PL.: (SELECT MIN(sal+NVL(comm,0)) AS minimumfizetés,deptno AS részleg FROM emp GROUP BY deptno)allek • Megjegyzés: Másodlagos táblanévadáskor NEM használunk AS kulcsszót!!!

  31. Amire figyeljünk • Az allekérdezésben használt másodlagos oszlopneveket használjuk a külső SELECT-ben, mintha csak az emp táblából kérdeznénk oszlopokat. • Ha nem egyedi az oszlopnevünk akkor a táblanév.oszlop hivatkozással pontosan meg kell adjuk melyik tábláról van szó. Pl.: telephely.deptno = dolgozó.deptno

  32. Amire figyeljünk • A táblák felsorolásánál is ,-t használunk kivéve az utolsó táblát (allekérdezést). Pl.: … emp dolgozó,dept telephely, (SELECT MIN(sal+NVL(comm,0)) AS minimumfizetés, deptno AS részleg FROM emp GROUP BY deptno) allek … Itt már nincs vessző

  33. Amire figyeljünk • A WHERE-ben ne felejtsük összekapcsolni a táblákat. • Ki lehet próbálni mi történik, ha elhagyjuk a WHERE részt. • A WHERE-ben az a fontos, hogy minden tábla össze legyen kapcsolva a megfelelő oszlop(okk)al. • WHERE telephely.deptno = allek.részleg AND telephely.deptno= dolgozó.deptno • WHERE dolgozó.deptno= allek.részleg AND telephely.deptno = dolgozó.deptno • Ugyanazt az eredményt adja

  34. Házi feladat (2) Írja ki minden dolgozó nevét, jövedelmét, munkakörének nevét, továbbá a munkakörében dolgozók összjövedelmét, végül pedig a dolgozó jövedelembeállási értékét(mekkora az összjövedelem és a dolgozó jövedelmének különbsége), úgy hogy a jövedelem szerint rendezzünk növekvően.

  35. Házi feladat (2) SELECT enameAS "Dolgozó neve", sal+NVL(comm,0) AS jövedelem, dolgozó.job AS munkakör, összjövedelem, összjövedelem - sal+NVL(comm,0)AS jövbeáll FROM empdolgozó, (SELECT SUM(sal+NVL(comm,0)) AS összjövedelem, job FROM emp GROUP BY job) allek WHERE dolgozó.job= allek.job ORDER BY jövedelem;

More Related