Feladatok:
Táblák tartalmának módosítása: insert, delete, update
Táblák
és megszorítások
megvalósítása, nézettáblák create table/view
-- I.ZH feladatok és tapasztalatok megbeszélése
-- Gépes gyakorlat: Oracle:
SQL teljes áttekintés
> 2.1.
DML: insert,
delete,
update -- create table-no-constraints
> 2.2.
Relációsémák és
megszorítások definiálása
SQL-ben
> 2.3. Nézettáblák létrehozása és használata ORACLE
SQL ÁTTEKINTÉSE: SQL
DDL (CREATE
TABLE, CREATE
VIEW)
-- Táblák
és megszorítások
(constraints) létrehozása.
-- Egyszerű és összetett
nézettáblák
létrehozása. SQL
tranzakciókezelés --
tranzakciókezelés alapjai,
érvényesítés: COMMIT,
és visszagörgetés:
ROLLBACK
és mentési
pontok: SAVEPOINT SQL DML (INSERT, DELETE, UPDATE)
-- Adatok
karbantartása adattáblán
illetve
nézeten
keresztül,
és megfigyelni
ezek egymásra
hatását: Hogyan hat a nézetek
adatainak
módosítása az
adattáblára, és a másik
irányban,
az
adatok módosítása hogyan
jelenik meg a nézetben?
-- Eközben
mentési pontokat adjunk meg, ahova
folyton
visszagörgetjük
(visszaállítjuk a táblák
eredeti állapotát). SQL
lekérdezések: Oracle
specialitások -- Felső-N elemzés
ROWNUM segítségével
-- Hierarchikus lekérdezések CONNECT BY PRIOR
-- Rekurzió az SQL-ben WITH utasítás
2.1.
Adattáblák tartalmának
módosítása (DML)
Demo példák: > AB1EA: SQL1 - DML Tk. 6.5. Táblák tartalmának módosítása > Oracle - DML Oracle példák táblák tartalmának módosítása
-- Az Oracle dokumentációban
szereplő példák
kipróbálásához:
>>
Lekérdezésekhez: createHRsyn
(elég volt a szinonimákat használni)
>>
Módosításhoz: createHRtables (de most saját táblaként hozzuk létre)
DELETE
1. Töröljük azokat a dolgozókat,
akiknek jutaléka NULL.
2. Töröljük azokat a dolgozókat,
akiknek a belépési dátuma 1982 előtti.
3. Töröljük azokat a dolgozókat,
akik osztályának telephelye DALLAS.
4. Töröljük azokat a dolgozókat,
akiknek a fizetése kisebb, mint az
átlagfizetés.
5. Töröljük ki azokat az
osztályokat, akiknek van olyan dolgozója,
aki a 2-es
fizetési
kategóriába esik (lásd FizFokozat táblát, adjuk meg azon osztályok
nevét, amelyeknek van olyan dolgozója,
aki a 2-es fizetési
kategóriába esik)
6. Töröljük ki azon osztályokat,
amelyeknek 2 olyan dolgozója van, aki a 2-es
fizetési
kategóriába esik.
INSERT
7. Vigyünk fel egy 'Kovacs' nevű új
dolgozót a 10-es osztályra a következő
értékekkel: dkod=1,
dnev='Kovacs', oazon=10,
belépés=aktuális dátum,
fizetés=a 10-es osztály
átlagfizetése. A többi oszop legyen NULL.
8. Több sor felvitele: Hozzunk létre egy UjOsztaly nevű táblát, amelynek
attribútumai megegyeznek az Osztály tábla oszlopaival, plusz van még egy
numerikus típusú Letszam nevű attribútuma. Ebbe az UjOsztaly táblába az
insert utasítás 2.
alakjával (alkérdéssel ) vigyünk fel
új sorokat az osztály és
dolgozó táblák
aktuális tartalmának
felhasználásával minden osztály
adatát
kiegészítve az adott
osztályon dolgozók
létszámával. Azok az osztályok is
jelenjenek meg ahol nem dolgozik
senki, ott a létszám 0 legyen. Továbbá
ha vannak olyan dolgozók, akiknek nincs (nem ismert) az osztályuk,
azok
létszámát egy oazon=0, onev= 'FIKTIV' és telephely='ISMERETLEN'
adatokkal rendelkező sorba írjuk be.
UPDATE
9. Növeljük meg a 20-as osztályon a
dolgozók fizetését 20%-kal.
10. Növeljük meg azok fizetését
500-zal, akik jutaléka NULL vagy
a
fizetésük kisebb az átlagnál.
11. Növeljük meg mindenkinek a
jutalékát a jelenlegi maximális
jutalékkal.
12. Módosítsuk 'Loser'-re a legrosszabbul kereső
dolgozó nevét.
13. Növeljük meg azoknak a dolgozóknak a
jutalékát 3000-rel, akiknek
legalább 2 közvetlen
beosztottjuk van.
Az ismeretlen (NULL) jutalékot
vegyük úgy, mintha 0 lenne.
14. Növeljük meg azoknak a dolgozóknak a
fizetését, akiknek van olyan
beosztottja, aki minimális fizetéssel rendelkezik.
15. Növeljük meg a nem főnökök
fizetését a saját osztályuk
átlagfizetésével.
További
gyakorló feladatok:
lásd Példatár
"5.fejezet. DML-utasítások"
2.2.
Relációsémák és
megszorítások definiálása
SQL-ben
1.) Írjon szkript programot, amely új
adattáblát hoz létre az emp
és
dept táblákból
myemp és mydept néven. Ha
már
léteznek ilyen nevű
táblák, akkor előbb
azokat törölje.
Véglegesítse az
adattáblákat (commit).
A létrehozott
táblákat lássa el az alábbi
megszorításokkal:
- Legyen az empno elsődleges kulcs a
myemp
táblában, és
- legyen a deptno elsődleges kulcs a
mydept
táblában és idegen kulcs a myemp
táblában, amely a
hivatkozási épséget
biztosítja oly
módon, hogy egy osztály
törlése
esetén törlődjenek ennek az
osztálynak a
dolgozói is.
- Egy új dolgozó csak az
adott 700
és 7000 USD
értéktartománybeli
fizetést
kaphasson.
2.) Ellenőrizze ezeket a megszorításokat sikeres
(megfelelő rekord felvitele)
és sikertelen
(hibás rekord)
adatbeviteli kísérletekkel, majd
állítsa vissza
az eredeti táblatartalmakat
(rollback).
Véglegesítse az
adattáblákat (commit).
További
gyakorló feladatok:
lásd Példatár
"5.fejezet. Adattáblák
létrehozása,
módosítása, tranzakciók,
megszorítások" DML- és DDL-
utasításokra feladatok
2.3. Nézettáblák létrehozása és használata
CREATE VIEW - Nézettáblák létrehozása
Demo példák: > AB1EA: SQL5 - DDL3/ nézetek Tk.8.fej. Nézettáblák
> Oracle - DDL2nezet Oracle
példák nézettáblák
létrehozására, használatára
-- Az Oracle dokumentációban
szereplő példák
kipróbálásához:
>>
Lekérdezésekhez: createHRsyn
(elég volt a szinonimákat használni)
>>
Módosításhoz: createHRtables (de most saját táblaként hozzuk létre) Feladatok:
1.) Egyszerű és összetett
nézettáblák
létrehozása, melyik módosítható és melyik nem?
2.) Adatok
karbantartása adattáblán
illetve
nézeten
keresztül,
és megfigyelni
ezek
egymásra
hatását: Hogyan hat a nézetek adatainak
módosítása az
adattáblára,
és a másik
irányban, az
adatok módosítása hogyan
jelenik meg a nézetben?
3.) Ellenőrizze ezeket a megszorításokat sikeres
(megfelelő rekord felvitele)
és sikertelen
(hibás rekord)
adatbeviteli kísérletekkel, majd
állítsa vissza az
eredeti táblatartalmakat
(rollback).
Véglegesítse az
adattáblákat (commit).
További
gyakorló feladatok:
lásd Példatár
"6.fejezet. Nézettálblák
létrehozása"