2006. május 1. TARTALOM
|
|
- Eszter Katona
- 6 évvel ezelőtt
- Látták:
Átírás
1 KENDE MÁRIA - NAGY ISTVÁN PL/SQL FELADATGYŰJTEMÉNY TARTALOM 9. Foglalkozás Hivatkozási és összetett adattípusok, kurzor, ROWID Foglalkozás Összefoglaló feladatok Melléklet Dinamikus SQL Irodalom május 1. #03_PL-SQL Feladatgyűjtemény [06] - 1 -
2 9. Foglalkozás Hivatkozási és összetett adattípusok, kurzor, ROWID Részletesebben lásd [2]: 9. fejezet, FELADATGYŰJTEMÉNY 9.1. Feladat Írjon egy olyan PL/SQL programot, amely az emp táblából létrehoz egy dolgozó táblát, és minden dolgozó fizetését megemeli a saját fizetésének véletlenszám (0-100) értékű százalékával Feladat Írjon PL/SQL programot, amely az emp táblából létrehoz egy dolgozó táblát, és megnöveli a felhasználó által megadott azonosítójú főnök minden beosztottjának fizetését azok átlagfizetésének 10%-val Feladat Írjon PL/SQL programot, mely az emp táblából létrehoz egy dolgozó táblát, és megnöveli a felhasználó által megadott nevű főnök minden beosztottjának fizetését azok átlagfizetésének 10%-val. TOVÁBBI FELADATOK T9.4. Feladat Írjon egy olyan PL/SQL programot, amely az emp táblából létrehoz egy dolgozó táblát és bővíti egy nyeremény oszloppal. A nyeremény a beosztottak számára a főnökök átlagfizetésének véletlenszerű százaléka (0-50), a főnököknek pedig a beosztottak összfizetésének véletlenszerű százaléka (10-50). Listázza a dolgozó táblát a nyereményhúzás előtt és után is. T9.5. Feladat Írjon egy olyan PL/SQL programot, amely az emp táblából létrehoz egy dolgozó táblát és bővíti egy pár nevű oszloppal. Ezt az oszlopot töltse fel az oooo karaktersorozattal. Egy kereső dolgozó partnere az, aki ugyanabban a munkakörben dolgozik és páros hónapban lépett be. Írja be kereső pár oszlopába a megtalált partner nevét, illetve a partner pár oszlopába a kereső nevét. Egy partner csak egyszer fordulhat elő. #03_PL-SQL Feladatgyűjtemény [06] - 2 -
3 MEGOLDÁSGYŰJTEMÉNY 9.1. Feladat Írjon egy olyan PL/SQL programot, amely az emp táblából létrehoz egy dolgozó táblát, és minden dolgozó fizetését megemeli a saját fizetésének véletlenszám (0-100) értékű százalékával. Megoldás 1. A tábla létrehozása SET numwidth 5 DROP TABLE dolgozó; CREATE TABLE dolgozó SELECT * FROM emp; SELECT * ; SET serveroutput ON DECLARE szorzo NUMBER; CURSOR dolgozo IS SELECT empno,sal ; BEGIN FOR i IN dolgozo LOOP szorzo := ROUND(DBMS_RANDOM.VALUE(0,100)/100,2); DBMS_OUTPUT.PUT_LINE('A szorzó értéke: ' szorzo ' 'emelés értéke:' (i.sal * szorzo)); SET sal = sal + (sal * szorzo) WHERE empno = i.empno; END LOOP; END; / ' SELECT * ; SET numwidth 10 Eredmény A tábla eldobva. A tábla létrejött. EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO SMITH CLERK DEC ALLEN SALESMAN FEB WARD SALESMAN FEB JONES MANAGER ÁPR MARTIN SALESMAN SZE BLAKE MANAGER MÁJ CLARK MANAGER JÚN SCOTT ANALYST ÁPR KING PRESIDENT 81-NOV TURNER SALESMAN SZE ADAMS CLERK MÁJ JAMES CLERK DEC #03_PL-SQL Feladatgyűjtemény [06] - 3 -
4 7902 FORD ANALYST DEC MILLER CLERK JAN sor kijelölve. A szorzó értéke:,71 A szorzó értéke:,28 A szorzó értéke:,71 A szorzó értéke:,34 A szorzó értéke:,12 A szorzó értéke:,99 A szorzó értéke:,66 A szorzó értéke:,65 A szorzó értéke:,54 A szorzó értéke:,95 A szorzó értéke:,7 A szorzó értéke:,48 A szorzó értéke:,76 A szorzó értéke:,37 emelés értéke:568 emelés értéke:448 emelés értéke:887,5 emelés értéke:1011,5 emelés értéke:150 emelés értéke:2821,5 emelés értéke:1617 emelés értéke:1950 emelés értéke:2700 emelés értéke:1425 emelés értéke:1783,6 emelés értéke:456 emelés értéke:2280 emelés értéke:481 A PL/SQL eljárás sikeresen befejeződött. EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO SMITH CLERK ALLEN SALESMAN WARD SALESMAN JONES MANAGER MARTIN SALESMAN BLAKE MANAGER CLARK MANAGER SCOTT ANALYST KING PRESIDENT TURNER SALESMAN ADAMS CLERK JAMES CLERK FORD ANALYST MILLER CLERK sor kijelölve Feladat Írjon PL/SQL programot, amely az emp táblából létrehoz egy dolgozó táblát, és megnöveli a felhasználó által megadott azonosítójú főnök minden beosztottjának fizetését azok átlagfizetésének 10%-val. Megoldás SET numwidth 5 SET serveroutput ON ACCEPT azonositó PROMPT 'Kérem a főnök azonosítóját: ' DROP TABLE dolgozó; CREATE TABLE dolgozó SELECT * FROM emp; SELECT * ; CREATE OR REPLACE VIEW megadott(dempno,dname,djob,dmgr,dhiredate, dsal,dcomm,ddeptno, átlag) SELECT dolgozó.*, átlag, (SELECT ROUND(AVG(sal)) átlag, mgr azon GROUP BY mgr HAVING mgr = &azonositó) al #03_PL-SQL Feladatgyűjtemény [06] - 4 -
5 WHERE al.azon = dolgozó.mgr; SELECT * FROM megadott; BEGIN SET sal = sal * (SELECT DISTINCT átlag FROM megadott) WHERE mgr = (SELECT DISTINCT dmgr FROM megadott); END; / SELECT * ; SET numwidth 10 Eredmény Kérem a főnök azonosítóját: 7698 A tábla eldobva. A tábla létrejött. EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO SMITH CLERK ALLEN SALESMAN WARD SALESMAN JONES MANAGER MARTIN SALESMAN BLAKE MANAGER CLARK MANAGER SCOTT ANALYST KING PRESIDENT TURNER SALESMAN ADAMS CLERK JAMES CLERK FORD ANALYST MILLER CLERK sor kijelölve. régi 9: HAVING mgr = &azonositó) al új 9: HAVING mgr = 7698) al A nézet létrejött. DEMPNO DNAME DJOB DMGR DHIREDATE DSAL DCOMM DDEPTNO ÁTLAG ALLEN SALESMAN WARD SALESMAN MARTIN SALESMAN TURNER SALESMAN JAMES CLERK sor kijelölve. 5 sor módosítva. EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO SMITH CLERK ALLEN SALESMAN WARD SALESMAN JONES MANAGER MARTIN SALESMAN BLAKE MANAGER #03_PL-SQL Feladatgyűjtemény [06] - 5 -
6 7782 CLARK MANAGER SCOTT ANALYST KING PRESIDENT TURNER SALESMAN ADAMS CLERK JAMES CLERK FORD ANALYST MILLER CLERK sor kijelölve Feladat Írjon PL/SQL programot, mely az emp táblából létrehoz egy dolgozó táblát, és megnöveli a felhasználó által megadott nevű főnök minden beosztottjának fizetését azok átlagfizetésének 10%-val. Megoldás1 SET numwidth 5; BREAK ON mgr DROP TABLE dolgozó; CREATE TABLE dolgozó SELECT * FROM emp; SELECT * ; Eredmény A tábla eldobva. A tábla létrejött. EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO SMITH CLERK ALLEN SALESMAN WARD SALESMAN JONES MANAGER MARTIN SALESMAN BLAKE MANAGER CLARK MANAGER SCOTT ANALYST KING PRESIDENT TURNER SALESMAN ADAMS CLERK JAMES CLERK FORD ANALYST MILLER CLERK sor kijelölve. 1. Lépés. Hozzunk létre egy nézetet a beosztottak átlagának kiszámítására. CREATE OR REPLACE VIEW beoátlag SELECT mgr, ROUND(AVG(sal)) átlag WHERE mgr IS NOT NULL GROUP BY mgr; SELECT * FROM beoátlag; Eredmény A nézet létrejött. #03_PL-SQL Feladatgyűjtemény [06] - 6 -
7 MGR ÁTLAG sor kijelölve. 2. Lépés. Nézet létrehozása a dolgozó, főnök adataival és az átlaggal együtt. CREATE OR REPLACE VIEW BEOSZT SELECT d.empno dazon, d.ename dnév, f.empno fazon, f.ename fnév, átlag d, dolgozó f, Beoátlag beo WHERE d.mgr = f.empno(+) AND f.empno = beo.mgr; SELECT * FROM beoszt; Eredmény A nézet létrejött. DAZON DNÉV FAZON FNÉV ÁTLAG SCOTT 7566 JONES FORD 7566 JONES ALLEN 7698 BLAKE WARD 7698 BLAKE MARTIN 7698 BLAKE TURNER 7698 BLAKE JAMES 7698 BLAKE MILLER 7782 CLARK ADAMS 7788 SCOTT JONES 7839 KING BLAKE 7839 KING CLARK 7839 KING SMITH 7902 FORD sor kijelölve. 2. Lépés. Írjuk meg a növelést mindazoknak, akik a felhasználó által megadott főnök beosztottai, és listázzuk főnökazonosító szerint rendezve. ACCEPT név PROMPT 'Kérem a főnök nevét: ' BEGIN SET sal = sal * (SELECT DISTINCT átlag FROM beoszt WHERE UPPER(fnév) = UPPER('&név')) WHERE dolgozó.mgr IN (SELECT fazon FROM beoszt WHERE UPPER(fnév) = UPPER('&név')); END; / SELECT * ORDER BY mgr; SET numwidth 10 CLEAR BREAKS #03_PL-SQL Feladatgyűjtemény [06] - 7 -
8 Eredmény Kérem a főnök nevét: blake régi 6: WHERE UPPER(fnév) = UPPER('&név')) új 6: WHERE UPPER(fnév) = UPPER('blake')) régi 9: WHERE UPPER(fnév) = UPPER('&név')); új 9: WHERE UPPER(fnév) = UPPER('blake')); A PL/SQL eljárás sikeresen befejeződött. EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO SCOTT ANALYST FORD ANALYST ALLEN SALESMAN WARD SALESMAN JAMES CLERK TURNER SALESMAN MARTIN SALESMAN MILLER CLERK ADAMS CLERK JONES MANAGER CLARK MANAGER BLAKE MANAGER SMITH CLERK KING PRESIDENT sor kijelölve. Megoldás2 SET numwidth 5 ACCEPT név PROMPT 'Kérem a főnök nevét: ' DROP TABLE dolgozó; CREATE TABLE dolgozó SELECT * FROM emp; SELECT * ; CREATE OR REPLACE VIEW megadott(dempno,dname,djob,dmgr,dhiredate,dsal,dcomm,ddeptno,átlag) SELECT dolgozó.*, átlag, (SELECT ROUND(AVG(sal)) átlag, mgr azon GROUP BY mgr) al WHERE al.azon = dolgozó.mgr; SELECT * FROM megadott; CREATE OR REPLACE VIEW fönöknév(azon,fnév) SELECT DISTINCT főnök.empno, főnök.ename FROM emp dolg, emp főnök WHERE dolg.mgr = főnök.empno(+); SELECT * FROM fönöknév; CREATE OR REPLACE VIEW jo(fnév,azonos,dnév,átlag) SELECT fnév, dempno, dname, #03_PL-SQL Feladatgyűjtemény [06] - 8 -
9 átlag FROM fönöknév, megadott WHERE UPPER(fnév) = UPPER('&név') AND azon = dmgr; SELECT * FROM jo; CREATE OR REPLACE VIEW növ(emeles) SELECT DISTINCT 0.1*átlag FROM jo; SELECT * FROM növ; BEGIN SET sal = sal + (SELECT emeles FROM növ) WHERE empno = (SELECT azonos FROM jo WHERE dolgozó.ename = dnév); END; / SELECT * ; Eredmény Kérem a főnök nevét: blake A tábla eldobva. A tábla létrejött. EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO SMITH CLERK ALLEN SALESMAN WARD SALESMAN JONES MANAGER MARTIN SALESMAN BLAKE MANAGER CLARK MANAGER SCOTT ANALYST KING PRESIDENT TURNER SALESMAN ADAMS CLERK JAMES CLERK FORD ANALYST MILLER CLERK sor kijelölve. A nézet létrejött. DEMPNO DNAME DJOB DMGR DHIREDATE DSAL DCOMM DDEPTNO ÁTLAG FORD ANALYST SCOTT ANALYST JAMES CLERK TURNER SALESMAN MARTIN SALESMAN WARD SALESMAN ALLEN SALESMAN MILLER CLERK ADAMS CLERK CLARK MANAGER BLAKE MANAGER JONES MANAGER SMITH CLERK sor kijelölve. #03_PL-SQL Feladatgyűjtemény [06] - 9 -
10 A nézet létrejött. régi 6: WHERE UPPER(fnév) =UPPER('&név') AND új 6: WHERE UPPER(fnév) =UPPER('blake') AND A nézet létrejött. FNÉV AZONOS DNÉV ÁTLAG BLAKE 7499 ALLEN 1310 BLAKE 7521 WARD 1310 BLAKE 7654 MARTIN 1310 BLAKE 7844 TURNER 1310 BLAKE 7900 JAMES sor kijelölve. A nézet létrejött. A PL/SQL eljárás sikeresen befejeződött. EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO SMITH CLERK ALLEN SALESMAN WARD SALESMAN JONES MANAGER MARTIN SALESMAN BLAKE MANAGER CLARK MANAGER SCOTT ANALYST KING PRESIDENT TURNER SALESMAN ADAMS CLERK JAMES CLERK FORD ANALYST MILLER CLERK sor kijelölve. #03_PL-SQL Feladatgyűjtemény [06]
11 10. Foglalkozás Összefoglaló Feladatok Részletesebben lásd [2]: 9., és 10. fejezet FELADATGYŰJTEMÉNY Feladat Hozzon létre egy dolgozó nevű táblát az emp tábla eladóiból (salesman), és változtassa meg az mgr oszlop nevét partner névre, melyet az alábbi módon töltsön fel értékkel: Két dolgozó partnere lehet egymásnak, ha még egyiküknek sincs partnere, és 150 USD-nél nem több a fizetésük különbsége. A partnerek azonosítói szerepeljenek egymás partner oszlopában. Ellenőrizze a megoldást új dolgozó felvitelével, és a partnerkeresés megismétlésével Feladat Hozzon létre egy dolgozó nevű táblát az emp tábla rekordjaiból, és bővítse egy partner nevű oszloppal, melynek típusa egyezzen meg az ename oszlop típusával. Készítsen egy SQL*Plus programba ágyazott PL/SQL blokkot, amely megkisérli a dolgozókat párosítani az alábbi szempontok alapján: - minden dolgozó táblabeli dolgozó partnere csak dolgozó táblabeli dolgozó lehet, - önmagának senki nem lehet partnere, - mindenki legfeljebb egy valakinek lehet partnere, - két dolgozó partnere lehet egymásnak, ha ugyanaz a főnökük és megegyezik a munkakörük Feladat 3.1. Hozzon létre egy dolgozó nevű táblát az emp tábla rekordjaiból Készítsen triggert a dolgozó táblába történő ellenőrzött adatbevitelhez, ahol az alábbi adatbeviteli feltételeket a trigger által meghívott tárolt alprogramokban vizsgálja meg: a.) Részleg feltétel: Egy új dolgozó részlegeként csak már létező részleg azonosítója adható meg. b.) Fizetési feltétel: Egy új dolgozó fizetésként a részlegében és vele azonos munkakörben dolgozók átlagfizetésének legalább a 3/4-ét kapja, ha a részlegében nincs vele azonos munkakörű, akkor a részlegében dolgozók átlagfizetésének 2/3-ánál legalább 300 USD-vel többet, ha pedig a részlegében ő az első dolgozó, akkor legalább 2000 USD-t A trigger és a tárolt eljárások ellenőrzése érdekében végezze el a szükséges adatfelviteleket Az elkészített megoldás a tárolandó dolgozó nevét írja vissza a képernyőre, és sikeres adatfelvitel esetén írja ki a dolgozó nevét, majd az "OK!" üzenetet, míg sikertelen adatfelvitel esetén a "HIBA:" üzenetet, és a sikertelenség okát Utolsó lépésként listázza a dolgozó táblát, majd állítsa vissza az eredeti táblatartalmat. #03_PL-SQL Feladatgyűjtemény [06]
12 MEGOLDÁSGYŰJTEMÉNY Feladat Hozzon létre egy dolgozó nevű táblát az emp tábla eladóiból (salesman), és változtassa meg az mgr oszlop nevét partner névre, melyet az alábbi módon töltsön fel értékkel: Két dolgozó partnere lehet egymásnak, ha még egyiküknek sincs partnere, és 150 USD-nél nem több a fizetésük különbsége. A partnerek azonosítói szerepeljenek egymás partner oszlopában. Ellenőrizze a megoldást új dolgozó felvitelével, és a partnerkeresés megismétlésével. A. Megoldás (Megoldási próbálkozás SQL-ben) 0. lépés (Az SQL*Plus környezet inicializálása) -- Az emp tábla inicializálása (ezúttal elhagyjuk) -- Feltételezve, hogy az INIT1.sql a BIN könyvtárban van -- A dátum és megjelenítés inicializálása ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD'; SET numwidth 5 -- Az esetlegesen létező azonos nevű objektumok törlése DROP VIEW dolgozó; DROP TABLE dolgozó; A munkamenet módosítva. ORA-00942: a tábla vagy a nézet nem létezik ORA-00942: a tábla vagy a nézet nem létezik 1. lépés (Konzisztens adattábla létrehozása) CREATE OR REPLACE VIEW DolgozóNézet SELECT * FROM emp WHERE LOWER(job) = 'salesman'; SELECT * FROM DolgozóNézet; DROP TABLE dolgozó; CREATE TABLE dolgozó SELECT empno, ename, job, CE WHEN mgr IN (SELECT empno FROM DolgozóNézet) THEN mgr ELSE NULL END mgr, hiredate, sal, comm, deptno FROM DolgozóNézet; DROP VIEW DolgozóNézet; SELECT * ; A nézet létrejött. EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO MARTIN SALESMAN ALLEN SALESMAN TURNER SALESMAN WARD SALESMAN A tábla létrejött. EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO #03_PL-SQL Feladatgyűjtemény [06]
13 MARTIN SALESMAN ALLEN SALESMAN TURNER SALESMAN WARD SALESMAN lépés (Oszlopmódosítás és adattörlés) ALTER TABLE dolgozó RENAME COLUMN mgr TO partner; -- A partner mező ezúttal az alábbi törlés nélkül is üres SET partner = NULL; SELECT * ; A tábla módosítva. EMPNO ENAME JOB PARTNER HIREDATE SAL COMM DEPTNO MARTIN SALESMAN ALLEN SALESMAN TURNER SALESMAN WARD SALESMAN lépés (Adatfeltöltés) -- Partnerkereső segédnézet létrehozása CREATE OR REPLACE VIEW PartnerKeresés(DolgozóID,DolgozóFiz, PartnerID,PartnerFiz) SELECT D.empno DolgozóID, D.sal DolgozóFiz, P.empno PartnerID, P.sal PartnerFiz D, dolgozó P WHERE ABS(D.sal - P.sal) <= 150 AND D.empno!= P.empno; SELECT * FROM PartnerKeresés; A nézet létrejött. DOLGOZÓID DOLGOZÓFIZ PARTNERID PARTNERFIZ Adatmódosítás SET partner = (SELECT PartnerID FROM PartnerKeresés WHERE DolgozóID = empno); SELECT * ; 4 sor módosítva. EMPNO ENAME JOB PARTNER HIREDATE SAL COMM DEPTNO MARTIN SALESMAN ALLEN SALESMAN TURNER SALESMAN WARD SALESMAN lépés (Ellenőrzés rekordfelvitellel) INSERT INTO dolgozó VALUES(6666,'SIGORSZKI','SALESMAN',NULL,' ',1250,NULL,30); 1 sor létrejött. #03_PL-SQL Feladatgyűjtemény [06]
14 SET partner = (SELECT PartnerID FROM PartnerKeresés WHERE DolgozóID = empno); SET partner = (SELECT PartnerID * Hiba a(z) 2. sorban: ORA-01427: egysoros allekérdezés egynél több sorral tér vissza >> HIBÁS az adatmódosítás! >> Derítsük ki a hiba okát, és készítsünk jó adatmódosító utasítást SELECT * FROM PartnerKeresés; DOLGOZÓID DOLGOZÓFIZ PARTNERID PARTNERFIZ sor kijelölve. >> A HIBA oka, hogy egy dolgozónak több partnere is lehet a fizetés feltétel szerint SELECT MaxPartnerID FROM (SELECT DolgozóID, MAX(PartnerID) MaxPartnerID FROM PartnerKeresés GROUP BY DolgozóID) WHERE DolgozóID = 7654; MAXPARTNERID >> Így minden dolgozó a legnagyobb azonosítójú (a fizetésre vonatkozó feltételt teljesítő) >> dolgozót kapja partnerként. >> (Ez egy módszer arra, hogy kijelöljünk egyet a lehetséges elemek közül, >> de ilyen módszer nem mindig található!) -- ÚJABB PRÓBÁLKOZÁS -- A partner mező inicializálása SET partner = NULL; -- A partner mező beállítása (feltöltése) SET partner = (SELECT MaxPartnerID FROM (SELECT DolgozóID, MAX(PartnerID) MaxPartnerID FROM PartnerKeresés GROUP BY DolgozóID) WHERE DolgozóID = empno); SELECT * ; 5 sor módosítva. EMPNO ENAME JOB PARTNER HIREDATE SAL COMM DEPTNO MARTIN SALESMAN ALLEN SALESMAN TURNER SALESMAN WARD SALESMAN SIGORSZKI SALESMAN #03_PL-SQL Feladatgyűjtemény [06]
15 >> Még mindig HIBÁS az adatmódosítás! >> A HIBA oka, hogy a legnagyobb azonosítójú dolgozót többen is tudják választani. >> Ezt úgy küszöböljük ki, hogy mielőtt egy dolgozó-azonosítót partnerkódként kiosztunk, >> megvizsgáljuk, hogy azt nem kapta-e már meg valaki. >> (Ezt algebrailag felírva: {a} B {a} \ B, ahol {a} a vizsgálandó dolgozó-azonosító, >> vagyis a "(SELECT MaxPartnerID..." utasításrész, amelyik bár csak egyetlen elemet ad ki, >> azért mégis csak halmaz, hiszen lista.) -- ÚJABB PRÓBÁLKOZÁS A partner mező inicializálása SET partner = NULL; -- A partner mező beállítása (feltöltése) SET partner = (SELECT MaxPartnerID FROM (SELECT DolgozóID, MAX(PartnerID) MaxPartnerID FROM PartnerKeresés GROUP BY DolgozóID) WHERE DolgozóID = empno) WHERE NOT EXISTS (SELECT MaxPartnerID FROM (SELECT DolgozóID, MAX(PartnerID) MaxPartnerID FROM PartnerKeresés GROUP BY DolgozóID) WHERE DolgozóID = empno MINUS SELECT partner ); SELECT * ; 0 sor módosítva. EMPNO ENAME JOB PARTNER HIREDATE SAL COMM DEPTNO MARTIN SALESMAN ALLEN SALESMAN TURNER SALESMAN WARD SALESMAN SIGORSZKI SALESMAN >> Még mindig HIBÁS az adatmódosítás! >> Mi lehet a HIBA oka, hiszen ez az adatmódosítás már igazán mindent figyelembe vesz? >>???? (Ötletek küldhetők az oktat123@fre címre.) #03_PL-SQL Feladatgyűjtemény [06]
16 B. Megoldás (Megoldás PL/SQL-ben Rejtett kurzorral és ROWID-val) 1. lépés (Konzisztens adattábla létrehozása) ugyanaz, mint az A. Megoldásban a 0. és az 1. lépés (lásd ott a szükséges SQL-utasításokat, illetve a DataLoad_A.sql szkript programot) 2. lépés (Oszlopmódosítás, rekordhozzáadás) ugyanaz, mint az A. Megoldásban a 2. és a 3. lépés (lásd ott a szükséges SQL-utasításokat, illetve a DataLoad_A.sql szkript programot) 3. lépés (Adatfeltöltés - ROWID használattal) -- DataLoad_B.sql Adatfeltöltés rejtett kurzorral és ROWID használattal (Értelmezését lásd a 12_KurzorHasználat.doc szkriptben) Utolsó javítás dátuma: SET serveroutput ON DECLARE v_egyik dolgozó.partner%type; v_másik dolgozó.partner%type; BEGIN -- A dolgozó tábla inicializálása SET partner = NULL; -- A fejléc kiíratása DBMS_OUTPUT.PUT_LINE('DOLGOZÓ ' 'Fizetése ' 'PARTNER ' 'Fizetése'); DBMS_OUTPUT.PUT_LINE('==================================='); -- A külső ciklus (végigmegy az összes dolgozó rekordján) FOR EgyikDolgozó IN (SELECT dolgozó.*, ROWID RecID ) LOOP -- A partner azonosító lekérdezése a külső ciklus számára: SELECT partner INTO v_egyik WHERE ROWID = EgyikDolgozó.RecID; -- A belső ciklus (ez is végigmegy az összes dolgozó rekordján) FOR MásikDolgozó IN (SELECT dolgozó.*, ROWID RecID ) LOOP -- A partner azonosító lekérdezése a belső ciklus számára: SELECT partner INTO v_másik WHERE ROWID = MásikDolgozó.RecID; -- Ha a külső ciklus aktuális dolgozójának fizetése -- és a belső ciklus aktuális dolgozójának fizetése -- között a különbség nem több 150 USD-nél, -- és a két dolgozó nem azonos, -- és egyiknek sincs még partnere, #03_PL-SQL Feladatgyűjtemény [06]
17 IF ABS(EgyikDolgozó.sal - MásikDolgozó.sal) <= 150 AND EgyikDolgozó.empno!= MásikDolgozó.empno AND v_egyik IS NULL AND v_másik IS NULL THEN -- akkor állítsuk be a partner-azonosítót: SET partner = MásikDolgozó.empno WHERE ROWID = EgyikDolgozó.RecID; -- és a beállítást visszafelé is végezzük el: SET partner = EgyikDolgozó.empno WHERE ROWID = MásikDolgozó.RecID; -- Kiíratás DBMS_OUTPUT.PUT_LINE(EgyikDolgozó.empno ' ' EgyikDolgozó.sal ' ' MásikDolgozó.empno ' ' MásikDolgozó.sal); -- Kiugrás a ciklusból -- Az egyezés és módosítás után kiugrás a belső ciklusból, és -- ugrás a külső ciklus következő rekordjára EXIT; END IF; -- A belső (MásikDolgozó) ciklus bezárása END LOOP; -- A külső (EgyikDolgozó) ciklus bezárása END LOOP; END; / SELECT * ; -- End Of DataLoad_B.sql DOLGOZÓ Fizetése PARTNER Fizetése =================================== A PL/SQL eljárás sikeresen befejeződött. EMPNO ENAME JOB PARTNER HIREDATE SAL COMM DEPTNO MARTIN SALESMAN ALLEN SALESMAN TURNER SALESMAN WARD SALESMAN SIGORSZKI SALESMAN #03_PL-SQL Feladatgyűjtemény [06]
18 C. Megoldás (Megoldás PL/SQL-ben Rejtett kurzorral, ROWID nélkül) 1. lépés (Konzisztens adattábla létrehozása) ugyanaz, mint az A. Megoldásban a 0. és az 1. lépés (lásd ott a szükséges SQL-utasításokat, illetve a DataLoad_A.sql szkript programot) 2. lépés (Oszlopmódosítás, rekordhozzáadás) ugyanaz, mint az A. Megoldásban a 2. és 3. lépés (lásd ott a szükséges SQL-utasításokat, illetve a DataLoad_A.sql szkript programot) 3. lépés (Adatfeltöltés - ROWID használat nélkül) A feladat megoldható ezúttal ROWID használata nélkül is, mivel van olyan, a rekordokat egyértelműen azonosító oszlop (empno), mely a kurzor-ciklusban nem változik meg. -- DataLoad_C.sql Adatfeltöltés rejtett kurzorral, ROWID nélkül (Értelmezését lásd a 12_KurzorHasználat.doc szkriptben) Utolsó javítás dátuma: SET serveroutput ON DECLARE v_egyik dolgozó.partner%type; v_másik dolgozó.partner%type; BEGIN -- A dolgozó tábla inicializálása SET partner = NULL; -- A fejléc kiíratása DBMS_OUTPUT.PUT_LINE('DOLGOZÓ ' 'Fizetése ' 'PARTNER ' 'Fizetése'); DBMS_OUTPUT.PUT_LINE('==================================='); -- A külső ciklus (végigmegy az összes dolgozó rekordján) FOR EgyikDolgozó IN (SELECT * ) LOOP -- A partner azonosító lekérdezése a külső ciklus számára: SELECT partner INTO v_egyik WHERE empno = EgyikDolgozó.empno; -- A belső ciklus (ez is végigmegy az összes dolgozó rekordján) FOR MásikDolgozó IN (SELECT * ) LOOP -- A partner azonosító lekérdezése a belső ciklus számára: SELECT partner INTO v_másik WHERE empno = MásikDolgozó.empno; -- Ha a külső ciklus aktuális dolgozójának fizetése -- és a belső ciklus aktuális dolgozójának fizetése -- között a különbség nem több 150 USD-nél, -- és a két dolgozó nem azonos, -- és egyiknek sincs még partnere, #03_PL-SQL Feladatgyűjtemény [06]
19 IF ABS(EgyikDolgozó.sal - MásikDolgozó.sal) <= 150 AND EgyikDolgozó.empno!= MásikDolgozó.empno AND v_egyik IS NULL AND v_másik IS NULL THEN -- akkor állítsuk be a partner-azonosítót: SET partner = MásikDolgozó.empno WHERE empno = EgyikDolgozó.empno; -- és a beállítást visszafelé is végezzük el: SET partner = EgyikDolgozó.empno WHERE empno = MásikDolgozó.empno; -- Kiíratás DBMS_OUTPUT.PUT_LINE(EgyikDolgozó.empno ' ' EgyikDolgozó.sal ' ' MásikDolgozó.empno ' ' MásikDolgozó.sal); -- Kiugrás a ciklusból -- Az egyezés és módosítás után kiugrás a belső ciklusból, és -- ugrás a külső ciklus következő rekordjára EXIT; END IF; -- A belső (MásikDolgozó) ciklus bezárása END LOOP; -- A külső (EgyikDolgozó) ciklus bezárása END LOOP; END; / SELECT * ; -- End Of DataLoad_C.sql DOLGOZÓ Fizetése PARTNER Fizetése =================================== A PL/SQL eljárás sikeresen befejeződött. EMPNO ENAME JOB PARTNER HIREDATE SAL COMM DEPTNO MARTIN SALESMAN ALLEN SALESMAN TURNER SALESMAN WARD SALESMAN SIGORSZKI SALESMAN #03_PL-SQL Feladatgyűjtemény [06]
20 D. Hibás Megoldás Tekintsük az előző, C. Megoldást, ám ezúttal ne a dolgozó táblából, hanem az egyes ciklusok rejtett kurzoraiból kérdezzük le egyszerű értékadással (az adott ciklus ciklusváltozóján keresztül) az aktuális rekord partner értékét (lásd a DataLoad_D.sql szkript programot). Eredményként az alábbi táblát kapjuk: EMPNO ENAME JOB PARTNER HIREDATE SAL COMM DEPTNO MARTIN SALESMAN ALLEN SALESMAN TURNER SALESMAN WARD SALESMAN SIGORSZKI SALESMAN Ez láthatóan hibás (Martinnak és Sigorszkinak ugyanaz a partner jutott). Mi a hiba oka? A magyarázat a kurzorok alaptermészetében keresendő: A kurzorbeli lekérdezés eredménye egy zárt memóriaterületre kerül, melyet nem befolyásol azon adattábla tartalmának megváltozása, melyre a kurzorlekérdezés történt. #03_PL-SQL Feladatgyűjtemény [06]
21 2. Feladat Hozzon létre egy dolgozó nevű táblát az emp tábla rekordjaiból, és bővítse egy partner nevű oszloppal, melynek típusa egyezzen meg az ename oszlop típusával. Készítsen egy SQL*Plus programba ágyazott PL/SQL blokkot, amely megkisérli a dolgozókat párosítani az alábbi szempontok alapján: - minden dolgozó táblabeli dolgozó partnere csak dolgozó táblabeli dolgozó lehet, - önmagának senki nem lehet partnere, - mindenki legfeljebb egy valakinek lehet partnere, - két dolgozó partnere lehet egymásnak, ha ugyanaz a főnökük és megegyezik a munkakörük. Megoldás SET serveroutput ON SET numwidth 5 DROP VIEW dolgozó; DROP TABLE dolgozó; CREATE TABLE dolgozó SELECT * FROM emp; ALTER TABLE dolgozó DROP COLUMN partner; ALTER TABLE dolgozó ADD partner VARCHAR2(6) DEFAULT '---'; DECLARE i_partner dolgozó.partner%type; j_partner dolgozó.partner%type; BEGIN FOR i IN (SELECT * ) LOOP SELECT partner INTO i_partner WHERE empno = i.empno; FOR j IN (SELECT * ) LOOP SELECT partner INTO j_partner WHERE empno = j.empno; IF (i.mgr = j.mgr) AND (i.job = j.job) AND (i.empno <> j.empno) AND (i_partner = '---') AND (j_partner = '---') THEN DBMS_OUTPUT.PUT_LINE(i.ename i_partner ' ' j.ename j_partner); SET partner = j.ename WHERE empno = i.empno; SET partner = i.ename WHERE empno = j.empno; EXIT; END IF; END LOOP; #03_PL-SQL Feladatgyűjtemény [06]
22 END LOOP; END; / SELECT * ; SET numwidth 10 Eredmény A tábla eldobva. A tábla létrejött. A tábla módosítva. A tábla módosítva. ALLEN--- WARD--- JONES--- BLAKE--- MARTIN--- TURNER--- SCOTT--- FORD--- A PL/SQL eljárás sikeresen befejeződött. EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO PARTNE SMITH CLERK ALLEN SALESMAN WARD 7521 WARD SALESMAN ALLEN 7566 JONES MANAGER BLAKE 7654 MARTIN SALESMAN TURNER 7698 BLAKE MANAGER JONES 7782 CLARK MANAGER SCOTT ANALYST FORD 7839 KING PRESIDENT TURNER SALESMAN MARTIN 7876 ADAMS CLERK JAMES CLERK FORD ANALYST SCOTT 7934 MILLER CLERK sor kijelölve. #03_PL-SQL Feladatgyűjtemény [06]
23 10.3. Feladat 3.1. Hozzon létre egy dolgozó nevű táblát az emp tábla rekordjaiból Készítsen triggert a dolgozó táblába történő ellenőrzött adatbevitelhez, ahol az alábbi adatbeviteli feltételeket a trigger által meghívott tárolt alprogramokban vizsgálja meg: a.) Részleg feltétel: Egy új dolgozó részlegeként csak már létező részleg azonosítója adható meg. b.) Fizetési feltétel: Egy új dolgozó fizetésként a részlegében és vele azonos munkakörben dolgozók átlagfizetésének legalább a 3/4-ét kapja, ha a részlegében nincs vele azonos munkakörű, akkor a részlegében dolgozók átlagfizetésének 2/3-ánál legalább 300 USD-vel többet, ha pedig a részlegében ő az első dolgozó, akkor legalább 2000 USD-t A trigger és a tárolt eljárások ellenőrzése érdekében végezze el a szükséges adatfelviteleket Az elkészített megoldás a tárolandó dolgozó nevét írja vissza a képernyőre, és sikeres adatfelvitel esetén írja ki a dolgozó nevét, majd az "OK!" üzenetet, míg sikertelen adatfelvitel esetén a "HIBA:" üzenetet, és a sikertelenség okát Utolsó lépésként listázza a dolgozó táblát, majd állítsa vissza az eredeti táblatartalmat. Megoldás 0. lépés (Az SQL*Plus környezet inicializálása) -- Az emp tábla inicializálása (ezúttal elhagyjuk) -- Feltételezve, hogy az INIT1.sql a BIN könyvtárban van -- A dátum és megjelenítés inicializálása ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD'; SET numwidth 5 -- Az esetlegesen létező azonos nevű objektumok törlése DROP VIEW dolgozó; DROP TABLE dolgozó; -- A PL/SQL kiíratások engedélyezése SET serveroutput ON; A munkamenet módosítva. ORA-00942: a tábla vagy a nézet nem létezik ORA-00942: a tábla vagy a nézet nem létezik 1. lépés feladata 3.1. Hozzon létre egy dolgozó nevű táblát az emp tábla rekordjaiból. 1. lépés feladatának megoldása DROP TABLE dolgozó; CREATE TABLE dolgozó SELECT * FROM emp; SELECT * ; ORA-00942: a tábla vagy a nézet nem létezik A tábla létrejött. EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO KING PRESIDENT BLAKE MANAGER CLARK MANAGER JONES MANAGER MARTIN SALESMAN ALLEN SALESMAN #03_PL-SQL Feladatgyűjtemény [06]
24 7844 TURNER SALESMAN JAMES CLERK WARD SALESMAN FORD ANALYST SMITH CLERK SCOTT ANALYST ADAMS CLERK MILLER CLERK sor kijelölve. 2. lépés feladata 3.2. Készítsen triggert a dolgozó táblába történő ellenőrzött adatbevitelhez, ahol az alábbi adatbeviteli feltételeket a trigger által meghívott tárolt alprogramokban vizsgálja meg: a.) Részleg feltétel: Egy új dolgozó részlegeként csak már létező részleg azonosítója adható meg. b.) Fizetési feltétel: Egy új dolgozó fizetésként a részlegében és vele azonos munkakörben dolgozók átlagfizetésének legalább a 3/4-ét kapja, ha a részlegében nincs vele azonos munkakörű, akkor a részlegében dolgozók átlagfizetésének 2/3-ánál legalább 300 USD-vel többet, ha pedig a részlegében ő az első dolgozó, akkor legalább 2000 USD-t Az elkészített megoldás a tárolandó dolgozó nevét írja vissza a képernyőre, és sikeres adatfelvitel esetén írja ki a dolgozó nevét, majd az "OK!" üzenetet, míg sikertelen adatfelvitel esetén a "HIBA:" üzenetet, és a sikertelenség okát. 2. lépés feladatának megoldása Megjegyzés: m1. A részlegfeltétel ellenőrzése érdekében létre kell hoznunk a részleg táblát is. m2. A 3.4. pontbeli követelményt célszerű a triggerben, illetve a trigger által meghívott tárolt eljárásokban megvalósítani lépés (A részleg tábla létrehozása) -- Az esetlegesen létező azonos nevű objektumok törlése DROP VIEW részleg; DROP TABLE részleg; -- A részleg tábla létrehozása CREATE TABLE részleg SELECT * FROM dept; SELECT * FROM részleg; ORA-00942: a tábla vagy a nézet nem létezik ORA-00942: a tábla vagy a nézet nem létezik A tábla létrejött. DEPTNO DNAME LOC ACCOUNTING NEW YORK 20 RESEARCH DALL 30 SALES CHICAGO 40 OPERATIONS BOSTON 2.2. lépés (A részlegfeltételt ellenőrző tárolt alprogram létrehozása) -- A részleglétezést ellenőrző tárolt alprogram -- Ennek két kimenete van attól függően, hogy létezik-e a megadott részleg, -- vagy nem (ez a hiba ág). CREATE OR REPLACE PROCEDURE Részlegfeltétel(RészlegID IN NUMBER) Előfordulás INTEGER; #03_PL-SQL Feladatgyűjtemény [06]
25 BEGIN SELECT COUNT(*) INTO Előfordulás FROM részleg WHERE deptno = RészlegID; IF Előfordulás = 0 -- F-a. FELTÉTEL! THEN RAISE_APPLICATION_ERROR(-20110, '>>HIBA: A Részlegfeltétel nem teljesül!'); ELSE DBMS_OUTPUT.PUT_LINE('OK! ' '(A Részlegfeltétel teljesül.)'); END IF; END; / SHOW ERROR Az eljárás létrejött. Nincsenek hibák lépés (A fizetési feltételt ellenőrző tárolt alprogram létrehozása) -- A fizetési feltételt ellenőrző tárolt alprogramban két vizsgálatot kell elvégezni. -- Először azt, hogy van-e már a megadott részlegben dolgozó, vagy nincs, -- Ha van dolgozó, akkor pedig azt, hogy van-e azonos munkakörű, vagy nincs. CREATE OR REPLACE PROCEDURE Fizetésfeltétel(RészlegID IN NUMBER, Munkakör IN VARCHAR2, Fizetés IN NUMBER) IS RészlegbeliDolgozók INTEGER; MunkakörbeliDolgozók INTEGER; RészlegÁtlag dolgozó.sal%type; MunkakörÁtlag dolgozó.sal%type; FizetésHatár dolgozó.sal%type; BEGIN -- Az új dolgozó részlegében már dolgozók számának meghatározása SELECT COUNT(*) INTO RészlegbeliDolgozók WHERE deptno = RészlegID; -- A fizetés vizsgálata a részlegbeli dolgozók számától függően IF RészlegbeliDolgozók = 0 THEN -- Ekkor az új dolgozó az első dolgozó a részlegében IF Fizetés >= F-b3. FELTÉTEL! THEN DBMS_OUTPUT.PUT_LINE('OK! ' '(Az új fizetés legalább 2000 USD.)'); ELSE RAISE_APPLICATION_ERROR(-20113, '>>HIBA: Az új fizetés kisebb 2000 USD-nél!'); END IF; ELSE -- Ekkor már vannak mások is az új dolgozó részlegében -- Kérdés: Vannak-e azonos munkakörbeliek is? SELECT COUNT(*) INTO MunkakörbeliDolgozók WHERE deptno = RészlegID AND UPPER(job) = UPPER(Munkakör); -- A fizetés vizsgálata a részlegbeli dolgozók munkakörétől függően #03_PL-SQL Feladatgyűjtemény [06]
26 több.)'); IF MunkakörbeliDolgozók = 0 THEN -- Nincs azonos munkakörű a részlegben SELECT AVG(sal) INTO RészlegÁtlag GROUP BY deptno HAVING deptno = RészlegID; FizetésHatár := ROUND(2/3 * RészlegÁtlag) + 300; DBMS_OUTPUT.PUT_LINE('> 2/3 * RészlegÁtlag = ' FizetésHatár); IF Fizetés >= FizetésHatár -- F-b2. FELTÉTEL! THEN DBMS_OUTPUT.PUT_LINE('OK! ' '(Az új fizetés a részlegátlag 2/3-ánál min. 300 USD-vel ELSE RAISE_APPLICATION_ERROR(-20112, '>>HIBA: Az új fizetés kisebb, ' 'mint a részlegátlag 300 USD-vel megnövelt értéke!'); END IF; ELSE -- Van azonos munkakörű a részlegben SELECT AVG(sal) INTO MunkakörÁtlag GROUP BY deptno, job HAVING deptno = RészlegID AND UPPER(job) = UPPER(Munkakör); FizetésHatár := ROUND(3/4 * MunkakörÁtlag); DBMS_OUTPUT.PUT_LINE('> 3/4 * MunkakörÁtlag = ' FizetésHatár); IF Fizetés >= FizetésHatár -- F-b1. FELTÉTEL! THEN DBMS_OUTPUT.PUT_LINE('OK! ' '(Az új fizetés a részlegbeli munkaköri átlag 3/4-nél több.)'); ELSE RAISE_APPLICATION_ERROR(-20111, '>>HIBA: Az új fizetés kisebb, ' 'mint a részlegbeli munkaköri átlag 3/4-e!'); END IF; END IF; END IF; END; / SHOW ERROR Az eljárás létrejött. Nincsenek hibák. Megjegyzés A fenti tárolt eljárásban a SELECT AVG(sal) INTO RészlegÁtlag GROUP BY deptno HAVING deptno = RészlegID; helyett írhattuk volna SELECT AVG(sal) INTO RészlegÁtlag #03_PL-SQL Feladatgyűjtemény [06]
27 WHERE deptno = RészlegID; valamint a SELECT AVG(sal) INTO MunkakörÁtlag GROUP BY deptno, job HAVING deptno = RészlegID AND UPPER(job) = UPPER(Munkakör); helyett írhattuk volna SELECT AVG(sal) INTO MunkakörÁtlag WHERE deptno = RészlegID AND UPPER(job) = UPPER(Munkakör); 2.4. lépés (Az adatbevitel-felügyelő trigger létrehozása) -- A sortrigger a feltételvizsgáló tárolt alprogramokat hívja meg. DROP TRIGGER AdatFelügyelő; CREATE OR REPLACE TRIGGER AdatFelügyelő BEFORE INSERT ON dolgozó FOR EACH ROW BEGIN DBMS_OUTPUT.PUT_LINE ('> A felviendő dolgozó: ' :new.ename); Részlegfeltétel(:new.deptno); Fizetésfeltétel(:new.deptno, :new.job, :new.sal); DBMS_OUTPUT.PUT_LINE (:new.ename ': OK!'); END; / SHOW ERROR ORA-04080: 'ADATFELÜGYELŐ' trigger nem létezik A trigger létrejött. Nincsenek hibák. 3. lépés feladata 3.3. A trigger és a tárolt eljárások ellenőrzése érdekében végezze el a szükséges adatfelviteleket. 3. lépés feladatának megoldása (A felügyelt adatbevitel ellenőrzése) Az alábbiakban ellenőrizni kell az F-a., F-b1., F-b2. és F-b3. feltételek mindegyikének teljesülését és nem teljesülését. Ennek célszerű módja olyan adatfelviteleket készíteni, melyekben mindig csak egy feltétel nem-teljesülését és teljesülését vizsgáljuk. Mivel az F-a. feltétel teljesülése az összes többihez szükséges, így mindössze hét adatfelvitel szükséges a teljes ellenőrzéshez lépés (Adatlekérdezések az ellenőrzéshez) -- Részlegenkénti munkaköri átlagok (az F-b1. feltétel vizsgálatához) SELECT deptno Részleg, job Munkakör, ROUND(AVG(sal)*3/4) "RészlegMunkakörÁtlag 3/4-e" GROUP BY deptno, job; RÉSZLEG MUNKAKÖR RészlegMunkakörÁtlag 3/4-e CLERK MANAGER PRESIDENT CLERK ANALYST MANAGER CLERK MANAGER SALESMAN 1050 #03_PL-SQL Feladatgyűjtemény [06]
28 9 sor kijelölve. -- Részlegátlagok (az F-b2. feltétel vizsgálatához) SELECT deptno Részleg, ROUND(AVG(SAL)*2/3)+300 "2/3-ad RészlegÁtlag + 300" GROUP BY deptno; RÉSZLEG 2/3-ad RészlegÁtlag lépés (Ellenőrzések) Ellenőrzés: -- Az F-a. (Részlegfeltétel) NEM-teljesülésének vizsgálata INSERT INTO dolgozó VALUES(1234,'Péter(a)','SALESMAN',7698,' ',2000,NULL,50); > A felviendő dolgozó: Péter(a) INSERT INTO dolgozó * Hiba a(z) 1. sorban: ORA-20110: >>HIBA: A Részlegfeltétel nem teljesül! ORA-06512: a(z) "SCOTT.RÉSZLEGFELTÉTEL", helyen a(z) 11. sornál ORA-06512: a(z) "SCOTT.ADATFELÜGYELŐ", helyen a(z) 3. sornál ORA-04088: hiba a(z) 'SCOTT.ADATFELÜGYELŐ' trigger futása közben Ellenőrzés: -- Az F-a. (Részlegfeltétel) teljesülése mellett -- az F-b1. (Fizetési feltétel, RészlegMunkakör Fiz.átlag 3/4-e) vizsgálata INSERT INTO dolgozó VALUES(1234,'János1(b1)','SALESMAN',7698,' ',1049,NULL,30); INSERT INTO dolgozó VALUES(1234,'János2(b1)','SALESMAN',7698,' ',1050,NULL,30); > A felviendő dolgozó: János1(b1) OK! (A Részlegfeltétel teljesül.) > 3/4 * MunkakörÁtlag = 1050 INSERT INTO dolgozó * Hiba a(z) 1. sorban: ORA-20111: >>HIBA: Az új fizetés kisebb, mint a részlegbeli munkaköri átlag 3/4-e! ORA-06512: a(z) "SCOTT.FIZETÉSFELTÉTEL", helyen a(z) 78. sornál ORA-06512: a(z) "SCOTT.ADATFELÜGYELŐ", helyen a(z) 4. sornál ORA-04088: hiba a(z) 'SCOTT.ADATFELÜGYELŐ' trigger futása közben > A felviendő dolgozó: János2(b1) OK! (A Részlegfeltétel teljesül.) > 3/4 * MunkakörÁtlag = 1050 OK! (Az új fizetés a részlegbeli munkaköri átlag 3/4-nél több.) János2(b1): OK! 1 sor létrejött Ellenőrzés: -- Az F-a. (Részlegfeltétel) teljesülése mellett -- az F-b2. (Fizetési feltétel, 2/3-ad RészlegÁtlag + 300) NEM-teljesülésének vizsgálata INSERT INTO dolgozó VALUES(1234,'Éva1(b2)','TANULÓ',7698,' ',1749,NULL,20); INSERT INTO dolgozó VALUES(1234,'Éva2(b2)','TANULÓ',7698,' ',1750,NULL,20); > A felviendő dolgozó: Éva1(b2) OK! (A Részlegfeltétel teljesül.) #03_PL-SQL Feladatgyűjtemény [06]
29 > 2/3 * RészlegÁtlag = 1750 INSERT INTO dolgozó * Hiba a(z) 1. sorban: ORA-20112: >>HIBA: Az új fizetés kisebb, mint a részlegátlag 300 USD-vel megnövelt értéke! ORA-06512: a(z) "SCOTT.FIZETÉSFELTÉTEL", helyen a(z) 57. sornál ORA-06512: a(z) "SCOTT.ADATFELÜGYELŐ", helyen a(z) 4. sornál ORA-04088: hiba a(z) 'SCOTT.ADATFELÜGYELŐ' trigger futása közben > A felviendő dolgozó: Éva2(b2) OK! (A Részlegfeltétel teljesül.) > 2/3 * RészlegÁtlag = 1750 OK! (Az új fizetés a részlegátlag 2/3-ánál min. 300 USD-vel több.) Éva2(b2): OK! 1 sor létrejött Ellenőrzés: -- Az F-a. (Részlegfeltétel) teljesülése mellett -- az F-b3. (Fizetési feltétel, a részlegben még nincs dolgozó) NEM-teljesülésének vizsgálata INSERT INTO dolgozó VALUES(1234,'Ágnes1(b3)','SALESMAN',7698,' ',1999,NULL,40); INSERT INTO dolgozó VALUES(1234,'Ágnes2(b3)','SALESMAN',7698,' ',2000,NULL,40); > A felviendő dolgozó: Ágnes1(b3) OK! (A Részlegfeltétel teljesül.) INSERT INTO dolgozó * Hiba a(z) 1. sorban: ORA-20113: >>HIBA: Az új fizetés kisebb 2000 USD-nél! ORA-06512: a(z) "SCOTT.FIZETÉSFELTÉTEL", helyen a(z) 27. sornál ORA-06512: a(z) "SCOTT.ADATFELÜGYELŐ", helyen a(z) 4. sornál ORA-04088: hiba a(z) 'SCOTT.ADATFELÜGYELŐ' trigger futása közben > A felviendő dolgozó: Ágnes2(b3) OK! (A Részlegfeltétel teljesül.) OK! (Az új fizetés legalább 2000 USD.) Ágnes2(b3): OK! 1 sor létrejött. 4. lépés feladata 3.5. Utolsó lépésként listázza a dolgozó táblát, majd állítsa vissza az eredeti táblatartalmat. 4. lépés feladatának megoldása -- A dolgozó tábla listázása és adatvisszaállítás SELECT * ; ROLLBACK; SELECT * ; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO KING PRESIDENT BLAKE MANAGER CLARK MANAGER JONES MANAGER MARTIN SALESMAN ALLEN SALESMAN TURNER SALESMAN JAMES CLERK WARD SALESMAN FORD ANALYST SMITH CLERK SCOTT ANALYST ADAMS CLERK MILLER CLERK #03_PL-SQL Feladatgyűjtemény [06]
30 1234 János2(b1) SALESMAN Éva2(b2) TANULÓ Ágnes2(b3) SALESMAN sor kijelölve. A visszaállítás befejeződött. EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO KING PRESIDENT BLAKE MANAGER CLARK MANAGER JONES MANAGER MARTIN SALESMAN ALLEN SALESMAN TURNER SALESMAN JAMES CLERK WARD SALESMAN FORD ANALYST SMITH CLERK SCOTT ANALYST ADAMS CLERK MILLER CLERK sor kijelölve. #03_PL-SQL Feladatgyűjtemény [06]
31 Melléklet Dinamikus SQL Dinamikus SQL PROMPT >>> első példa >>> SET SERVEROUTPUT ON ACCEPT azon PROMPT 'Kérem a keresendő név azonosítóját: ' DECLARE nev VARCHAR2(20); azon NUMBER(4); sqlsztring VARCHAR2(100); BEGIN sqlsztring := 'SELECT ename FROM emp WHERE empno = :1'; EXECUTE IMMEDIATE sqlsztring INTO nev USING &azon; DBMS_OUTPUT.PUT_LINE('A keresett név: ' nev); end; / aa1 Adja meg a(z) azon értékét: 7788 régi 10: USING &azon; új 10: USING 7788; A keresett név: SCOTT A PL/SQL eljárás sikeresen befejeződött. Interaktív dinamikus sql. A lekérdezést, vagy PL/SQL blokkot szrtingként adjuk meg a végrehajtó blokkban. Hivás az EXECUTE IMMEDIATE és a Select vagy PL/SQL blokk sztringként Amennyiben interaktívan akarjuk használni a dinamikus SQL-t, akkor & -tel hivatkozunk rá. jobb megoldás ha paraméterezetten használjuk. Ekkor a paraméterek sorszámát adjuk meg a SELECT-ben, és a USING záradék után írjuk a paramétert. PROMPT >>>> második példa >>>> ACCEPT azon PROMPT 'Kérem a keresendő rekord azonosítóját: ' DECLARE nev Varchar2(20); azon NUMBER(4); foglalkoz emp.job%type; fizetes emp.sal%type; reszleg emp.deptno%type; sqlsztring VARCHAR2(100); BEGIN sqlsztring := 'SELECT ename, job, sal, deptno ' 'FROM emp' ' WHERE empno = :1'; EXECUTE IMMEDIATE sqlsztring INTO nev,foglalkoz, fizetes, reszleg USING &azon; #03_PL-SQL Feladatgyűjtemény [06]
2012. április 27. TARTALOM
KENDE MÁRIA - NAGY ISTVÁN PL/SQL FELADATGYŰJTEMÉNY TARTALOM 9. Foglalkozás Hivatkozási és összetett adattípusok, kurzor, ROWID... 2 10. Foglalkozás Összefoglaló feladatok... 15 Melléklet Dinamikus SQL...
RészletesebbenAdatbázis használat I. 2. gyakorlat
Adatbázis használat I. 2. gyakorlat Tudnivalók Oracle 10g a weben: http://www.oracle.com/technetwork/databa se/database10g/downloads/index.html FF kiírásokat legkésőbb a jövő hétre hozni! 2011. 02. 15.
RészletesebbenADATBÁZIS HASZNÁLAT I. 4. gyakorlat
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 elégséges feltétele a minimum elégséges érdemjegynek!
RészletesebbenAdatbázis használat I. 2. gyakorlat
Adatbázis használat I. 2. gyakorlat Tudnivalók Oracle 10g a weben: http://www.oracle.com/technetwork/database/ database10g/downloads/index.html Egyéb letöltési lehetőség: http://jerry.gorextar.hu/ab1/oracle/
RészletesebbenPL/SQL (folytatás) Kurzorok, függvények, eljárások
PL/SQL (folytatás) Kurzorok, függvények, eljárások Kurzorok Adattábla soronkénti feldolgozására szolgál A memóriában egy munkaterületen tárolódik a kurzorhoz tartozó tábla A kurzor az eredményhalmazban
Részletesebben2007. február 25. TARTALOM
KENDE MÁRIA - NAGY ISTVÁN ANALITIKUS SQL FELADATGYŰJTEMÉNY TARTALOM 9. Foglalkozás Részletező csoportosítások... 2 10. Foglalkozás Analitikus függvények... 5 Melléklet A ROW_NUMBER szintaktikája... 10
RészletesebbenAdatbázis használat I. 5. gyakorlat
Adatbázis használat I. 5. gyakorlat Tudnivalók Jövő hétre a normalizálást hozni vagy e- mailben beküldeni! 7. héten (= két hét múlva!) nagyzh + FF checkpoint: adattáblák feltöltése, megszorítások 2010.
Részletesebben1.1. Feladat Listázza ki a 20-as részleg dolgozóinak nevét, belépési idejét, foglalkozását a nevek szerint csökkenően rendezve.
SELECT * ; SELECT * FROM dept; 1.1. Feladat Listázza ki a 20-as részleg dolgozóinak nevét, belépési idejét, foglalkozását a nevek szerint csökkenően rendezve. SELECT ename, hiredate, job WHERE deptno=20
RészletesebbenCsomag. Adatbázis-objektum Programozási eszközök gyűjteménye Két részből áll. specifikáció törzs (opcionális)
Csomagok Csomag Adatbázis-objektum Programozási eszközök gyűjteménye Két részből áll specifikáció törzs (opcionális) Csomagspecifikáció CREATE [OR REPLACE] PACKAGE csomagnév [AUTHID {DEFINER CURRENT_USER}]
RészletesebbenOracle Példatár (SQL-PL/SQL)
KENDE MÁRIA NAGY ISTVÁN Oracle Példatár (SQL-PL/SQL) (FELADATGYŰJTEMÉNY) PANEM Tartalomjegyzék KENDE MÁRIA NAGY ISTVÁN...1 Oracle Példatár (SQL-PL/SQL)...1 PANEM...1 Tartalomjegyzék...2 1. fejezet...4
RészletesebbenPL/SQL feladatok 8. gyakorlat
1. feladat PLSQL feladatok 8. gyakorlat Változóhasználat (I. az SQL*Plus felhasználói változói, II. az SQL*Plus környezeti változói, III. a PLSQL (belsõþ) változói). Az adatok képernyõþre való kiíratása
RészletesebbenSQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók
SQL*Plus Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP dolgozó), DEPT osztály) "közönséges" felhasználók Adatszótár: metaadatokat tartalmazó, csak olvasható táblák táblanév-prefixek:
RészletesebbenTranzakciókezelés PL/SQL-ben
Tranzakciókezelés PL/SQL-ben ACID tulajdonságok: Tranzakció Atomosság, Konzisztencia, Izoláció, Tartósság A tranzakció állhat: - Több DML utasításból - Egy DDL utasításból A tranzakció kezdete az első
Részletesebben2012. április 13. TARTALOM
KENDE MÁRIA - NAGY ISTVÁN SQL BEVEZETŐ FELADATGYŰJTEMÉNY TARTALOM Előszó... 2 Megjegyzés... 2 0. Foglalkozás Adatbázis tervezés... 3 1. Foglalkozás Az SQL használatának alapjai, Egyszerű lekérdezések...
RészletesebbenSELECT DISTINCT deptno FROM emp; (distinct) SELECT STATEMENT HASH UNIQUE TABLE ACCESS FULL EMP
SELECT * FROM emp; SELECT ename FROM emp; (projekció) SELECT ename FROM emp WHERE ename='jones'; (szelekció) ------------------------------------------ SELECT DISTINCT deptno FROM emp; (distinct) --------------------------------
RészletesebbenHaladó DBMS ismeretek 1
Haladó DBMS ismeretek 1 Hasznos információk A tantárgy weboldala: it.inf.unideb.hu/honlap/halado_oracle1 Oracle Junior képzés Gyakorlatok és a neptun Gyakorlat követelmények Ajánlott irodalom Juhász István
RészletesebbenA trigger egy aktualizálási művelet esetén végrehajtandó programrészletet definiál. Alakja:
ORACLE TRIGGEREK A trigger egy aktualizálási művelet esetén végrehajtandó programrészletet definiál. Alakja: CREATE [OR REPLACE] TRIGGER név { BEFORE AFTER INSTEAD OF } { DELETE INSERT UPDATE [OF oszlopok]
RészletesebbenPL/SQL 1. rész. Procedural Language extension to SQL
PL/SQL 1. rész Procedural Language extension to SQL utasítást ; zárja le PL/SQL blokk lezárása: / Szintaxis kis- és nagybetű egyenértékű (az utasításokban a kulcsszavakat szoktuk nagybetűvel írni, de nem
RészletesebbenKENDE MÁRIA NAGY ISTVÁN: Oracle Példatár(SQL-PL/SQL) Házi feladatok a 3.gyakorlathoz: 1. fejezet: Egyszerű lekérdezések
KENDE MÁRIA NAGY ISTVÁN: Oracle Példatár(SQL-PL/SQL) Házi feladatok a 3.gyakorlathoz: 1. fejezet: Egyszerű lekérdezések 1.1. Feladat Listázza ki a 20-as részleg dolgozóinak nevét, belépési idejét, foglalkozását
RészletesebbenAdatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN
Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN B IT v: 2016.03.03 MAN Csomagok A DBMS csomagok a PL/SQL alkalmazások fejlesztését segítik, bennük tároljuk a létrehozott programok kódjait. A specifikációs
RészletesebbenB I T M A N B I v: T 2015.03.01 M A N
Adatbázis Rendszerek MSc 2. Gy: MySQL Táblák, adatok B I v: T 2015.03.01 M A N 1/41 Témakörök SQL alapok DDL utasítások DML utasítások DQL utasítások DCL utasítások 2/41 Az SQL jellemzése Az SQL a relációs
RészletesebbenAdatbázis Rendszerek II. 2. Ea: Gyakorló környezet
Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet 26/1 B IT v: 2018.02.21 MAN Gyakorló környezet apex.oracle.com/en/ 26/2 A regisztrációs folyamat 26/3 26/4 26/5 26/6 26/7 26/8 26/9 26/10 26/11 Feladatok
RészletesebbenAdatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER
Adatbázisok I 1 SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER Módosítás: DML: - rekord felvitel INSERT - rekord törlés
RészletesebbenB IT MAN 65/1. Adatbázis Rendszerek II. Ellenőrző kérdések APLSQL B IT MAN. v:
B IT MAN 65/1 Adatbázis Rendszerek II. Ellenőrző kérdések APLSQL B IT MAN v: 2016.02.27 Ellenőrző kérdések 1. B IT MAN 65/2 1. Egy bemenő paraméter nélküli tárolt rutin visszaad egy értéket. Ez a rutin:
Részletesebben8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:
8. Gyakorlat SQL SQL: Structured Query Language; a relációs adatbáziskezelők szabványos, strukturált lekérdező nyelve SQL szabványok: SQL86, SQL89, SQL92, SQL99, SQL3 Az SQL utasításokat mindig pontosvessző
RészletesebbenGyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.
Adatbázis létrehozása Adatleíró műveletek CREATE DATABASE "tan1" WITH ENCODING= LATIN2 ; vagy parancssorból a terminál alatt $ createdb tan1 E=latin2 Kapcsolódás az adatbázishoz $ psql tan1 Adattábla létrehozása
RészletesebbenSQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák
SQL Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák A SELECT UTASÍTÁS ÁLTALÁNOS ALAKJA (ISM.) SELECT [DISTINCT] megjelenítendő oszlopok FROM táblá(k direkt szorzata) [WHERE feltétel]
RészletesebbenORACLE. SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók
Oracle SQL*Plus SQL ORACLE Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók Adatszótár: metaadatokat tartalmazó, csak olvasható
RészletesebbenAdatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17
Adatbázisok 8. gyakorlat SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT 2015. október 26. 2015. október 26. Adatbázisok 1 / 17 SQL nyelv Structured Query Language Struktúrált lekérdez
RészletesebbenAdattípusok. Max. 2GByte
Adattípusok Típus Méret Megjegyzés Konstans BIT 1 bit TRUE/FALSE TINIINT 1 byte 12 SMALLINT 2 byte -123 INTEGER 4 byte -123 COUNTER 4 byte Automatikus 123 REAL 4 byte -12.34E-2 FLOAT 8 byte -12.34E-2 CURRENCY
RészletesebbenSQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére
SQL PÉLDATÁR készült a PTE TTK Iskolai informatika III. kurzus teljesítésére PTE TTK Czimmermann Gergely MA matematika informatika tanár szakos hallgató 2017 Tartalomjegyzék 1. Adatleíró műveletek... 3
RészletesebbenAdatbázis Rendszerek II. 2. Gyakorló környezet
Adatbázis Rendszerek II. 2. Gyakorló környezet 37/1 B IT v: 2017.02.11 MAN Gyakorló környezet Géptermek 37/2 Jelszó váltás 1 2 3 4 37/3 Gyakorló környezet II. apex.oracle.com/en/ 37/4 A regisztrációs folyamat
RészletesebbenKilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos
PASzSz Kilencedik témakör: Lazarus-Firebird Készítette: Dr. Kotsis Domokos Az SQLdb fülön IBConnection Kapcsolat A Data Access fülön Az SQLdb fülön... Select 1. Az SQLQuery lezárása. (Active := false,
RészletesebbenAdatbázis rendszerek SQL nyomkövetés
Adatbázis rendszerek 1. 12. SQL nyomkövetés 1/32 B ITv: MAN 2017.10.26 Nyomkövetési feladat 2/32 Gyakorló feladatok Termék-Vásárlás-Vásárló Oktató-Tantárgy-Hallgató 3/32 Gyakorló feladat: Termék-Vásárlás-Vásárló
RészletesebbenA gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:
1 Adatbázis kezelés 3. gyakorlat A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni: Tábla kapcsolatok létrehozása,
RészletesebbenAdattípusok. Max. 2GByte
Adattípusok Típus Méret Megjegyzés Konstans BIT 1 bit TRUE/FALSE SMALLINT 2 byte -123 INTEGER 4 byte -123 COUNTER 4 byte Automatikus 123 REAL 4 byte -12.34E-2 FLOAT 8 byte -12.34E-2 CURRENCY / MONEY 8
RészletesebbenADATBÁZISOK gyakorlat: SQL 2. rész SELECT
ADATBÁZISOK 9-10. gyakorlat: SQL 2. rész SELECT SELECT utasítás általános alakja SELECT [DISTINCT] oszloplista FROM táblanévlista [WHERE feltétel] [GROUP BY oszloplista [HAVING feltétel] ] [ORDER BY oszloplista];
RészletesebbenAdatbázis kezelés Delphiben. SQL lekérdezések
Adatbázis kezelés Delphiben. SQL lekérdezések Structured Query Language adatbázisok kezelésére szolgáló lekérdező nyelv Szabályok: Utasítások tetszés szerint tördelhetők Utasítások végét pontosvessző zárja
RészletesebbenAdatbázis Rendszerek II. 6. PLSQL Triggerek 32/1B IT MAN
Adatbázis Rendszerek II. 6. PLSQL Triggerek 32/1B IT MAN B IT v: 2016.03.04 MAN Passzív adatbázisok negatívumai Példa: VIR rendszer egyik adatbázis összegyűjti a termelési adatokat, egy másik erre épül
RészletesebbenAdatbázis-lekérdezés. Az SQL nyelv. Makány György
Adatbázis-lekérdezés Az SQL nyelv Makány György SQL (Structured Query Language=struktúrált lekérdező nyelv): relációs adatbázisok adatainak visszakeresésére, frissítésére, kezelésére szolgáló nyelv. Születési
RészletesebbenADATBÁZIS-KEZELÉS FÉLÉVES FELADAT
ÓBUDAI EGYETEM Neumann János Informatikai Kar Nappali Tagozat ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT NÉV: MÁK VIRÁG NEPTUN KÓD: A DOLGOZAT CÍME: Jani bácsi székadatbázisa Beadási határidő: 14. oktatási hét
RészletesebbenAdatbázis használat I. 1. gyakorlat
Adatbázis használat I. 1. gyakorlat Tudnivalók Nagy Gabriella nagy.gabriella@nik.uni-obuda.hu BA. 306. szoba www.orakulum.com => Adatbázis-kezelés => AKT (Adatbázis-Kezelés Technológiája) 2011. 02. 08.
RészletesebbenKalmár György Adatbázis alapú rendszerek
Kalmár György Adatbázis alapú rendszerek Oracle-ben az SQL utasítások feldolgozásához szükség van egy ún. kontextus memóriára, amely az összes lényeges információt tárolja egy utasítás végrehajtásához.
RészletesebbenTriggerek. Olyan névvel ellátott adatbázisobjektumok, amelyek eseményorientált feldolgozást tesznek lehetővé
Triggerek Triggerek Olyan névvel ellátott adatbázisobjektumok, amelyek eseményorientált feldolgozást tesznek lehetővé egy eseményre válaszul futnak le a triggernevek külön névteret alkotnak Esemény bekövetkezésének
RészletesebbenB I T M A N B I v: T 2015.03.09 M A N
Adatbázis Rendszerek II. 5. Gy: PLSQL Triggerek B I v: T 2015.03.09 M A N 1/37 Passzív adatbázisok negatívumai Példa: VIR rendszer egyik adatbázis összegyűjti a termelési adatokat, egy másik erre épül
RészletesebbenAdatbázisok* tulajdonságai
Gazdasági folyamatok térbeli elemzése 4. előadás 2010. 10. 05. Adatbázisok* tulajdonságai Rendezett, logikailag összefüggő és meghatározott szempont szerint tárolt adatok és/vagy információk halmaza Az
RészletesebbenA gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:
1 Adatbázis kezelés 2. gyakorlat A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni: Táblák létrehozása,
RészletesebbenPL/SQL blokk. [címke] [DECLARE deklarációs utasítás(ok)] BEGIN végrehajtható utasítás(ok) [EXCEPTION kivételkezelő] END [név];
PL/SQL blokk [címke] [DECLARE deklarációs utasítás(ok)] végrehajtható utasítás(ok) [EXCEPTION kivételkezelő] END [név]; PL/SQL alprogramok Blokkba ágyazva Séma szinten Csomagban PL/SQL alprogramok Eljárás:
RészletesebbenSQL parancsok feldolgozása
Az SQL nyelv SQL nyelv szerepe Sequental Query Language, deklaratív nyelv Halmaz orientált megközelítés, a relációs algebra műveleteinek megvalósítására Előzménye a SEQUEL (IBM) Algoritmus szerkezeteket
RészletesebbenTartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2
Tartalomjegyzék Tartalomjegyzék 1 Az SQL nyelv 1 Az SQL DDL alapjai 2 Adatbázis parancsok 2 Táblaparancsok 2 A táblázat létrehozása 2 A táblázat módosítása 3 A tábla törlése 3 Indextábla létrehozása 3
RészletesebbenEgyüttes hozzárendelés
Együttes hozzárendelés Együttes hozzárendelés Hozzárendelés: az a tevékenységet, amikor egy PL/SQLváltozónak egy SQL-utasításban adunk értéket. Együttes hozzárendelés: Egy kollekció minden elemének egyszerre
RészletesebbenLBRA6i integrált rendszer
LBRA6i integrált rendszer LIBRA 6i logolás és a log megtekintése Készítette: Libra Szoftver Zrt. Létrehozás dátuma: 2005.12.15. Utolsó módosítás: 2014.10.30. Referencia szám: LIBRA6i_UZEM_V_1.5 Verzió:
RészletesebbenAdatbázisok elmélete 9. előadás
Adatbázisok elmélete 9. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu http://www.cs.bme.hu/ kiskat 2005 ADATBÁZISOK ELMÉLETE
RészletesebbenSQL DDL-2 (aktív elemek) triggerek
SQL DDL-2 (aktív elemek) triggerek Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 7.fej.: Megszorítások és triggerek 7.4. Önálló megszorítások 7.5. Triggerek
RészletesebbenAz indexelés újdonságai Oracle Database 12c R1 és 12c R2
Az indexelés újdonságai Oracle Database 12c R1 és 12c R2 Szabó Rozalinda Oracle adattárház szakértő, oktató szabo.rozalinda@gmail.com Index tömörítés fejlődése 8.1.3-as verziótól: Basic (Prefixes) index
RészletesebbenAdatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány)
Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány) 23/1 B IT v: 2018.10.31 MAN DML adatokon műveletet végző utasítások DML Data Manipulation Language Rekordok (sorok) beszúrása (felvitele) Mezők
RészletesebbenAdatbázisok elmélete 9. előadás
Adatbázisok elmélete 9. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu http://www.cs.bme.hu/ kiskat 2005 ADATBÁZISOK ELMÉLETE
RészletesebbenAdatbázis-kezelés, információs-rendszerek
Adatbázis-kezelés, információs-rendszerek 3. Ea: Eskúel (2011) Structured Query Language v: 2011.09.05 Szűcs Miklós - ME, ÁIT. 1.o Témakörök SQL alapok DDL utasítások DML utasítások DQL utasítás DCL utasítások
RészletesebbenA könyv tartalomjegyzéke
A könyv tartalomjegyzéke Elıszó Bevezetés Adatbázis-kezelı rendszerek Adatmodellezés Alapfogalmak Egyedhalmaz, egyed Kapcsolat, kapcsolat-elıfordulás, kapcsolat típusa Tulajdonság, tulajdonságérték, értékhalmaz
RészletesebbenJava és web programozás
Budapesti M szaki Egyetem 2013. november 20. 10. El adás SQLite SQLite: Adatbázis kezel rendszer SQL standardokat nagyrészt követi Nagyon elterjedt, pl böngész kben is használt Nehéz olyan programnyelvet
RészletesebbenBGF. 4. Mi tartozik az adatmodellek szerkezeti elemei
1. Mi az elsődleges következménye a gyenge logikai redundanciának? inkonzisztencia veszélye felesleges tárfoglalás feltételes függés 2. Az olyan tulajdonság az egyeden belül, amelynek bármely előfordulása
RészletesebbenB I T M A N B I v: T 2015.02.22 M A N
Adatbázis Rendszerek II. 2. Gy: PLSQL 1. B I v: T 2015.02.22 M A N 1/75 A PL/SQL alapjai A PL/SQL alapjai Változók DBMS_OUTPUT Vezérlési szerkezetek Tömbök Tárolt rutinok kezelése 2/75 Tárolt eljárások
RészletesebbenSQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások
SQL haladó Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások 1 Külső összekapcsolás Összekapcsoljuk R és S relációkat: R C S. R azon sorait,
RészletesebbenA relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai
8. gyakorlat Structured Query Language Struktúrált lekérdező nyelv A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai DDL (Data Definition Language) adatstruktúra definiáló
RészletesebbenAdatbázisok II. Jánosi-Rancz Katalin Tünde 327A 1-1
Adatbázisok II. 1 Jánosi-Rancz Katalin Tünde tsuto@ms.sapientia.ro 327A 1-1 Ajánlott irodalom Ullman-Widom: Adatbázisrendszerek. Alapvetés (Második, átdolgozott kiad), Panem, 2008. november (bővítés pl.uml,
RészletesebbenAdatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14
Adatbázisok 9. gyakorlat SQL: SELECT 2015. október 26. 2015. október 26. Adatbázisok 1 / 14 SQL SELECT Lekérdezésre a SELECT utasítás szolgál, mely egy vagy több adattáblából egy eredménytáblát állít el
RészletesebbenAdatbázis Rendszerek II. 8. Gyakorló környezet
Adatbázis Rendszerek II. 8. Gyakorló környezet 1/24 B IT v: 2017.10.26 MAN Gyakorló környezet Géptermek 193.6.5.58:8080/apex H16_neptunkód ADMIN neptunkód 2/24 Jelszó váltás 1 2 3 4 3/24 Gyakorló környezet
RészletesebbenTábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) );
Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) ); CREATE TABLE `dihunor`.`csapat` ( `ID` INT( 4 ) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'A csapat azonositoja',
RészletesebbenAdatbázisok I. Az SQL nyelv
Adatbázisok I Az SQL nyelv SQL (Structured Query Language) Deklaratív nyelv, 1974-ben publikálták Halmaz orientált megközelítés, a relációs algebra műveleteinek megvalósítására Előzménye a SEQUEL (IBM)(Structured
RészletesebbenKészítette: Szabóné Nacsa Rozália
Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu 1 Structured Query Language (Struktúrált lekérdező nyelv) Relációs adatbázisok kezelésére kifejlesztett szabvány 2 DIAKOK dkód vnév knév 1001 Kiss János
RészletesebbenAz SQL*Plus használata
Az SQL*Plus használata Célkitűzés Bejelentkezés az SQL*Plus-ba SQL utasítások szerkesztése Az eredmény formázása SQL*Plus utasításokkal Szkriptfájlok használata Az SQL és az SQL*Plus kapcsolata SQL*Plus
RészletesebbenADATBÁZISOK I. Az esetleges hibákat kérlek a csongor@csongorbokay.com címen jelezd! Utolsó módosítás: 2013. március 20.
ADATBÁZISOK I. Szerkesztette: Bókay Csongor Az esetleges hibákat kérlek a csongor@csongorbokay.com címen jelezd! Utolsó módosítás: 2013. március 20. Ez a Mű a Creative Commons Nevezd meg! - Ne add el!
RészletesebbenMS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1
SZE INFORMATIKAI KÉPZÉS 1 ADATBÁZIS-KEZELÉS MS ACCESS 2010 A feladat megoldása során a Microsoft Office Access 2010 használata a javasolt. Ebben a feladatban a következőket fogjuk gyakorolni: Adatok importálása
RészletesebbenSQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER
Adatbázisok I SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER Módosítás: DML: - rekord felvitel INSERT - rekord törlés
RészletesebbenAdatbázisok. 2. gyakorlat SQL november november 12. Adatbázisok 1 / 31
Adatbázisok 2. gyakorlat SQL 2016. november 12. 2016. november 12. Adatbázisok 1 / 31 SQL nyelv Structured Query Language Struktúrált lekérdez nyelv A relációs adatbáziskezelés szabványos nyelve Két f
RészletesebbenDebreceni Egyetem Informatikai Kar TANULÓI NYILVÁNTARTÓ SZOFTVER FIREBIRD ADATBÁZIS ALKALMAZÁSÁVAL
Debreceni Egyetem Informatikai Kar TANULÓI NYILVÁNTARTÓ SZOFTVER FIREBIRD ADATBÁZIS ALKALMAZÁSÁVAL Témavezető: Dr. Bajalinov Erik Tudományos főmunkatárs Készítette: Juhász Gergely József Informatikatanári
RészletesebbenAdatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE) október október 22. Adatbázisok 1 / 14
Adatbázisok 8. gyakorlat SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE) 2014. október 22. 2014. október 22. Adatbázisok 1 / 14 SQL nyelv Structured Query Language Struktúrált lekérdez nyelv A
RészletesebbenAdatbázis-kezelés. Harmadik előadás
Adatbázis-kezelés Harmadik előadás 39 Műveletek csoportosítása DDL adat definiálás Objektum létrehozás CREATE Objektum törlés DROP Objektum módosítás ALTER DML adat módosítás Rekord felvitel INSERT Rekord
RészletesebbenAdatbázisok elmélete 10. előadás
Adatbázisok elmélete 10. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu http://www.cs.bme.hu/ kiskat 2004 ADATBÁZISOK ELMÉLETE
RészletesebbenA gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlaton a következőket fogjuk gyakorolni:
1 Adatbázis kezelés 4. gyakorlat A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlaton a következőket fogjuk gyakorolni: Adatlekérdezés Tábla létrehozása,
RészletesebbenINFORMATIKAI ALAPISMERETEK
Informatikai alapismeretek középszint 0631 ÉRETTSÉGI VIZSGA 2006. október 24. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ OKTATÁSI ÉS KULTURÁLIS MINISZTÉRIUM
RészletesebbenSQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai
SQL ALAPOK Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai BEVEZETÉS SQL: Structured Query Language Strukturált Lekérdező Nyelv Szabvány határozza meg, azonban számos nyelvjárása létezik
Részletesebben5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben?
Adatbázis modellek 5. téma XML DB Az adatkezelés és XML kapcsolata Miért fontos az XML használata az adatbázis kezelésben? Adattárolás alapformái: - strukturált - szabad-szöveges - szemi struktúrált -
RészletesebbenAdatbázisban tárolt kollekciók
Adatbázisban tárolt kollekciók Dinamikus tömb és beágyazott tábla lehet CREATE TYPE t_beagy IS TABLE OF NUMBER; CREATE TYPE t_dint IS VARRAY(5) OF NUMBER; CREATE TABLE koll_tab ( azon NUMBER PRIMARY KEY,
RészletesebbenÖsszefoglaló. <variable_name> [IN OUT IN OUT] <data_type> [:=<default_value>] ... <label_name>: <statements>... GOTO <label_name>;...
Összefoglaló PL/SQL alapok: Minden utasítást pontos vesszővel zárunk le. 1. Változó deklaráció: [:=]; 2. Paraméter megadása (adattípusra itt nem lehet megszorítás!):
RészletesebbenBevezetés: az SQL-be
Bevezetés: az SQL-be Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 2.3. Relációsémák definiálása SQL-ben, adattípusok, kulcsok megadása 02B_BevSQLsemak
RészletesebbenOO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.
OO PDO PDO VS MYSQLi VS MYSQL ================================================================================ A PHP mysql metódusai elavultak, helyette lehet hazsnálni a MYSQLi metódusokat, amelyek szinte
RészletesebbenA PL/SQL motor. A PL/SQL nyelvű egységek fordítását és futtatását végző rendszer. az adatbázis-kezelőben fejlesztőeszközben (pl.
PL/SQL architektúra A PL/SQL motor A PL/SQL nyelvű egységek fordítását és futtatását végző rendszer az adatbázis-kezelőben fejlesztőeszközben (pl. Oracle Forms) Ha nincs benne SQL-utasítás, a teljes egység
RészletesebbenAdatbázisok II. rész
Adatbázisok II. rész Érettségi feladatok Új adatbázist készítünk A táblákat a külső adatok menüfül szövegfájl pontjánál importáljuk (nem pedig megnyitjuk!) Fontos: az első sor tartalmazza az oszlopneveket
RészletesebbenKivételkezelés 2. SQLCODE lehetséges értékei:
Kivételkezelés Kivételkezelés 1 Futási időben bekövetkező hibák beépített (futtató rendszer váltja ki): előre definiált nem előre definiált felhasználói Az előre definiált és a felhasználói kivételeknek
RészletesebbenBEVEZETÉS Az objektum fogalma
BEVEZETÉS Az objektum fogalma Program (1) Adat (2) Objektum Kiadványszerkesztés Word Táblázatkezelés Excel CAD AutoCad Adatbáziskezelés Access 1 Program (1) Adat (2) Objektum Adatmodell (2) A valós világ
RészletesebbenElemi alkalmazások fejlesztése IV.
Structured Query Language (Struktúrált lekérdez ı nyelv) Relációs adatbázisok kezelésére kifejlesztett szabvány né Nacsa Rozália nacsa@inf.elte.hu Fejlesztı : MySQLAB weboldal: www.mysql.com MySQL installálása.
RészletesebbenAdatbázisok I. Jánosi-Rancz Katalin Tünde tsuto@ms.sapientia.ro 327A 1-1
Adatbázisok I. 4 Jánosi-Rancz Katalin Tünde tsuto@ms.sapientia.ro 327A 1-1 Relációs algebra alapja a konkrét lekérdez nyelveknek ő egy speciális algebra, egy halmazorientált nyelv, amely a lekérdezéseket
RészletesebbenSQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok
SQL jogosultság-kezelés Privilégiumok Grant és Revoke Grant Diagrammok 1 Jogosultság-kezelés Egy fájlrendszer általában jogosultságokat rendel az általa kezelt objektumokhoz. Tipikusan olvasható, írható,
RészletesebbenAdatbázis Rendszerek II. 4. PLSQL Kurzorok, hibakezelés 53/1B IT MAN
Adatbázis Rendszerek II. 4. PLSQL Kurzorok, hibakezelés 53/1B IT MAN B IT v: 2017.03.02 MAN A PL/SQL alapjai Adatok kezelése Kurzorok Hibakezelés 53/2 B IT MAN Adatok kezelése PL/SQL-ben Műveletek: Írás
RészletesebbenBevezetés az SQL*Plus környezet, és az SQL nyelv használatába
3. MELLÉKLET Bevezetés az SQL*Plus környezet, és az SQL nyelv használatába Tartalomjegyzék Bevezetés...1 Belépés az SQL*Plus környezetbe...2 Felhasználói táblák lekérdezése...4 Felhasználói katalógus és
RészletesebbenAz SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)
Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv) Az SQL a relációs adatbázis-kezelő rendszerek ma legelterjedtebb szabványosított adatbáziskezelő nyelve. Az IBM dolgozta ki 1983-ban,
RészletesebbenAdatbázisok elleni fenyegetések rendszerezése. Fleiner Rita BMF/NIK Robothadviselés 2009
Adatbázisok elleni fenyegetések rendszerezése Fleiner Rita BMF/NIK Robothadviselés 2009 Előadás tartalma Adatbázis biztonsággal kapcsolatos fogalmak értelmezése Rendszertani alapok Rendszerezési kategóriák
RészletesebbenAdatbázis, adatbázis-kezelő
Adatbázisok I. rész Adatbázis, adatbázis-kezelő Adatbázis: Nagy adathalmaz Közvetlenül elérhető háttértárolón (pl. merevlemez) Jól szervezett Osztott Adatbázis-kezelő szoftver hozzáadás, lekérdezés, módosítás,
RészletesebbenAdatbázisok-1 előadás Előadó: dr. Hajas Csilla
Adatbázisok-1 előadás Előadó: dr. Hajas Csilla Áttekintés az I.zh-ig Áttekintés az 1ZH-ig // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1 Hol tartunk? Mit tanultunk
Részletesebben