Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaNorbert Boros Megváltozta több, mint 10 éve
1
2012. tavaszi félév Véső Tamás Véső Tamás OENIK 2012. 1 / 29
2
Normalizálás kis ZH: Féléves feladatkiírások (II.22) Tipikus hibák a kis ZH-n: Rossz függőségek Felírt függőség felüldefiniálása Lépések be nem tartása Rossz vég és részeredmények Tipikus hibák a féléves feladatnál: Formai követelmények nem betartása, Tartalmi problémák: túl/sok kevés szöveg, Nem alaposan végiggondolt feladatkiírás, túl kevés adat Jelenleg (II.28) 16 elfogadott kiírás (‘+’), 2 formai hibás, 2 nem elfogadott (‘J’ v ‘1’) 3 nem leadott kiírás (‘---’ v ‘1’) Véső Tamás OENIK 2012. 2 / 29
3
A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges, de nem elégséges feltétele a sikeres zárthelyi(k)nek. Sikeres zárthelyihez, illetve vizsgához a jelen bemutató tartalmán felül a kötelező irodalomként megjelölt anyag, a gyakorlatokon szóban, illetve a táblán átadott tudnivalók ismerete, valamint a gyakorlatokon megoldott példák és az otthoni feldolgozás céljából kiadott feladatok önálló megoldásának képessége is szükséges. Véső Tamás OENIK 2012. 3 / 29
4
Például: ◦ EMP ◦ DEPT Használjuk a ‘DEPTNO’ Mezőt! Véső Tamás OENIK 2012. 4 / 29
5
Az Az eredmény. Véső Tamás OENIK 2012. 5 / 29
6
SELECT FROM tábla1, tábla2, és így tovább WHERE GROUP BY HAVING ORDER BY; Mit fog ez produkálni és miért? SELECT * FROM emp, dept; Véső Tamás OENIK 2012. 6 / 29
7
EMP és DEPT tábla összekapcsolása: Mindenképp kell valamilyen feltétel: SELECT a.ename, b.loc FROM emp a, dept b WHERE a.deptno = b.deptno; avagy: SELECT ename, loc FROM emp, dept WHERE emp.deptno=dept.deptno; Véső Tamás OENIK 2012. 7 / 29
8
Inner ◦ Az oszlopérték mindegyik táblában létezik Left ◦ A kulcsszótól balra álló tábla sorai mindenképpen szerepelnek a listában Right ◦ A kulcsszótól jobbra álló tábla sorai mindenképpen látszanak a listában FULL ◦ Mindkettő oszlop sorai látszanak, még ha hiányosak is Véső Tamás OENIK 2012. 8 / 29
9
Használata: SELECT [Szelekciók] FROM tábla1 INNER/LEFT/RIGHT/FULL JOIN tábla2 ON összekötőfeltétel USING(oszlop1,oszlop2,stb) … Véső Tamás OENIK 2012. 9 / 29
10
SELECT ENAME, LOC FROM EMP INNER JOIN DEPT USING(deptno); SELECT ENAME, LOC FROM EMP LEFT JOIN DEPT USING(deptno); SELECT ENAME, LOC FROM EMP RIGHT JOIN DEPT USING(deptno); SELECT ENAME, LOC FROM EMP FULL JOIN DEPT USING(deptno); Van különbség? Véső Tamás OENIK 2012. 10 / 29
11
Példa: Listázzuk az alkalmazottakat, és a főnökeik nevét! SELECT dolgozo.ename as ”Dolgozó neve”, fonok.ename as ” Főnök neve” FROM emp dolgozo, emp fonok WHERE dolgozo.mgr = fonok.empno; Hol van KING a listából? Véső Tamás OENIK 2012. 11 / 29
12
KING nincs a listában, mert nincs főnöke (nincs hozzá tartozó sor a főnök táblából) Hogy előkerüljön az eredményben a főnököket LEFT JOIN segítségével kell kapcsolnunk: SELECT dolgozo.ename as ”Dolgozó neve”, fonok.ename as ” Főnök neve” FROM emp dolgozo, emp fonok WHERE dolgozo.mgr = fonok.empno(+);
13
Véső Tamás OENIK 2012. 13 / 29
14
SELECT LISTA FROM WHERE GROUP BY HAVING ORDER BY ; Véső Tamás OENIK 2012. 14 / 29
15
Ha a FROM részben szerepel az allekérdezés, akkor azt INLINE nézetnek is nevezzük (Ezt mindig másodlagos táblanévvel kell ellátni, kivéve ha csak 1 van) Mennyi a részlegenkénti maximumfizetések átlaga? Véső Tamás OENIK 2012. 15 / 29
16
Mennyi a részlegenkénti maximumfizetések átlaga? Select AVG(inlinepelda.Maxfizu) as "Maximum átlag" from (SELECT deptno as Reszlegszam, MAX(sal+nvl(comm,0)) as Maxfizu from emp group by deptno) inlinepelda; Véső Tamás OENIK 2012. 16 / 29
17
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 Véső Tamás OENIK 2012. 17 / 29
18
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 „(” „)” Példa: SELECT * FROM emp WHERE deptno IN ( SELECT deptno FROM dept WHERE UPPER(dname) = ‘DALLAS’) Véső Tamás OENIK 2012. 18 / 29
19
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); Véső Tamás OENIK 2012. 19 / 29
20
Egyértékű lehet csak Még utasításon belül sem lehet hivatkozni Példa: SELECT * FROM emp WHERE sal < (SELECT AVG(sal) FROM emp) Véső Tamás OENIK 2012. 20 / 29
21
INSTR pl: INSTR(ename,’SM’) Meg lehet vizsgálni, hogy egy adott karaktert, avagy karakterláncot tartalmaz e az adott kifejezés. Ha igen, akkor visszaadja, hogy hol fordul elő, ha nem, akkor 0-át ad vissza Pl.: select instr(ename,'SM') from emp; SUBSTR SUBSTR(kifejezés, hányadiktól, hányat) Karakterláncot darabolhatunk Pl.: select substr(ename,0,3) from emp; LENGTH Karakterlánc hosszát adja vissza Pl.: select * from emp where length('ename') > 4; Véső Tamás OENIK 2012. 21 / 29
22
Az R és az L közt a különbség, hogy az egyik jobbra, a másik pedig balra igazítja a karakterláncot, és a másik oldalról kitölti a helyettesítő karakterrel. Nézzük meg egy példán keresztül: SELECT RPAD(ename,6) || RPAD(’:’, ROUND((sal/1000),0)+1, ’#’) AS „Alkalmazottak és fizetésük” FROM emp ORDER BY sal DESC; Véső Tamás OENIK 2012. 22 / 29
23
Jövő héten gépes ZH: Allekérdezések, Táblák összekapcsolása. MINDEN AMI KORÁBBAN IS VOLT! JÖVŐ HÉTEN FÉLÉVES NORMALIZÁLÁSÁT KELL LEADNI. KONZULTÁCIÓK normalizálás témakörben, részletes infó hamarosan. (NIK levlisták!) veso.tamas@gorextar.hu Véső Tamás OENIK 2012. 23 / 29
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.