2014. 07. 23. Kényszerek megadása. Indexek kezelése.

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

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.
2. GYAKORLAT E-K modellből relációs adatbázisséma.
Adatbázisrendszerek megvalósítása
Delphi programozás alapjai
SQL Structured Query Language
Adatbázis (alapfogalmak).
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.
– Adattáblák & adatok kezelése – Tarcsi Ádám január Adatbázis gyakorlat.
Programozási alapismeretek 6. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 6.2/  Rekordok/struktúrák.
Microsoft Access V. Készítette: Rummel Szabolcs Elérhetőség:
SQL – DQL (Data Query Language ) adat lekérdezések
Adatbázis rendszerek II.
Készítette: Sárközi Anikó
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ő.
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
SQL, adatdefiníció, adatok megváltoztatása, megszorítások
Adatbázis kezelés Delphiben
Összesítés és csoportosítás lekérdezésekben. Halmazműveletek.
Nézettáblák létrehozása, módosítása és törlése
MSACCESS Bevezetés. Üzemeltetés Hozzáférés Jogosultságok Karbantartás Mentés Stb. Felhasználói felület Űrlapok Jelentések Menük Stb. Adatnézetek, funkcionalitás.
- 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;
Statisztika, kutatásmódszertan I.
1 Informatikai Szakképzési Portál Adatbázis kezelés Alapfogalmak.
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.
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.
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
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)
Nézzük, mit tudunk…. Mire gondoltam? Megjeleníti az adott adatbázishoz kapcsolódó összes objektumot : adatbázis ablak.
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.
DQL. A select parancs az adattábla lekérdezésére szolgál, azaz a táblában tárolt adatok közül az előírt feltételeknek megfelelőket kiválogatja. Formája.
SQL.
1 Sramó András Adatbázis-technológia V. előadás Adatbázis-technológia 5. előadás Az SQL.
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 Fleiner Rita, Tankönyv:
Kulcsok meghatározása a táblákban
Ma az un. Relációs adatmodelleket használjuk.
5. gyakorlat Fleiner Rita.
Webprogramozó tanfolyam
Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda 3. Előadás Az SQL adatbázisnyelv (Tartalom ) Az SQL története Az SQL felépítése Adattípúsok.
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
Adatbázis-kezelés 3-4. Adatok lekérdezése utasítás általános formája SELECT [ALL/DISTINCT] {*/, …, } FROM [ ], …, [ ] [WHERE GROUP BY, …, HAVING ORDER.
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.
SQL.
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.
Adatbázisszintű adatmodellek
Adatbázis rendszerek II.
Idegen kulcsok Lokális és globális megszorítások Triggerek
Adatbázisok 8. előadás Tikk Domonkos.
Adatbázisok SQL.
Logisztikai projekt - gyakorlat Adatbázis-elmélet
Relációs adatmodell, normálformák
Adatbázis-kezelés 2. Relációs adatbázisok.
DDL parancsok – Tábla műveletek, mezőtulajdonságok
Idegen kulcsok Lokális és globális megszorítások Triggerek
Előadás másolata:

Kényszerek megadása. Indexek kezelése.

A kényszerek (CONSTRAINT) típusai PRIMARY KEY: a kulcsmezők megadása (csak egyedi értékük lehet) FOREIGN KEY: idegen kulcs megadása (egy másik tábla kulcsában elő kell fordulnia) CHECK: egyéb elvégzendő ellenőrzés Bonyolultabb kényszerek megadásához adatbázis-triggereket lehet használni

Kulcs megadása

Egyszerű kulcs megadása a táblával együtt Alakja: CREATE TABLE táblanév (oszlopnév adattípus [CONSTRAINT kényszernév] PRIMARY KEY [, oszlopnév adattípus …]); Példa: CREATE TABLE hallgato ( nev VARCHAR2(30) CONSTRAINT hallg_kulcs PRIMARY KEY, szul_dat DATE, evfolyam NUMBER(1) );

(Összetett) kulcs megadása a táblával együtt Alakja: CREATE TABLE táblanév (oszlopnév adattípus [, oszlopnév adattípus …], [CONSTRAINT kulcsnév] PRIMARY KEY (oszlopok)); Példa: CREATE TABLE hallgato ( nev VARCHAR2(30), szul_dat DATE, evfolyam NUMBER(1), CONSTRAINT hallg_kulcs PRIMARY KEY (nev, szul_dat));

Kulcs megadása utólag Alakja: ALTER TABLE táblanév ADD [CONSTRAINT kulcsnév] PRIMARY KEY (oszlopok); Példa: ALTER TABLE hallgato ADD CONSTRAINT hallg_kulcs PRIMARY KEY (nev, szul_dat);

Idegen kulcs megadása

Egyszerű idegen kulcs megadása a táblával együtt Alakja: CREATE TABLE táblanév (oszlopnév adattípus [CONSTRAINT kulcsnév] REFERENCES táblanév[(oszlopnév)] [, oszlopnév adattípus …]); Példa: CREATE TABLE krend ( … vevokod VARCHAR2(8) NOT NULL REFERENCES vevok, …

(Összetett) idegen kulcs megadása a táblával együtt Alakja: CREATE TABLE táblanév (oszlopnév adattípus [, oszlopnév adattípus …], [CONSTRAINT kulcsnév] FOREIGN KEY (oszlopok) REFERENCES táblanév[(oszlopok)]); Példa: CREATE TABLE krend (…, CONSTRAINT krend_vevo_id_kulcs FOREIGN KEY (vevokod) REFERENCES vevok(vevokod));

Egyszerű idegen kulcs megadása utólag Alakja: ALTER TABLE táblanév MODIFY (oszlopnév adattípus [CONSTRAINT kulcsnév] REFERENCES táblanév[(oszlopnév)]; Példa: ALTER TABLE krend MODIFY (vevokod VARCHAR2(8) NOT NULL REFERENCES vevok); ORACLE-ben nem megy!

Idegen kulcs megadása utólag Alakja: ALTER TABLE táblanév ADD [CONSTRAINT kulcsnév] FOREIGN KEY (oszlopok) REFERENCES táblanév[(oszlopok)]; Példa: ALTER TABLE krend ADD CONSTRAINT krend_vevo_id_kulcs FOREIGN KEY (vevokod) REFERENCES vevok(vevokod);

Ellenőrző kényszer megadása

Egy mezőre vonatkozó ellenőrzés megadása a táblával együtt Alakja: CREATE TABLE táblanév (oszlopnév adattípus [CONSTRAINT kulcsnév] CHECK (feltétel) [, oszlopnév adattípus …]); Példa: CREATE TABLE hallgato ( nev VARCHAR2(30), szul_dat DATE CHECK (szul_dat = 1 AND evfolyam <= 4));

Több mezőre vonatkozó ellenőrzés megadása a táblával együtt Alakja: CREATE TABLE táblanév (oszlopnév adattípus [, oszlopnév adattípus …]) [CONSTRAINT kulcsnév] CHECK (feltétel); Példa: CREATE TABLE hallgato ( nev VARCHAR2(30), szul_dat DATE, evfolyam NUMBER(1)) CONSTRAINT eleg_idos CHECK (YEAR(szul_dat)+evfolyam + 17 <= YEAR(SYSDATE)); legkorábban 18 éves korában lehet 1. éves, 19 éves korában 2. éves, stb.

Több mezőre vonatkozó ellenőrzés megadása a táblával együtt Alakja: CREATE TABLE táblanév (oszlopnév adattípus [, oszlopnév adattípus …], [CONSTRAINT kulcsnév] CHECK (feltétel)); Példa: CREATE TABLE hallgato ( nev VARCHAR2(30), szul_dat DATE, evfolyam NUMBER(1), CONSTRAINT eleg_idos CHECK (TO_CHAR(szul_dat, ‘YYYY’)+evfolyam+17 <= 2006)); legkorábban 18 éves korában lehet 1. éves, 19 éves korában 2. éves, stb. kényszerben a SYSDATE nem használható

Egymezős ellenőrzések megadása utólag Példa: CREATE TABLE Persons ( P_Id int NOT NULL CHECK (P_Id>0), LastName varchar2(255) NOT NULL, FirstName varchar2(255), Address varchar2(255), City varchar2(255) )

Több mezős ellenőrzések megadása utólag CREATE TABLE Hallgató ( P_Id int NOT NULL, LastName varchar2(255) NOT NULL, FirstName varchar2(255), Address varchar2(255), City varchar2(255), CONSTRAINT chk_Person CHECK (P_Id>0 AND City=‘Pécs') )

Ellenőrzés megadása utólag Alakja: ALTER TABLE táblanév ADD [CONSTRAINT kulcsnév] CHECK (feltétel); Példa: ALTER TABLE Hallgató ADD CHECK (P_Id>0) Példa 2 ALTER TABLE Hallgató ADD CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Pécs')

Gyakori feltételek ellenőrzésnél 1. Egyszerű összehasonlítás –CHECK (x <= 0)-- x nem pozitív –CHECK (x = y)-- x = y –CHECK (x <> ‘C’)-- x nem egyenlő ‘C’-vel Intervallum belseje –CHECK (x >= 0 AND x =0 és x<=10 –CHECK (x BETWEEN 0 AND 10)-- ugyanaz Intervallum külseje –CHECK (x 10)-- x 10 –CHECK (x NOT BETWEEN 0 AND 10)-- ugyanaz

Gyakori feltételek ellenőrzésnél 2. Szöveg hasonlítása mintához –CHECK (x LIKE ‘A_b%’) (x első karaktere A, harmadik karaktere b) Előfordulás felsorolásban –CHECK (x IN (‘a’, ‘b’, ‘c’))-- a vagy b vagy c –CHECK (x IN (SELECT nev FROM hallgato)) (x előfordul a HALLGATO tábla NEV oszlopában) Kizárás felsorolásból –CHECK (x NOT IN (1, 2, 3))-- nem 1, 2 vagy 3 _ egy tetszőleges karakter % akárhány tetszőleges kar.

Egyéb teendők a kényszerekkel

Saját kényszereink adatai USER_CONSTRAINTS view A fontosabb adatok felsoroltatása: SELECTconstraint_name, constraint_type, search_condition FROM user_constraints WHERE table_name=‘RENDEL’; A constraint_type mező jelentése: C: check, P: primary key, R: foreign key (reference) A “NOT NULL” kikötések miatt is létrejöttek “C” típusú kényszerek!

Kényszer törlése Formái: ALTER TABLE táblanév DROP CONSTRAINT kényszernév; ALTER TABLE táblanév DROP PRIMARY KEY; Példa: ALTER TABLE hallgato DROP CONSTRAINT joevfolyam;

Jó tudni … A rendszer a kényszerek teljesülését minden rekord létrehozásakor, törlésekor vagy módosításakor ellenőrzi Tömeges adatmódosításnál (pl. adat-import) sok időt vesz igénybe A kényszerek átmenetileg kikapcsolhatók!

Indexek

Alapelvek Az indexek az adott mező(k) szerinti keresést és rendezést gyorsító segédtáblázatok (nem adattáblák!) Azokat a mezőket indexeljük, amik szerint gyakran keresünk vagy rendezünk A jó index gyorsítja a lekérdezést A kulcs szerint automatikusan készül index is A felesleges index lassítja az adatbázist - az indexek karbantartása is időbe kerül! Az idegen kulcsokat mindig indexeljük meg!

Index létrehozása Formája: CREATE [UNIQUE] INDEX indexnév ON táblanév (mezőnév [sorrend] [, mezőnév [sorrend] … ]); –sorrend: ASC = növekvő (alapértelmezés), DESC = csökkenő –UNIQUE: az index alapjául szolgáló mezők kötelezően egyediek Példa: CREATE INDEX hallg_nevsor_idx ON hallgato (nev, evfolyam DESC); –név szerint növekvő, azonos nevűeknél évfolyam szerint csökkenő sorrend

Értékek egyediségének ellenőrzése indexeléssel A mezőre UNIQUE indexet készítünk, pl. CREATE UNIQUE INDEX hallg_nev_idx ON hallgato (nev); 1:n kapcsolat esetén az idegen kulcshoz sose készítsünk UNIQUE indexet!

Index törlése Formája: DROP INDEX indexnév; Példa: DROP INDEX hallg_nevsor_idx;

Jó tudni … A rendszer az indexeket minden rekord létrehozásakor, törlésekor vagy módosításakor aktualizálja Tömeges adatmódosításnál (pl. adat-import) sok időt vesz igénybe Sokszor érdemesebb az indexeket törölni, majd az adatmódosítások után újra létrehozni!

Házi feladat SQL script készítése és végrehajtása –a példa-adatbázis kényszereinek létrehozására (a következő diákon vastag betűkkel kiemelve) –az idegen kulcsokra indexek készítésére Figyelem! Mindig előbb a kulcsot hozzuk létre, csak utána a rá hivatkozó idegen kulcsot!

A vevők adatai

A vevők adatai (VEVOK tábla)

A rendelések adatai

A rendelések adatai (RENDEL tábla)

A rendelések tételei

A rendelések tételei (RTETEL tábla)

A cikkek adatai

A cikkek adatai (CIKK tábla)