Adatbzis gyakorlat SQL 2 Adatok kezelse Tarcsi dm
Adatbázis gyakorlat – SQL 2: Adatok kezelése – Tarcsi Ádám, ade@elte. hu 2007. január 30.
Miről lesz szó? • • Adatok rögzítése Adatok módosítása Adatok törlése Táblák módosítása – munka a táblákkal
DML műveletek • új sorokat tudunk beszúrni (INSERT INTO) • létező sorok adatait tudjuk módosítani (UPDATE) • sorokat tudunk törölni (DELETE) Tranzakciókezelés: bank példa! COMMIT: jóváhagyás ROLLBACK: visszavonás Autocommit előnye, hátránya!
Adatok rögzítése – INSERT INTO <táblanév> [(<mezőnév 1>, …, <mezőnévn>)] VALUES (<érték 1>, …, <értékn>) Példa: INSERT INTO t. Tanar VALUES (1, ’Zsakó László’); COMMIT;
Feladatok - INSERT • Feladat: Töltsük fel a t. Tanar táblát az ábrának megfelelően! • Feladat: Rögzítsük 1 -es azonosítóval Nagy Júliát, aki 14 éves és az 2 -es azonosítójú tanár tanítja! • Feladat: Töltsük fel további adatokkal a t. Diak táblát!
Adatok módosítása: UPDATE <tábalnév> SET <mezőnév 1>=<érték 1>, …, <mezőnévk>=<értékk> [WHERE <feltétel>] • Ha nincs WHERE, akkor a tábla összes rekordjára vonatkozik a módosítás. • Feladat: Feladat Nagy Júlia Anna egy évvel idősebb lett, módosítsuk az adatait ennek megfelelően! • UPDATE t. Diak SET Kor=Kor+1 WHERE DAzon=1 Hol Mire Mit, feltétel
Feladatok - UPDATE • Feladat: Feladat Módosítsuk az 1 -es azonosítójú diák nevét ’Nagy Júlia Anna’-ra! UPDATE t. Diak SET Nev=’Nagy Júlia Anna’ WHERE DAzon=1; COMMIT; • Feladat: Feladat Minden diáknak a 2 -es aztonosítójú tanár legyen az osztályfőnöke! Tipp: where nélkül
Adatok törlése - DELETE • DELETE FROM <táblanév> [WHERE <feltétel>] • Ha nincs WHERE, akkor a tábla összes rekordját töröljük. • Feladat: Feladat Töröljük az 1 -es azonosítójú diákot! • DELETE FROM t. Diak WHERE DAzon=1; COMMIT;
Feladatok – DELETE, COMMIT • Feladat: Feladat Töröljük a 3 -as azonosítójú tanárt. Miért nem sikerül? • Feladat: Feladat Töröljük azokat a diákokat, akiknek a 3 -as azonosítójú tanár az osztályfőnökük! • Mi történik, ha nem használunk COMMITot a törlés után?
Táblamódosítás - ALTER TABLE <tábla név> …; • Új oszlop hozzáadása a táblához (a tábla „végére”) – ALTER TABLE <tábla név> ADD <oszlop név> <oszlop típus>; – Adjunk egy Kor nevű egész típusú oszlopot a t. Tanar táblához! – ALTER TABLE t. Tanar ADD Kor INTEGER; • Egy oszlop típusának módosítása – ALTER TABLE <tábla név> MODIFY <oszlop név> <új oszlop típus>; – Típusproblémák!!! – Legyen a t. Diak tábla Nev mezőjének típusa 50 hosszú szöveg! – ALTER TABLE t. Diak MODIFY Nev VARCHAR(50); • egy oszlop törlése – – ALTER TABLE <tábla név> DROP COLUMN <oszlop név>; (Ha az oszlop például elsődleges kulcs, akkor a művelet hibához vezet. ) Töröljük a t. Tanar táblából a Kor oszlopot! ALTER TABLE t. Tanar DROP COLUMN Kor;
Megszorítás módosítása • Tábla szintű megszorítások: ALTER TABLE <tábla név> ADD CONSTRAINT <név> <típus> <(oszlop)>; • Feladat: Feladat Adjunk egy olyan megszorítást a t. Tanar táblához, aminek következtében nem tárolhatunk két ugyanolyan nevű tanárt! • ALTER TABLE t. Tanar ADD CONSTRAINT uq_t. Tanar UNIQUE (Nev); • Ellenőrzés: INSERT INTO t. Tanar VALUES (1, 'Tarcsi Ádám');
Megszorítás módosítása – 2. • Megszorítás törlése: ALTER TABLE <tábla név> DROP CONSTRAINT <megszorítás név>; • Feladat: Feladat Dobjuk el az előbbi megszorítást! • ALTER TABLE t. Tanar DROP CONSTRAINT uq_t. Tanar; • Ellenőrzés: INSERT INTO t. Tanar VALUES (1, 'Tarcsi Ádám');
Mezőszintű megszorítások módosítása • MODIFY segítségével • NOT NULL megszüntetése: NULL • Példa: Legyen a t. Diak tábla Kor mezőjének 18 az alapértelmezett értéke! • ALTER TABLE t. Diak MODIFY Kor INTEGER DEFAULT 18; • Ellenőrzés: INSERT INTO t. Diak (DAzon, Nev) VALUES (7, 'Pap Éva');
Táblák eldobása DROP TABLE <táblanév>; • • Feladat: Feladat Dobjuk el a t. Diak táblát! Megoldás: DROP TABLE t. Diak; Feladat: Feladat Dobjuk el a t. Tanar táblát! Megoldás: DROP TABLE t. Diak; Házi feladat: t. Diak és t. Tanar táblák elkészítése!!!
COMMIT, ROLLBACK gyakorlás • Feladat: Feladat Vigyünk fel még egy diákot! Kérdezzük le a t. Diak tábla tartalmát. Majd egy rollback kiadása után nézzük meg, mi történt. Ugyanezt csináljuk, de a felvitelkor kommitáljunk! • Feladat: Feladat Hajtsuk végre a következő utasításokat! DELETE FROM t. Diak SELECT * FROM t. Diak ROLLBACK SELECT * FROM t. Diak
- Slides: 15