SQL, adatdefiníció, adatok megváltoztatása, megszorítások

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

© Kozsik Tamás Adatbáziskezelés •Relációs adatbáziskezelők •Noha a Java objektum-elvű, egyelőre nem az objektum-elvű adatbáziskezelőket támogatja.
Adatbázis rendszerek I
Anyagadatbank c. tárgy gyakorlat
Adatbázisok SQL. TARTALOM Szijártó M.2 Témakörök  Az SQL tulajdonságai  A műveletek fajtái  Objektum-műveletek  Lekérdezések Tulajdonságok és műveletek.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Adatbázisok gyakorlat 8. gyakorlat SQL alapok.
15. tétel Adatbázis felhasználói és jogosultságaik
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.
1 Informatikai Szakképzési Portál Adatbázis kezelés DCL – Adatvezérlő nyelv.
Delphi programozás alapjai
SQL Structured Query Language
Adatbázis kezelés. Hierarchikus modell Legrégebbi modell, ma már nem használatos. Az adatokat fákban tároljuk, ahol minden pont a szegmens adatokat, és.
5. GYAKORLAT SQL CREATE TABLE, aktualizálás. S QL Structured Query Language A relációs adatbáziskezelés szabványos nyelve Nem algoritmikus, de beépíthető.
– SQL 2: Adatok kezelése – Tarcsi Ádám, január 30. Adatbázis gyakorlat.
Adatbázis gyakorlat – SUBSELECT – Tarcsi Ádám március.
– Adattáblák & adatok kezelése – Tarcsi Ádám január Adatbázis gyakorlat.
INSERT INTO Egy vagy több rekordot ad hozzá a táblához. Egyetlen rekordot hozzáfűző kifejezés: INSERT INTO cél_tábla (mező1,mező2,…) VALUES (érték1, érték2,
Adatbázis alapú rendszerek
Adatbázis rendszerek II.
Készítette: Sárközi Anikó
Delphi programozás alapjai Nagyváradi Anett PTE PMMK MIT.
2006. október 9.Markó Tamás, PTE TTK1 Az Oracle SQL 7. Kényszerek megadása. Indexek kezelése.
2006. október 2.Markó Tamás, PTE TTK1 Az Oracle SQL 5. Nézettáblák létrehozása, módosítása és törlése.
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
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
Adatbázis kezelés SQL. Történeti áttekintés 1976IBM:SEQUEL,SQL 1976IBM:SEQUEL,SQL 1983ORACLE 1983ORACLE 1984INFORMIX 1984INFORMIX 1986SQL – szabvány :
Kényszerek megadása. Indexek kezelése.
Nézettáblák létrehozása, módosítása és törlése
1 Informatikai Szakképzési Portál Adatbázis kezelés DML – Adat manipuláló nyelv.
- adatbázisséma definiálása (DDL) Data Definition Languages, - adatok aktualizálása (DML),Data Maniputaion Language - lekérdezési lehetőségek (DML) Data.
SQL. SQL = Structured Query Language (= struktúrált lekérdező nyelv). A relációs adatbázis-kezelés szabványos nyelve. Nem algoritmikus nyelv, de algoritmikus.
DML. Új rekord beszúrása: INSERT INTO tábla (oszlop1,oszlop2,…) VALUES (érték1,érték2,…); Rekord módosítása: UPDATE tábla SET oszlop = érték WHERE feltétel;
DDL – Adatdefiníciós nyelv
Adatbázis I. – 11. előadás Kulcsok az SQL – ben. Hivatkozás- épségi megszorítások és idegen kulcsok.
Adatbázis adminisztrátori ismeretek
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 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-kezelés SQL-lel. SQL SQL = Structured Query Language – Strukturált Lekérdezőnyelv Relációs adatbázis-kezelők lekérdezési nyelve. Alapjait az.
Adatbázis-kezelés SQL-lel
Felhasználók és jogosultságok
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
Az SQL nyelv. SQL Az SQL utasításait két fő csoportba szokták sorolni: DDL (= Data Definition Language): adatstuktúra definiáló utasítások. DML (= Data.
SQL-Structured Query Language. Parancs(utasítás) csoportok CREATE - táblák létrehozása ALTER – táblák módosítása DROP – táblák törlése DDL –Data Definition.
SQL.
1 Sramó András Adatbázis-technológia V. előadás Adatbázis-technológia 5. előadás Az SQL.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
Tarcsi Ádám, Adatbázis gyakorlat – Adattáblák – Tarcsi Ádám, január.
Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai
Adatbázisok gyakorlat
PL/SQL alapok Adatbázis-kezelés.
5. gyakorlat Fleiner Rita.
SQL haladó Külső összekapcsolások, Csoportosítás/Összesítés,
Webprogramozó tanfolyam
SQL. SQL jellemzői Nem algoritmikus (nem tartalmaz algoritmikus szerkezeteket: ciklus, eljárás, elágazás) Nem rekurzív (önmagát nem hívhatja) Halmazorientált.
Adatbázis rendszerek I
1 Verseny 2000 gyakorlat SQL 2000 Server Portál adatbázis létrehozása.
Adatbáziskezelés. Adat és információ Információ –Új ismeret Adat –Az információ formai oldala –Jelsorozat.
Adatbázis-kezelés 1-2. adatbázis-kezelő rendszer 1.új adatbázisokat hozhassanak (adat definició 2.lekérdezések és módosítások (adat manipuláció) 3.Támogassa.
SQL aggregálás, csoportosítás és összekapcsolás Adatbázisok 1.
1 SQL jogosultság-kezelés Privilégiumok Grant és Revoke Grant Diagrammok.
Adatbázis alapú rendszerek
Adatbázisok SQL.
Triggerek Kalmár György.
Logisztikai projekt - gyakorlat Adatbázis-elmélet
DDL parancsok – Tábla műveletek, mezőtulajdonságok
Előadás másolata:

SQL, adatdefiníció, adatok megváltoztatása, megszorítások Adatbázis-kezelés

Adatdefiníció Data Definining Language (DDL): az adatbázisséma létrehozatalára valamint megszorítások megfogalmazására szolgál. Az utasítás általában az ALTER kulcsszóval kezdődik.

Táblák definíciója, törlése Az Oracle-ben használt adattípusok egy összefoglalását lásd az SQL, PL/SQL típusok és függvények bemutatóban (SQL_tip_fv.ppt). Létrehozatal a CREATE TABLE utasítással. Törlés a DROP TABLE utasítással. Példa: CREATE TABLE szamla ( bank_azon VARCHAR2(4), azon VARCHAR2(4), osszeg NUMBER(7), lejarat DATE); DROP TABLE szamla;

Táblák módosítása Oszlop hozzáadása: ADD oszlop_nev tipus; Oszlop törlése: DROP COLUMN oszlop_nev [CASCADE CONSTRAINTS]; Oszlop módosítása: MODIFY oszlop_nev típus [DEFAULT kifejezés][megszorítások] Oszlop átnevezése: RENAME COLUMN regi TO uj; Példa: ALTER TABLE szamla ADD tulajdonos VARCHAR2(20); ALTER TABLE szamla DROP (tulajdonos); ALTER TABLE bank_azon VARCHAR2(6); ALTER TABLE szamla RENAME bank_azon TO b_azon;

Alapértelmezés szerinti értékek Ha egy attribútum értéke nem ismert, akkor ott a NULL érték szerepel. Egy-egy tábla definíciójánál, módosításánál megadhatjuk, mi legyen egy-egy attribútum alapértelmezés szerinti értéke. Példa: ALTER TABLE szamla ADD modositas DATE DEFAULT SYSDATE;

Nézettáblák I. A nézettáblák virtuális táblák, vagyis fizikailag sohasem tárolódnak az adatbázisban. Egy SELECT-FROM-WHERE lekérdezés segítségével hozzuk létre már létező táblákból és nézettáblákból. Szerepe (például): ha egy részeredményt gyakran használunk lekérdezésekben (Példa I), ha azt szeretnénk, hogy valaki egy-egy táblának csak bizonyos részeihez férjen hozzá, és ne lássa az ott tárolt összes adatot (Példa II). A CREATE VIEW nev AS sql_lekerdezes; utasítással hozzuk létre. DROP VIEW nev; utasítással töröljük.

Nézettáblák II. Példa I: CREATE VIEW ugyfel_szamla AS SELECT nev, azon, osszeg, lejarat FROM ugyfel, szamla WHERE azon = szamla_azon; Példa II: CREATE VIEW resz_szamla AS SELECT azon, lejarat FROM szamla; DROP VIEW ugyfel_szamla; DROP VIEW resz_szamla;

Nézettáblák III. Attribútumok átnevezése nézettáblákban, példa: CREATE VIEW ugyfel_szamla(tulaj, sz_azon, osszeg, lejarat) AS SELECT nev, azon, osszeg, lejarat FROM ugyfel, szamla WHERE azon = szamla_azon; Megjegyzés: természetesen a SELECT záradékban a korábban a zárójelek közt megadott sorrendnek megfelelően kell megadni az attribútumokat.

Nézettáblák IV. A létrehozó utasítás általános alakja: CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW nev [masodlagos_nev [, masodlagos_nev]…)] AS s-f-w lekerdezes [WITH READ ONLY | WITH CHECK OPTION];

Megszorítások: NOT NULL A NOT NULL megszorítással előírhatjuk, hogy egy attribútum értéke nem lehet ismeretlen, azaz NULL érték. Példa: CREATE TABLE szamla ( bank_azon VARCHAR2(4) NOT NULL, azon VARCHAR2(4) NOT NULL, osszeg NUMBER(7) NOT NULL, lejarat DATE NOT NULL);

Kulcsok I. Egy R relációban az X attribútumhalmaz kulcs, ha bármely két t1, t2 sorra, ha t1[X] = t2[X], vagyis a két sor megegyezik X értékein, akkor az összes többi attribútumon is megegyezik az értékük. Tipikusan kulcsot szoktak alkotni a különféle azonosítók, például személyi igazolvány szám. Egy táblának egyetlen elsődleges kulcsa lehet. Az Oracle az elsődleges kulcs attribútumaira automatikusan létrehoz egy indexet. Egy táblának ettől függetlenül természetesen több kulcsa is lehet.

Kulcsok II. Példa: CREATE TABLE ugyfel ( azon VARCHAR2(3) PRIMARY KEY, nev VARCHAR2(12), szamla_azon VARCHAR2(4), szuletes DATE, munkahely VARCHAR2 (10), fizetes VARCHAR2(6));

Kulcsok III. Példa: CREATE TABLE ugyfel ( azon VARCHAR2(3), nev VARCHAR2(12), szamla_azon VARCHAR2(4), szuletes DATE, munkahely VARCHAR2 (10), fizetes VARCHAR2(6), PRIMARY KEY (azon), UNIQUE (nev, szuletes)); Megjegyzés: gyakran érdemes a többi kulcsra is indexet létrehozni, ellenkező esetben a megszorítás ellenőrzése nagyon időigényessé válhat beszúrás és módosítás esetén. CREATE INDEX nev_szul ON ugyfel(nev, szuletes);

Idegen kulcsok I. Egy X attribútumhalmaz a Y attribútumhalmazra vonatkozóan idegen kulcs, ha Y minden értéke X értékei közt is előfordul. X-nek ilyenkor elsődleges kulcsnak kell lennie. Példa: a szamla tábla azon attribútuma az ugyfel tábla szamla_azon attribútumának idegen kulcsa. Hivatkozási épség fenntartása: ha olyan sort szúrunk be az ugyfel táblába, melynek szamla_azon értéke nem NULL és nem szerepel a szamla tábla azon attribútumának értékei közt, vagy ilyen értékre módosítjuk a szamla_azon értékét, akkor az utasítást nem hajtja végre a rendszer (alapeset); ha a szamla táblából olyan sort törlünk, ahol az azon érték szerepel a szamla_azon értékei közt, vagy egy ilyen azon értéket módosítanánk, a rendszer nem hajtja végre az utasítást (alapeset); ez utóbbi esetben azt is előírhatjuk, hogy törlés esetén az ugyfel tábla megfelelő sorai is törlődjenek, módosításnál pedig módosuljanak (továbbgyűrűző eljárás); illetve a megfelelő szamla_azon értékeket NULL-ra is állíttathatjuk (NULL értékre állítás módszere).

Idegen kulcsok II. CREATE TABLE ugyfel ( Példa: azon VARCHAR2(3), nev VARCHAR2(12), szamla_azon VARCHAR2(4), szuletes DATE, munkahely VARCHAR2 (10), fizetes VARCHAR2(6), PRIMARY KEY (azon), UNIQUE (nev, szuletes), FOREIGN KEY (szamla_azon) REFERENCES szamla(azon));

Idegen kulcsok III. Példa: CREATE TABLE ugyfel ( azon VARCHAR2(3), nev VARCHAR2(12), szamla_azon VARCHAR2(4), szuletes DATE, munkahely VARCHAR2 (10), fizetes VARCHAR2(6), PRIMARY KEY (azon), UNIQUE (nev, szuletes), FOREIGN KEY (szamla_azon) REFERENCES szamla(azon) ON DELETE SET NULL, ON UPDATE CASCADE);

CHECK feltétel I. A CHECK feltétel segítségével bonyolultabb megszorítások is megfogalmazhatók. Egy zárójelbe tett kifejezés szerepel utána, amelyben minden olyan feltétel szerepelhet, ami WHERE záradék után szerepelhet, alkérdéseket viszont már nem adhatunk meg. Ha e kifejezésben más táblák is szerepelnek, akkor ha abban a táblában módosulnak az értékek, akkor a rendszer nem ellenőrzi, hogy az adott megszorítás továbbra is teljesül-e. Ilyen megszorítások esetén inkább triggereket használnak.

CHECK feltétel II. Példa: CREATE TABLE szamla ( bank_azon VARCHAR2(4), azon VARCHAR2(4) PRIMARY KEY, osszeg NUMBER(7) CHECK (osszeg > 10000), lejarat DATE CHECK (lejarat > DATE ‘1970-01-01’));

CHECK feltétel III. Példa: CREATE TABLE szamla ( bank_azon VARCHAR2(4), azon VARCHAR2(4), osszeg NUMBER(7), lejarat DATE, CHECK (osszeg > 10000 AND lejarat > DATE ‘1970-01-01’));

Megszorítás elnevezése I. A megszorításokat gyakorlatilag minden esetben névvel szokták ellátni, mert így lehetőség nyílik ezek módosítására, amire egyébként nem lenne mód. Elnevezni a CONSTRAINT kulcsszó használatával lehet. Módosítás hozzáadása: ALTER TABLE tabla_nev ADD CONSTRAINT megszor_nev megszoritas; Megszorítás törlése: ALTER TABLE tabla_nev DROP CONSTRAINT megszor_nev;

Megszorítás elnevezése II. Példa: CREATE TABLE szamla ( bank_azon VARCHAR2(4), azon VARCHAR2(4), osszeg NUMBER(7), lejarat DATE, CONSTRAINT megfelelo_ertek CHECK (osszeg > 10000 AND lejarat > DATE ‘1970-01-01’), CONSTRAINT elsodl_kulcs PRIMARY KEY (azon)); ALTER TABLE szamla DROP CONSTRAINT megfelelo_ertek; ALTER TABLE szamla ADD CONSTRAINT jo_ertek CHECK (osszeg > 10000 AND lejarat > DATE ‘1970-01-01’);

Megszorítás lekérdezése user_constraints, user_cons_columns adatszótár nézetekből kérdezhetők le. SELECT * FROM user_constraints; FROM user_cons_columns;

Adatok megváltoztatása I. Data Manipulating Language (DML): az adatok megváltoztatására: beszúrásra, módosításra, törlésre szolgál. Beszúrás: INSERT INTO R(A1,… , An) VALUES (v1,… , vn); Itt vi konstans és S-F-W lekérdezés is lehet. Törlés: DELETE FROM tabla WHERE feltetel; Módosítás: UPDATE tabla SET ertek_adasok WHERE feltetel;

Adatok megváltoztatása II. Példák: INSERT INTO szamla VALUES ('BB01', 'SZ00', 23000, '2007-03-15'); ('BBO1', 'SZ01', 1000000, '2006-02-13'); DELETE FROM szamla WHERE azon = ‘SZ01’; UPDATE szamla SET osszeg = 123000 WHERE azon = ‘SZ00’;

Tranzakció A logikailag egybetartozó utasításokat általában egy munkamenetként kezelik. Az utasításoknak vagy mindegyike végrehajtódik vagy egyik sem. Az ilyen munkameneteket tranzakciónak nevezzük. Egy-egy adatbáziskezelő általában több párhuzamos tranzakciót kezel egyszerre. Nemzetközi példák: helyfoglalás egy-egy repülőgép járatra, bankjegyautomaták. Kívánalmak. Atomosság: egy tranzakció vagy teljes egészében végrehajtódik vagy egyik része sem hajtódik végre; Konzisztencia: minden adatbázisban adottak bizonyos konzisztencia-feltételek. Pl. egy járat ugyanazon helyét nem foglalhatja le ugyanaz a két utas. A tranzakciók befejeződése után az adatbázisnak konzisztensnek kell lennie. Elkülönítés: a tranzakciók konkurencia-vezérlését úgy kell megoldani, mintha a tranzakciók egymás után futnának. Tartósság: ha egy tranzakció befejezte működését, annak eredménye nem veszhet el azonnali rendszerhiba esetén sem.

Zárak, visszagörgetés A zár átmeneti tulajdonosi jogkört biztosít egy felhasználónak egy-egy adatbázisbeli objektum: pl. tábla, tábla bizonyos sorai fölött. Más felhasználó nem módosíthatja az adatokat mindaddig, amíg a zárolás fennáll. Ha F1 felhasználó egy táblát éppen lekérdez, F2 ugyanazt módosítja, akkor az Oracle egy nézetet hoz létre F1 számára, F2 módosításai pedig a tábla egy pillanatfelvételén történnek meg. Az Oracle egy visszagörgető szegmenst használ a módosítások tárolására és az olvasási konzisztencia biztosítására. Sikeres végrehajtás esetén a visszagörgető szegmens információi átkerülnek az adatbázisba, véglegesítődnek. Ha hiba történik, a tranzakció „visszagörgetődik”, az adatbázis tranzakció előtti állapota nem változik meg.

COMMIT, SAVEPOINT, ROLLBACK Tranzakció véglegesítése: COMMIT [WORK] Megjegyzés: a WORK alapszó csak a jobb olvashatóságot biztosíthatja. A mentési pontok egy tranzakció részleges visszagörgetését szolgálhatják: SAVEPOINT nev; Visszagörgetés: ROLLBACK [WORK] [TO [SAVEPOINT] mentesi_pont]; Az egyszerű ROLLBACK érvényteleníti a teljes tranzakció hatását, oldja a zárakat, törli a mentési pontokat. A TO utasítással rendelkező ROLLBACK a megadott mentési pontig görgeti vissza a tranzakciót. A mentési pont után a zárak feloldásra kerülnek, a tranzakció a mentési ponttól folytatódik. Megjegyzés: az INSERT, DELETE, UPDATE utasítások előtt az Oracle egy implicit mentési pontot helyez. Ha az utasítás sikertelen, visszagörgetés történik. Kezeletlen kivétel esetén a gazdakörnyezet dönt. Emiatt érdemes explicit módon elhelyezni a fenti utasításokat.

Feladatok I. Adott a következő adatbázisséma… Ember (név, kor, TAJ) Orvos (TAJ, szakt, tud_fok) Korzeti_orvos (TAJ, szakt, tud_fok ,varos) Paciens (TAJ, foglalkozas, orvos_TAJ) Gyogyszer (ar, nev) Betegseg (nev, lefutas, torzs_nev) Bacilus_torzs (nev, elterjedtseg) Bacilus (nev, torzs_nev, gy_nev) Felir (orvos_TAJ, paciens_TAJ, gy_nev)

Feladat II. a következő megszorításokkal: elsődleges kulcsok: Ember (TAJ), Orvos (TAJ), Korzeti_orvos (TAJ), Paciens (TAJ), Gyogyszer (nev), Betegseg (nev), Bacilus_torzs (nev), Bacilus (nev, torzs_nev); egyéb kulcs: Ember (nev, kor); idegen kulcsok Gyogyszer (nev) a Bacilus (gy_nev)-re, Gyogyszer (nev) a Felir (gy_nev)-re, Korzeti_orvos (TAJ) a Paciens (orvos_TAJ)-ra, Korzeti_orvos (TAJ) a Felir (orvos_TAJ)-ra, Paciens (TAJ) a Felir (paciens_TAJ)-ra, Bacilus_torzs (nev) a Betegseg (torzs_nev)-re, Bacilus_torzs (nev) a Bacilus (torzs_nev)-re, Ember (TAJ) az Orvos (TAJ)-ra, Ember (TAJ) a Korzeti_orvos (TAJ)-ra, Ember (TAJ) a Paciens (TAJ)-ra; egyéb megszorítások: csak a budapesti, kecskeméti és gyöngyösi körzeti orvosokat tároljuk az adatbázisban a törlés a TAJ attribútumok esetén továbbgyűrűző eljárás szerint történjen.

Feladat III. Adjuk meg azok nevét, akiknek a legtöbb pénze van a számláin összesen. Adjuk meg azok nevét, akiknek összesen legalább egymillió forint van a számláin. Adjuk meg azok nevét, akiknek legalább százezer forinttal több pénzük van összesen a számláin, mint amennyivel egy átlagos ügyfél rendelkezik összesen.