Adatbzis gyakorlat Adattblk Tarcsi dm adeelte hu 2005
Adatbázis gyakorlat – Adattáblák – Tarcsi Ádám, ade@elte. hu 2005. január
Miről lesz szó? • • • Adatbáziskezelés SQL Oracle adatbázis-kezelő Belépés Tábla készítés - CREATE TABLE Lekérdezések - SELECT
Adatbázisok • Adatkezelés kialakulása: szekvenciális fájlok kezelése – Nehézkes: csak elemi műveletek – Keresést meg kell írni, lassú – Komplex adatok tárolása bonyolult – Biztonság nincs: meghibásodás, hozzáférésvédelem – Csak 1 ember dolgozhat rajta egyszerre
Adatbázis-kezelés alapja • Adatmodellezés, elméleti háttér • Adatbázis eszközök használata • Szabványos adatdefiníciós és lekérdezőnyelv: SQL
Elvárások Egy adatbázis-kezelő rendszerrel szemben a következő elvárásaink vannak: • Adatbázis-létrehozások: séma, struktúra megadás speciális – adatdefiníciós nyelven • Adatok lekérdezése, módosítása – lekérdező vagy adatmanipulációs nyelven • Támogassa a nagy mennyiségű adatok hosszú időn keresztüli tárolását. Garantálja a biztonságot. • Felügyelje a több felhasználó által egy időben történő adathozzáféréseket
Adatbázis eszközök használata • Oracle, MS SQL Server, IBM DB 2, Informix, Sybase, My. SQL, Postgres. SQL, stb. • Néhány fájlkezelő (amik NEM, vagy csak féligmeddig adatbázis-kezelők): d. Base, Clipper, Fox. Pro, Access, … • Kliens – Server kapcsolat. A kliensen dolgozik a felhasználó vagy közvetlen adatbázis-eléréssel (pl. SQL parancsokat ad ki), vagy egy olyan programmal, ahol a program tárolja az adatait adatbázisban (pl. a program SQL utasításokat tartalmaz).
SQL - Structured Query Language • DDL (Data Definition Language – Adat Definiáló Nyelv) séma kezelő utasítások: adatbázisok, táblák létrehozása, módosítása és törlése pl. : CREATE, ALTER, DROP • DML (Data Manipulation Language – Adat Manipuláló nyelv): adat kezelő utasítások: adatok rögzítése, módosítása, törlése és lekérdezése pl. : INSERT, UPDATE, DELETE, SELECT • DCL (Data Control Language) GRANT, REVOKE, ABORT, COMMIT…
Oracle - Belépés • ODBC: Start / Beállítások / Vezérlőpult / Felügyeleti eszközök / ODBC adatforrások – Felhasználói DSN – Kiszolgáló, felhasználói név, jelszó beállítása – Ügyfél beállítása – Named pipe-ok • Oracle • Belépés: Jelszó:
SQL alapok: • Adatbázisok létrehozása • Adatbázisok adminisztrációja, felhasználók, felhasználói jogok • Adattáblák létrehozása, módosítása, törlése: CREATE TABLE, ALTER TABLE, DROP TABLE • Adattáblák feltöltése – INSERT INTO • Adatok keresése – SELECT • Adatok módosítása – UPDATE • Adatok törlése - SELECT
Tábla létrehozás, eldobás CREATE TABLE t. Diak (DAzon NUMBER, Nev VARCHAR(40), Kor INTEGER, TAzon NUMBER); Tábla eldobása: DROP TABLE t. Diak;
Adattípusok – ORACLE • Egészek – NUMBER(p): előjellel együtt maximum p karakter széles egész szám. – NUMBER(p, s): p: a teljes szám szélessége, s: a tizedesek száma (törtrész szélessége) – NUMBER: szám, alapértelmezett mezőszélesség: 10 – (INTEGER): NUMBER-ként kezeli (SQL Server adattípus) • Lebegőpontos számok – FLOAT • Beíráskor ellenőrzés!
Adattípusok – ORACLE • Karakteres típusok – CHAR(hossz) - fix hosszú szöveg – VARCHAR(n) - max. n hosszú szöveg – VARCHAR 2(n) - max. n hosszú szöveg. Ajánlott. – RAW - nagy méretű szöveg, max 255 hosszú, nem csak szöveget tárolhat! – Hosszabb szövegeket levágja!
Adattípusok – ORACLE • Dátum típus: – DATE: dátum és általában időpont is! i. e. 4712. jan. 01. és i. sz. 9999. dec. 31. közé. Formázható! • Egyéb típusok – BLOB -bináris nagyméretű objektum, max. 4 GB méretű adat tárolására (multimédia típus)
CREATE TABLE <név> (<oszlopnév 1> <oszloptípus 1>, <oszlopnév 2> <oszloptípus 2>, …, <oszlopnévn> <oszloptípusn> [CONSTRAINT <megszorításnév> …)]
Megszorítás - CONSTRAINT 1. Elsődleges kulcs – PRIMARY KEY – egyedi azonosító – példa: t. Tanar táblában TAzon, t. Diak tablaban DAzon – szokásos elnevezés: pk_tablanev CONSTRAINT <megszorításnév> PRIMARY KEY (<mezőnév 1>, …, <mezőnévk> )
CONSTRAINT 2. Idegen kulcs – FOREIGN KEY • • Másik táblában (hivatkozott tábla) elsődleges kulcsként előforduló értékeket vehet fel Nem törölhető olyan rekord, amelyre hivatkoznak. példa: t. Diak táblában TAzon mező szokásos elnevezés: fk_hivatkozotablanev_hivatkozotttablanev (fk_t. Diak_t. Tanar) CONSTRAINT <megszorításnév> FOREIGN KEY (<mezőnév 1>, …, <mezőnévk> ) REFERENCES <hivatkozotttáblanév> (<újmezőnév 1>, …, <újmezőnévk>)
CONSTRAINT 3. Egyediség - UNIQUE • adott mezőben minden értéknek különbözőnek kell lennie • szokásos elnevezés: uq_tablanev CONSTRAINT <megszorításnév> UNIQUE (<mezőnév 1>, …, <mezőnévk>)
CONSTRAINT 4. Feltétel– CHECK • Adott mező mely halmazból vehesse fel az értékeit • szokásos elnevezés: ck_tablanev • Sokféle feltétel: AND, OR, BETWEEN, SELECT, mezőnév>0, … • I. CONSTRAINT <megszorításnév> CHECK (<mezőnév 1> IN (<halmaz 1>), …, <mezőnévk> IN (<halmazk>)) • II. IN (<halmaz>) Példa: CONSTRAINT ck_tablanev CHECK (Nev IN('Pistike', 'Ferike')) CONSTRAINT ck_tablanev 2 CHECK (Jegy IN(1, 2, 3, 4, 5))
Megszorítások 5. Alapértelmezett érték - DEFAULT • Ha egy rekordnál az adott mező értékét nem adjuk meg, akkor az alapértelmezett értéket veszi fel értékként • DEFAULT <érték vagy kifejezés>
Megszorítások 6. Nem nullérték - NOT NULL • Lehetséges értelmezései – – – • Ismeretlen érték: pl. : nem ismerem a címét Alkalmazhatatlan érték: pl. : hajadon esetén a „Férj neve” mező kitöltése Visszatartott érték: nincs rá jogom, titkos adat esetén Elsődleges kulcs NOT NULL
Megszorítások • 7. Azonosító • A program automatikusan generál az adott mezőbe egy számot (meg lehet adni a kezdőértéket és a lépésszámot) • IDENTITY (1, 1)
Példa CREATE TABLE t. Tanar (TAzon INTEGER NOT NULL, Nev VARCHAR(50), CONSTRAINT pk_t. Tanar PRIMARY KEY (TAzon)) CREATE TABLE t. Diak (DAzon INTEGER NOT NULL, Nev VARCHAR(50) NOT NULL, Kor INTEGER NOT NULL, TAzon INTEGER NOT NULL DEFAULT 1, CONSTRAINT pk_t. Diak PRIMARY KEY (DAzon), CONSTRAINT fk_t. Diak_t. Tanar FOREIGN KEY (TAzon) REFERENCES t. Tanar (TAzon), CONSTRAINT ck_t. Diak CHECK (Kor BETWEEN 1 AND 100), CONSTRAINT uq_t. Diak UNIQUE (Nev))
Megszorítások lekérdezése • SELECT constraint_name, constraint_type FROM user_contraints WHERE table_name = ‘TÁBLANÉV’; • SELECT constraint_name, column_name FROM user_cons_columns WHERE table_name = ‘TÁBLANÉV’;
Megszorítás módosítása • Megszorítás hozzáadása: ALTER TABLE <tábla név> ADD CONSTRAINT <név> <típus> <(oszlop)>; Not null típusú megszorítás (mezőszintű): ALTER TABLE <tábla név> MODIFY <mezőnév> CONSTRAINT <típus> NOT NULL; • Megszorítás törlése: ALTER TABLE <tábla név> DROP CONSTRAINT <megszorítás név>;
- Slides: 24