ADATBÁZIS HASZNÁLAT I. 2. gyakorlat. Figyelem!!! A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem.

Slides:



Advertisements
Hasonló előadás
2012. tavaszi félév Vitéz Gergely. 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.
Advertisements

10. gyakorlat SQL SELECT.

„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
2012. tavaszi félév Véső Tamás. 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,
2012. tavaszi félév Vitéz Gergely. 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.
Lekérdezések SQL-ben Relációs algebra A SELECT utasítás
Ablak módszer Rózsa Győző
Analitikus függvények
Analitikus, statisztikai és szélsőérték fv-k Hári Veronika
Analitikus, statisztikai és szélsőérték fv-k Rózsa Győző
Weblap szerkesztés HTML oldal felépítése Nyitó tag Záró tag Nyitó tag Záró tag oldalfej tözs.
Anyagadatbank c. tárgy gyakorlat
Erőállóképesség mérése Találjanak teszteket az irodalomban
2012. tavaszi félév Vitéz Gergely. 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,
Adatbázisok használata 1 (1. gyakorlat)
2012. tavaszi félév Véső Tamás. 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,
Humánkineziológia szak
– Adattáblák & adatok kezelése – Tarcsi Ádám január Adatbázis gyakorlat.
2012. március 6. Rózsa Győző Interaktív környezet március Rózsa Győző
Többtáblás lekérdezések, allekérdezések Rózsa Győző
Euklidészi gyűrűk Definíció.
SQL – DQL (Data Query Language ) adat lekérdezések
Elektronikai Áramkörök Tervezése és Megvalósítása
Adatbázis-kezelés.
Delphi programozás alapjai Nagyváradi Anett PTE PMMK MIT.
2006. október 2.Markó Tamás, PTE TTK1 Az Oracle SQL 4. Összesítés és csoportosítás lekérdezésekben. Halmazműveletek.
SQL92 lehetőségek KL A tábla B tábla C view adatok VIEW működése utasítás: SELECT.. FROM A,B … SELECT.. FROM C Az adatok a hivatkozáskor állítódnak elő.
ADATBÁZISOK
ADATBÁZISOK
ADATBÁZISOK
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
Részletező csoportosítások Rózsa Győző
Összesítés és csoportosítás lekérdezésekben. Halmazműveletek.
SQL.
Az SQL nyelv alapjai.
Nézettáblák, felső-N analízis Március 20. Rózsa Győző.
szakmérnök hallgatók számára
Access XP Kifejezés-szerkesztő Összehasonlító operátorok:
2012. tavaszi félév Véső Tamás. 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,
ADATBÁZIS HASZNÁLAT I. 4. gyakorlat. Figyelem!!! A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem.
2012. tavaszi félév Véső Tamás Véső Tamás OE­NIK / 18.
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
2012. tavaszi félév Vitéz Gergely. 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.
2012. tavaszi félév Véső Tamás Véső Tamás OE­NIK / 29.
Részletező csoportosítások Hári Veronika
Részletező csoportosítások Rózsa Győző
2012. tavaszi félév Vitéz Gergely. 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.
2012. tavaszi félév Vitéz Gergely. 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 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!
Adatbázis használat I. 2. gyakorlat.
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.
Adatbázisok használata 2. gyakorlat Rózsa Győző
SQL DDL DATA DEFINITION LANGUAGE. Táblák létrehozása CREATE TABLE táblanév ( oszlopnév1 típus(méret) /DEFAULT érték/ /NOT NULL/, oszlopnév2 típus(méret)
Készítette: Tóth Ervin
A klinikai transzfúziós tevékenység Ápolás szakmai ellenőrzése
QualcoDuna interkalibráció Talaj- és levegövizsgálati körmérések évi értékelése (2007.) Dr. Biliczkiné Gaál Piroska VITUKI Kht. Minőségbiztosítási és Ellenőrzési.
– SQL 3: SELECT - 1. – Tarcsi Ádám, január 31. Adatbázis gyakorlat.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
SQL SELECT parancsok Kottyán László. A bemutató mintatáblái.
1 Informatikai Szakképzési Portál Adatbázis kezelés DQL – Adatlekérdező nyelv.
Adatbázisok Fleiner Rita, Tankönyv:
Adatbázisok gyakorlat
Többtáblás lekérdezések, hierarchikus lekérdezések, allekérdezések
2. AB gyakorlat Egytáblás csoportosító lekérdezések.
Adatbázis-kezelés 3-4. Adatok lekérdezése utasítás általános formája SELECT [ALL/DISTINCT] {*/, …, } FROM [ ], …, [ ] [WHERE GROUP BY, …, HAVING ORDER.
Adatbázis-kezelés. Középszint: –1-2 tábla –SQL-nyelv és lekérdező-rács használata –Űrlap és jelentés készítés Emelt szint: –több tábla (kapcsolatok) –több.
– SELECT - 1. – Tarcsi Ádám január Adatbázis gyakorlat.
SQL aggregálás, csoportosítás és összekapcsolás Adatbázisok 1.
Előadás másolata:

ADATBÁZIS HASZNÁLAT I. 2. 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 Hallgato / Adatbazis2013 Ha nem működik ftp://analog.nik.uni-obuda.hu

Egyszerű lekérdezések emp  Kérdezzük le az emp tábla tartalmát! SELECT * FROM emp;

Egyszerű lekérdezések dept  Kérdezzük le az dept tábla tartalmát! SELECT * FROM dept;

Egyszerű lekérdezések  Ha nem vagyunk kíváncsiak az egész táblára lekérdezhetünk oszlopokat is belőle. emp  Kérdezzük le az emp táblából a dolgozók nevét és fizetését. SELECT ename, sal FROM emp;

Egyszerű lekérdezések emp  Kérdezzük le az emp táblából a dolgozók nevét, munkakörét és részlegazonosítóját. SELECT ename, job, deptno FROM emp; Megjegyzés: amikor több oszlopot kérdezünk le vesszőkkel választjuk el őket, de az utolsó oszlopnév után nem rakunk vesszőt

Egyszerű lekérdezések  Kérdezzük le az azonosítót és a nevet, de beszédes oszlopneveket szeretnénk látni, ezért nevezzük át az oszlopokat. SELECT empno AS Azonosító, ename AS Név FROM emp; Megjegyzés: összetett oszlopneveket is tudunk kezelni, ekkor azt az oszlopnevet " " [shift + 2] közé tesszük (pl.: név helyett dolgozó neve)

Egyszerű lekérdezések  Szeretnénk megtudni, hogy ki keres sokat (több, mint 2000 $) és mi a beosztása. SELECT ename, sal, job FROM emp WHERE sal > 2000;

Egyszerű lekérdezések  Ki kap jutalékot és mennyit? SELECT ename, comm FROM emp WHERE comm > 0;

Lekérdezések  Rendezzük a táblázatunkat dolgozó azonosító szerinti növekvő sorrendbe! SELECT * FROM emp ORDER BY empno;  Most ugyanezt csökkenő sorrendbe SELECT * FROM emp ORDER BY empno DESC;

Lekérdezések  Rendezzük a táblázatunkat fizetés szerinti növekvő sorrendbe, majd csökkenő sorrendbe! SELECT * FROM emp ORDER BY sal ASC/DESC;  Rendezzünk most fizetés szerint növekvő és jutalék szerint csökkenő sorrendbe SELECT * FROM emp ORDER BY sal, comm desc;

Előre megírt lekérdezés(ek) futtatása  ed azenlekerdezesem  Megnyit egy jegyzettömböt, amelybe írhatjuk a lekérdezést.  Fontos, hogy mindig mentsük a munkánkat benne!!!  Ezzel futtatjuk az előre megírt lekérdezésünket.  Holt találjuk meg ezt a fájlt?  Nézzük meg a kereső segítségével. Írjuk be, hogy azenlekerdezesem.sql

Gyakorlás  Írassuk ki azon dolgozók nevét, munkakörét és fizetését, akiknek a fizetése 1500 USD alatt van. A lista fejléce legyen „Név”, „Munkakör”, „Fizetés”, rendezzen a dolgozók neve szerint.  Mindezt jegyzettömbben készítsük el

Gyakorlás SELECT ename AS ”Név”, job AS ”Munkakör”, sal AS ”Fizetés” FROM emp WHERE sal < 1500 ORDER BY ename;

További feltételes kifejezések  További kifejezések:  Logikai műveletek AND, OR, NOT  Hasonlító műveletek >, >=,, !=  Intervallum Oszlopkifejezés BETWEEN AlsóHatár AND FelsőHatár

További feltételes kifejezések  További kifejezések:  Alsztringvizsgálat Oszlopkifejezés LIKE ’%alsztring%’ Pl.: SELECT * FROM emp WHERE ename LIKE UPPER(’%ar%’);  Allekérdezésre vonatkozó halmazvizsgálat Oszlopkifejezés [NOT] IN | ANY | ALL | EXISTS allekérdezés  NULL értékre vonatkozó vizsgálat Oszlopkifejezés IS NULL | IS NOT NULL

További feltételes kifejezések  Írassuk ki az 1200 és 2900 USD között kereső dolgozók minden adatát úgy, hogy a fizetés, majd a nevük szerint legyen rendezve.  Írassuk ki az 1200 és 2900 USD között NEM kereső dolgozók nevét, keresetét, jutalékát úgy, hogy a fizetés, majd a nevük szerint legyen rendezve és beszédesek legyenek az oszlopnevek

További feltételes kifejezések SELECT emp.* FROM emp WHERE sal BETWEEN 1200 AND 2900 ORDER BY sal, ename;

További feltételes kifejezések SELECT emp.ename AS Név, emp.sal AS Fizetés, emp.comm AS Jutalék FROM emp WHERE sal NOT BETWEEN 1200 AND 2900 ORDER BY sal, ename;

További feltételes kifejezések Írassuk ki a „clerk” munkakörű dolgozók nevét, munkakörét, fizetését. A lista fejléce legyen „Név”, „Munkakör”, „Fizetés”, rendezzen a dolgozók neve szerint. SELECT ename, job, sal FROM emp WHERE job LIKE ’%clerk%’; Mi történt? Miért nem jelent meg a clerk?

Megoldás  Kis és nagybetűk számítanak! SELECT ename, job, sal FROM emp WHERE job LIKE ’%CLERK%’; Elég a pl.: a ’%CLE%’ is vagy: SELECT ename, job, sal FROM emp WHERE job LIKE UPPER(’Clerk’);

További feltételes kifejezések  Mi van akkor ha több munkakörre is kíváncsiak vagyunk? Mondjuk „salesman” és „clerk”. SELECT ename, job, sal FROM emp WHERE UPPER(job) IN (’SALESMAN’, ’CLERK’); Megjegyzés: lehet így is … LOWER(job) IN (’salesman’, ’clerk’);

Speciális függvények  Számoljuk ki a dolgozóknak a jövedelmét (sal+comm) és rendezzük növekvő rendbe. SELECT emp.*, emp.sal+emp.comm AS Jövedelem FROM emp ORDER BY Jövedelem ASC;  Nézzük meg, hogy mi történt. Miért történhetett ez?

Speciális függvények  Ilyen estekben használjuk az NVL függvényt. Lényege, ahol nincs érték megadva azt kitölti az általunk megadottal.  Nézzük meg az előző példát a függvény segítségével. SELECT emp.*, emp.sal+NVL(emp.comm,0) AS Jövedelem FROM emp ORDER BY Jövedelem ASC;

Speciális függvények  A DECODE függvény segítségével javíthatjuk a listánk áttekinthetőségét. SELECT ename, job, DECODE(comm, 300, ’háromszáz’, 500, ’ötszáz’,comm) FROM emp; SELECT ename, DECODE(NVL(comm,-1), -1, ’Nem jár jutalék’, comm FROM emp;

Speciális függvények  A CASE függvény, hasonlóan a DECODE függvényhez itt is a listánkat tehetjük olvashatóbbá, de képes kezelni több esetet is.  Működése HA-AKKOR, KÜLÖNBEN elvű.  A feldolgozás során mindig az első a kifejezést igazzá tévő értéket fogja behelyettesíteni

Speciális függvények  Szintaktikája: CASE oszlopkifejezés WHEN Érték THEN VisszatérésiÉrték [WHEN Érték THEN VisszatérésiÉrték] … [ELSE VisszatérésiÉrték] END  Vagy…

Speciális függvények CASE WHEN LogikaiKifejezés THEN VisszatérésiÉrték [WHEN LogikaiKifejezés THEN VisszatérésiÉrték] … [ELSE VisszatérésiÉrték] END

Speciális függvények  Listázzuk ki a dolgozók nevét, munkakörét, jutalékát úgy, hogy akinek nincs jutaléka oda azt írjuk ki, hogy „nem jár jutalék”.  Oszlopkifejezéssel SELECT ename, job, CASE NVL(comm,-1) WHEN -1 THEN ’Nem jár jutalék’ ELSE TO_CHAR(comm) END FROM emp;

Még egy pár apróság…  Milyen munkakörök léteznek ennél a cégnél? SELECT job FROM emp;  De nekünk csak egyszer van szükségünk minden munkakörre. SELECT DISTINCT job FROM emp;

Még egy pár apróság…  Emlékezzünk a jutalékos példára ott arra voltunk kíváncsiak ki kap jutalmat, most nézük meg ki nem kap jutalmat.  A …Where comm=0; nem működik jól. Miért?  Ezért így kérdezzük le: SELECT ename, comm FROM emp WHERE comm IS NULL OR comm = 0;

Még egy pár apróság…  Művelet dátumokkal SELECT ename AS Név, hiredate AS Dátum, EXTRACT(YEAR FROM hiredate) AS BeÉv, EXTRACT(MONTH FROM hiredate) AS BeHónap, EXTRACT(DAY FROM hiredate) AS BeNap FROM emp WHERE hiredate > TO_DATE(’1981.máj.05’);

Még egy pár apróság…  Eltelt idő meghatározása  Napokban SELECT ROUND(sysdate - TO_DATE( ,'YYYYMMDD')) FROM dual;  Hónapokban SELECT ROUND(MONTHS_BETWEEN(sysdate, TO_DATE( ,’YYYYMMDD’))) FROM dual;  Években SELECT ROUND(MONTHS_BETWEEN(sysdate, TO_DATE( ,’YYYYMMDD’))/12) FROM dual;

Csoportosító lekérdezések  A leggyakrabban használt függvények:  AVG() Kiszámolja a csoport(ok) átlagát.  SUM() A csoportban összeget számol.  MIN() A legkisebb értéket adja meg a csoportban

Csoportosító lekérdezések  MAX() A legnagyobb értéked adja meg a csoportban.  COUNT() Megszámolja a csoport elemeinek számát.  Ezeket a függvényeket mindig GROUP BY-al használjuk

Kerekítő függvény  A kerekítésre a ROUND függvényt használhatjuk, amely így néz ki: ROUND(érték,tizedes)  Pl.: select AVG(sal) AS ”Átlagfizetés”, ROUND(AVG(sal),2) AS ”Átlagfizetés kerekítéssel”  FROM emp;

Csoportosító lekérdezések  Nézzünk az előbbiekre példát  Nézzük meg mi a legnagyobb fizetés részlegenként. SELECT deptno, MAX(sal) FROM emp GROUP BY deptno;  Mennyi a részlegenkénti átlagfizetés és ezt rendezzük növekvő sorrendbe. SELECT deptno, AVG(sal) FROM emp GROUP BY deptno;

Önálló feladat  A főnök szeretné tudni a részlegeinek:  A legalacsonyabb fizetését  A legmagasabb fizetését  Az átlagos fizetését  A létszámát

A megoldás SELECT deptno AS Részleg, MIN(sal) AS Legkisebb, MAX(sal) AS Legnagyobb, AVG(sal) AS Átlag, COUNT(*) AS Létszám FROM emp GROUP BY deptno;

Bonyolítsuk a dolgokat… Listázzuk ki a legkisebb, a legnagyobb és az átlagos részlegenkénti létszámokat: SELECT MIN(COUNT(*)), MAX(COUNT(*)), ROUND(AVG(COUNT(*)),0) FROM emp GROUP BY deptno;

Szűrés csoportokra (A HAVING használata)  Listázzuk ki azokat a részlegeket amelyek 2000 USD- nél nagyobb átlagjövedelműek a jövedelem szerint rendezve. SELECT deptno, ROUND(AVG(sal+NVL(comm,0))) AS átlagjövedelem FROM emp GROUP BY deptno HAVING ROUND(AVG(sal+NVL(comm,0))) > 2000 ORDER BY átlagjövedelem;

Szűrés csoportokra (A HAVING használata)  Listázzuk főnökönként (mgr) a jutalékban nem részesülő dolgozóinak átlagfizetését csökkenő sorrendben, feltéve, hogy ez az érték 1000 USD- nál több

Megoldás SELECT AVG(sal) AS ”Átlagfizetés”, mgr AS ”Főnök” FROM emp WHERE comm IS NULL AND mgr IS NOT NULL GROUP BY mgr HAVING AVG(sal) > 1000 ORDER BY ”Átlagfizetés” DESC;

Több oszlop szerinti csoportosítás Lehetőség van több oszlop szerint is csoportosítani. Pl.: Select count(*), avg(sal), deptno, mgr From emp Group by deptno, mgr; Generáljunk group by hibát: Select count(*), avg(sal), deptno, mgr, ename From emp Group by deptno, mgr;

Házi feladat Listázza ki a legfeljebb 2200 USD átlagjövedelmű részlegeknek az átlagjövedelmét és ezt rendezzük átlagjövedelem szerint növekvő sorrendbe majd csökkenő sorrendbe és használjon beszédes oszlopneveket

Megoldás SELECT deptno AS Részleg, AVG(sal+nvl(comm,0)) AS Átlag FROM emp GROUP BY deptno HAVING AVG(sal+nvl(comm,0)) <= 2200 ORDER BY Átlag asc/desc;

Házi feladat (2) Listázza ki részlegenként és minden részlegben munkakörönként a 2000 USD-nál nagyobb jövedelmű dolgozók átlagjövedelmét, mégpedig úgy, hogy a lista legyen az utóbbi szerint növekvő és használjon beszédes oszlopneveket

Megoldás SELECT deptno AS Részleg, job AS Munkakör, avg(sal+NVL(comm,0)) AS Átlag FROM emp WHERE (sal + NVL(comm,0)) > 2000 GROUP BY deptno, job ORDER BY Átlag;

 Források: Nagy Gabriella diasorozata Példatár