SQL gyakorlatok Oracle környezetben 2. gyakorlat Adatdefiníciós és adatmanipulációs parancsok gyakorlása 1. feladat Egy vállalat dolgozóit kell tárolni egy adatbázisban. Szükség van a dolgozó személyi igazolvány számára, nevére, címére, fizetésére, születési dátumára, nemére, az osztály kódjára és nevére ahol dolgozik, illetve arra, hogy az osztály az épület hányadik emeletén található. A feladat relációs modellje: OSZTÁLY(Azonosító, Tevékenység, Emelet) DOLGOZÓ(Szigszám, Név, Város, Utca_hsz, Fizetés, Születési_dátum, Nem, Dolgozik) Hozzuk létre a táblákat az alábbiak szerint: OSZTALY oid: karakteres, fix 4 hosszú, elsődleges kulcs tevekenyseg: karakteres, változó hosszúságú, max 20 karakter emelet: numerikus egész, 2 számjegy hosszú, értéke 0 és 99 közé eső szám lehet DOLGOZO szigszam: karakteres, fix 8 hosszú, elsődleges kulcs nev: karakteres, változó hossz, max 30 karakter, kötelező kitölteni varos: karakteres, változó hossz, max 20 karakter utca_hsz: karakteres, változó hossz, max 30 karakter fizetes: numerikus egész, 7 számjegy hosszú, értéke legalább 50000 szuldat: dátum típus nem: karakteres fix 1 hosszú, értéke F vagy N lehet, alapértelmezett értéke F dolgozik: karakteres, fix 4 hosszú, idegen kulcs, az OSZTALY tábla oid mezőjére mutat 1
Vegyük fel a következő rekordokat: OSZTALY tábla oid tevekenyseg Emelet karb karbantartás 2 info informatika 5 gazd gazdasági 3 DOLGOZO tábla szigszam nev varos utca_hsz fizetes szuldat nem dolgozik aaaaaaaa Gipsz Jakab Kisapostag Ady 12. 70000 1941-05-15 F karb bbbbbbbb Tub Ica Dunaújváros Arany 21. 63500 1962-07-23 N gazd cccccccc Bármi Áron Rácalmás Kossuth 65. 52140 1974-03-06 F karb dddddddd Lapos Elemér Dunaújváros 98000 info eeeeeeee Gub Era Dunaújváros 82500 N info ffffffff Kukor Ica Kulcs 69000 N gazd Végezzük el a következő feladatokat: A nem Dunaújvárosi lakosok kapjanak 3000 forintos fizetésemelést. Bármi Áron elköltözött, új címe: Mezőfalva, Pálinka sor 11. Az informatika osztályon dolgozó nők kapjanak 5%-os béremelést. A cégnél felszámolják a karbantartó részleget, töröljük mindkét táblából a megfelelő rekordokat. Töröljük mindkét táblát. 2
2. feladat Egy futóverseny résztvevőit tartalmazó adatbázist kell létrehoznunk. Tárolni kell a versenyzők nevét, címét, és életkorát. Minden versenyző rajtszámot kap a versenyre való jelentkezéskor. Az első rajtszám 1-gyes legyen, a következő szám pedig eggyel nagyobb. A feladat relációs modellje: VERSENYZŐ(Rajtszám, Név, Cím, Életkor) Hozzuk létre a táblát az alábbiak szerint: VERSENYZO rajtszam: numerikus egész, 3 számjegy hosszú, elsődleges kulcs nev: karakteres, változó hossz, max 30 karakter, kötelező kitölteni cim: karakteres, változó hossz, max 30 karakter eletkor: numerikus egész, 2 számjegy hosszú, értéke 0 és 99 közé eshet. Vegyük fel a következő rekordokat: A rajtszámot egy szekvencia segítségével generáljuk. A szekvencia kezdőértéke 1, növelés mértéke 1, maximális érték nincs. rajtszam nev cim eletkor 1 Vincs Eszter Budapest HDD u. 10. 15 2 Henger Elek Győr Fő u. 32. 39 3 Glett Elek Tatabánya Turul u. 23. 22 4 Bud Spencer Valahol Európában 70 Végezzük el a következő feladatokat: Henger Elek betegség miatt visszamondta szereplését, emiatt töröljük az adatbázisból. Vegyünk fel egy új rekordot tetszőleges adatokkal. Figyeljük meg az új rekord sorszámát, a törölt rekord sorszáma nem került újragenerálásra. 3
3. feladat Egy videotéka nyilvántartási rendszerét kell elkészíteni. Tárolni kell az ügyfelek személyes adatait (személyi igazolvány száma, név, cím, telefon), a kölcsönözhető filmek adatait (cím, hossz, készítés éve, kölcsönzési díj, műfaj, kazetta sorszáma). A kikölcsönzött kazettákat is nyilván kell tartani a kölcsönző adataival összepárosítva. A feladat relációs modellje: ÜGYFÉL(szigszám, név, cím, telefon) KÖLCSÖNZÉS(sorszám, szigszám, dátum) KAZETTA(sorszám, f_cím) FILM(cím, hossz, év, kölcs_díj, m_azon) MŰFAJ(azon, név) Hozzuk létre a táblákat az alábbiak szerint: UGYFEL szigszam: karakteres, fix 8 hosszú, elsődleges kulcs nev: karakteres, változó hossz, max 30 karakter, kötelező kitölteni cim: karakteres, változó hossz, max 30 karakter, kötelező kitölteni telefon: karakteres, fix 10 hosszú, kötelező kitölteni MUFAJ azon: karakteres, fix 1 hosszú, elsődleges kulcs nev: karakteres, változó hossz, max 20 karakter FILM cim: karakteres, változó hossz, max 30 karakter, elsődleges kulcs hossz: numerikus egész, 3 számjegy hosszú ev: numerikus egész, 4 számjegy hosszú, értéke nagyobb 1900-nál kolcs_dij: numerikus egész, 4 számjegy hosszú, nem lehet negatív m_azon: karakteres fix 1 hosszú, idegen kulcs, a MUFAJ tábla azon mezőjére mutat. KAZETTA sorszam: numerikus egész, 3 számjegy hosszú, elsődleges kulcs f_cim: karakteres, változó hossz, max 30 karakter, idegen kulcs, a FILM tábla cim mezőjére mutat 4
KOLCSONZES sorszam: numerikus egész, 3 számjegy hosszú, elsődleges kulcs, idegen kulcs, a KAZETTA tábla sorszam mezőjére mutat szigszam: karakteres, fix 8 hosszú, idegen kulcs, az UGYFEL tábla szigszam mezőjére mutat datum: dátum típus, alapértelmezett értéke a mai dátum (SYSDATE függvény az aktuális dátumot adja vissza) Vegyük fel a következő rekordokat: UGYFEL tábla szigszam nev cim telefon ad111111 Zúz Mara Dunaújváros, Kossuth 2. 25/111111 ad222222 Kukor Ica Dunaújváros, Kinizsi 23. 25/222222 ad333333 Kup Ica Dunaújváros, Jókai 11. 25/333333 ad444444 Bármi Áron Rácalmás, Fő 62. 25/444444 ad555555 Lapos Elemér Baracs, Legelő 9. 25/555555 MUFAJ tábla azon nev k kaland a akció t thriller h horror r romantikus v vígjáték i ismeretterjesztő m mese s sci-fi FILM tábla cim hossz ev kolcs_dij m_azon Terminátor I 110 1983 200 s Terminátor II 130 1991 300 s A dszungel fia 93 1972 100 k Az élő bolygó 1-8 230 1987 300 i Aladdin 90 1996 200 m Szeszmeralda 96 1999 400 r 5
KAZETTA tábla sorszam f_cim 1 Terminátor I 2 Terminátor I 3 Terminátor II 4 Terminátor II 5 A dszungel fia 6 Az élő bolygó 1-8 7 Aladdin 8 Szeszmeralda 9 Szeszmeralda 10 Szeszmeralda KOLCSONZES tábla sorszam szigszam datum 1 ad222222 2003-10-12 4 ad222222 2003-10-12 5 ad111111 2003-11-01 7 ad111111 2003-11-01 9 ad111111 2003-11-23 6 ad555555 2003-12-11 Végezzük el a következő feladatokat: Kukor Ica (ad222222) visszahozta a kikölcsönzött filmeket, töröljük a vele kapcsolatos bejegyzéseket a KOLCSONZES táblából. Bármi Áron kiköttette vezetékes telefonját, mobilszáma: 20/1234567, módosítsuk a bejegyzést. Az 1990-nél régebben készült sci-fik kölcsönzési díját csökkentsük le 100 forintra. Hajtsunk végre egy általános 10%-os áremelést minden filmnél. A 9-es sorszámú kazetta elveszett, töröljük az adatbázisból. Kup Ica elvinné a Szeszmeralda című filmet, ha bent van a film valamelyik példánya, akkor jegyezzük be a kölcsönzés tényét. Vegyünk fel egy új ügyfelet tetszőleges adatokkal és adjuk oda neki a Terminátor II szabad példányát. Töröljük a táblákat. 6