sql structured query language

20
SQL Structured Query Language Komplett adatbáziskezelő nyelv •DDL (Data Definition Language = Adat Definíciós Nyelv) •DML (Data Manipulation Language = Adat Manipulációs Nyelv) •DQL (Data Query Language = Adat Lekérdező Nyelv) •DCL (Data Control Language = Adatelérést Vezérlő Nyelv)

Upload: cairo-walker

Post on 01-Jan-2016

29 views

Category:

Documents


1 download

DESCRIPTION

SQL Structured Query Language. Komplett adatbáziskezelő nyelv DDL (Data Definition Language = Adat Definíciós Nyelv) DML (Data Manipulation Language = Adat Manipulációs Nyelv) DQL (Data Query Language = Adat Lekérdező Nyelv) DCL (Data Control Language = Adatelérést Vezérlő Nyelv). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: SQL Structured Query Language

SQLStructured Query Language

Komplett adatbáziskezelő nyelv

•DDL (Data Definition Language = Adat Definíciós Nyelv)

•DML (Data Manipulation Language = Adat Manipulációs Nyelv)

•DQL (Data Query Language = Adat Lekérdező Nyelv)

•DCL (Data Control Language = Adatelérést Vezérlő Nyelv)

Page 2: SQL Structured Query Language

Az SQL tulajdonságai

• szabványos (SQL'86, SQL'89, SQL'92, …), elterjedt nyelv, a

legtöbb elterjedt adatbázis kezelő rendszer támogatja

• relációkon végez műveleteket (relációs algebra)

• nem algoritmikus, deklaratív nyelv

• nem rekurzív (SQL’99)

Page 3: SQL Structured Query Language

Az SQL felhasználása

• interaktív parancsértelmező segítségével

• grafikus adatbázis kezelő környezetbe ágyazva

• programozási nyelvbe ágyazva

Page 4: SQL Structured Query Language

Az SQL szintaktikájának jellemzői

• utasításokból áll, végét pontosvessző zárja

• az utasítások záradékokból állnak, amelyek sorrendje kötött

• az utasítások tartalma: alapszavak, azonosítók, kifejezések,

konstansok, listák, elválasztó jelek

Page 5: SQL Structured Query Language

Adatbázis tervezés és megvalósítás lépései

1. Fogalmi tervezés: milyen egyedekkel foglalkozunk, egyedhalmazok tulajdonságai, kapcsolatok megtervezése, Egyed-Kapcsolat modell, EK diagram készítése

2. Logikai tervezés: adatmodell, logikai séma meghatározása, (az EK diagramot leképezzük relációs modellre)

3. Fizikai tervezés: konkrét adatbázis meghatározása (Oracle, MSSQL, Mysql stb…) -> fizikai séma

4. Adatbázis létrehozása: scriptek, utasítások futtatása a logikai séma megvalósítására, majd feltöltése tesztadatokkal, majd éles adatokkal üzembe helyezés

Page 6: SQL Structured Query Language

Modellezési alapfogalmak

• Egyed: „önállóan” létező dolog (pl: autó, egyetem, …)• Egyed előfordulása: egy konkrét értéke (LEN120 rendszámú , ELTE)• Egyedhalmaz: az egyed előfordulásainak összessége• Tulajdonság: amivel az egyedeket jellemezzük (név, testmagasság, …)

Azonosító, egyértékű- többértékű, egyszerű-összetett, származtatott

• Kapcsolat: az egyedek között fennálló viszony nincs kapcsolat, 1:1 (ember-neme), 1:N (anya-gyerek), N:M (diák-

tantárgy) kötelező - nem kötelező kettő vagy több egyedhalmaz között

Page 7: SQL Structured Query Language

KulcsTulajdonság, amely értékei egyértelműen azonosítják a relációt.

kulcsok fajtái:• egyszerű kulcs• összetett kulcs: több attribútum alkotja • minimál kulcs: összetett kulcs esetén bármelyik attribútumot vesszük el belőle, akkor már

nem kulcs a legkisebb részhalmaz, ami még azonosít• kulcsjelöltek: minimális kulcsok közül választhatunk• elsődleges kulcs: a kulcsjelöltek közül kiválasztott kulcs• alternatív kulcsok: a kulcsjelöltekből nem elsődleges kulcsként kiválasztott elemek• idegen kulcs: olyan tulajdonság, amelyik egy másik relációban elsődleges kulcsként szerepel

hivatkozott reláció:• amelynek elsődleges kulcsára hivatkozunk• hivatkozott táblából nem törölhetek sort, ha a hivatkozó táblában szerepel• nem vehetek fel új idegen kulcsot a hivatkozó táblába, ha a hivatkozottban nem szerepel• hivatkozott táblában módosítás: törlés + bevitel, CASCADE• hivatkozási integritási szabály: az adatbázisban nem lehet olyan idegen kulcs, melynek értéke

ne egyezik meg egy hozzá kapcsolódó elsődleges kulcs értékével

Page 8: SQL Structured Query Language

Funkcionális függőség

• funkcionális függőség: egy adott R reláció Y tulajdonsága funkcionálisan függ az R reláció X tulajdonságától ha X minden értéke egyértelműen meghatározza Y értékét

• funkcionális teljes függőség: legyen X összetett tulajdonság, Y tulajdonság funkcionálisan teljesen függ X-től, ha funkcionálisan függ X-től, de nem függ X egyetlen résztulajdonságától sem

• tranzitív függőség: R reláció Z tulajdonsága tranzitíven függ X relációtól, ha Z funkcionálisan függ Y-tól, és Y funkcionálisan függ X-tőlX->Y->Z

Page 9: SQL Structured Query Language

Normálformák

• 1. NF: ha a relációban minden érték elemi• 2. NF:

ha 1. NF és minden olyan tulajdonsága, amely nem része az elsődleges kulcsnak,

funkcionálisan teljesen függ az elsődleges kulcstól(Megszünteti az összetett kulcstól való részleges függésből adódó redundanciát. Ha egy tábla 1NF és egyszerű kulcsa van, akkor biztosan 2NF is.)

• 3.NF: ha 2.NF és minden olyan tulajdonsága, amely nem része az elsődleges kulcsnak

és funkcionálisan teljesen függ az elsődleges kulcstól, és csak attól (A reláció nem tartalmaz tranzitív függőséget.)(Ha egy tábla 2NF és a nem kulcs tulajdonságok között nincs függőség, akkor 3NF is.)

Page 10: SQL Structured Query Language

Példa adatbázisunk

Szeretnénk nyilvántartani a diákok adatait, különböző tantárgyak témaköreiből szerzett különböző típusú osztályzataikat.

Diákok adatai: név, születési dátum, anyja neve, neme, haja színe.A tantárgyakról és témaköreikről csak a megnevezésüket tároljuk.A diákok jegyeiről tároljuk, hogy melyik tantárgynak melyik témaköréből kapta, milyen típusú (témazáró, felelés, dolgozat, házi feladat,…) és mikor kapta.

Page 11: SQL Structured Query Language

Modellezzünk

Diák

Témakör

Tantárgy

Jegy

Típus

N M

11

NN

1

1

N N

1

N

1

1

N

N

Page 12: SQL Structured Query Language

A modell leképezése relációs sémába

Page 13: SQL Structured Query Language

Táblák létrehozása

CREATE TABLE táblanév ( mezőnév1 adattípus (szélesség) [mező szintű megszorítás1] mezőnév2 adattípus (szélesség) [mező szintű megszorítás2], ... mezőnévN adattípus (szélesség) [mező szintű megszorításN],

[táblaszintű megszorítás1], [táblaszintű megszorítás2], ... [táblaszintű megszorításM

)Mező szintű (névtelen) megszorítások: • Kötelező tartalom előírása: IS [NOT] NULL• Egymezős kulcsok:

elsődleges_kulcs típus… PRIMARY KEY Idegen_kulcs típus… REFERENCES hivatkozott_tábla (hivatkozott_kulcs)

• Egyedi mező: mezőnév típus … UNIQUE Táblaszintű (nevesített) megszorítások:• Többmezős kulcsok:• CONSTRAINT constraint_név PRIMARY KEY (mező,mező2,…)• CONSTRAINT constraint_név FOREIGN KEY (mező1,mező2,…) REFERENCES hivatkozott_tábla

(mező1,mező2,…),

Page 14: SQL Structured Query Language

CONSTRAINT záradék (Access)

CONSTRAINT név

{PRIMARY KEY (elsődleges1[, elsődleges2 [, ...]]) |

UNIQUE (egyedi1[, egyedi2 [, ...]]) |

NOT NULL (nemnull1[, nemnull2 [, ...]]) |

FOREIGN KEY [NO INDEX] (hivatkozás1[, hivatkozás2 [, ...]]) REFERENCES idegen tábla

[(idegen mező1 [, idegen mező2 [, ...]])]

[ON UPDATE CASCADE | SET NULL]

[ON DELETE CASCADE | SET NULL]}

Page 15: SQL Structured Query Language

Példa adatbázisunk sémájának a létrehozása

CREATE TABLE diak ( diak_id counter not null PRIMARY KEY, nev varchar(50) not null, szulido datetime not null, anyja varchar(50) not null, neme char(1) not null, haja varchar(50) null,

CONSTRAINT ix_diak UNIQUE ( nev, szulido, anyja ))

CREATE TABLE tantargy ( tt_id counter not null PRIMARY KEY, tantargy varchar(50) not null UNIQUE)

Page 16: SQL Structured Query Language

Példa adatbázisunk sémájának a létrehozása

CREATE TABLE diak_tt ( diak_id int not null, tt_id int not null

,CONSTRAINT pk_diak_tt PRIMARY KEY ( diak_id, tt_id ) ,CONSTRAINT fk_diak_tt_diak FOREIGN KEY (diak_id) REFERENCES diak (diak_id) ,CONSTRAINT fk_diak_tt_tt FOREIGN KEY (tt_id) REFERENCES tantargy (tt_id))

CREATE TABLE temakor ( tt_id int not null REFERENCES tantargy (tt_id), tema_id int not null, temakor varchar(50) not null,

CONSTRAINT pk_temakor PRIMARY KEY (tt_id, tema_id), CONSTRAINT ix_temakor UNIQUE (tt_id, temakor))

Page 17: SQL Structured Query Language

Példa adatbázisunk sémájának a létrehozása

CREATE TABLE jegy_tipus ( tipus_id counter not null PRIMARY KEY, tipus varchar(50) not null UNIQUE)

CREATE TABLE jegy ( diak_id int not null, tt_id int not null, tema_id int not null, tipus_id int not null REFERENCES jegy_tipus (tipus_id), datum datetime not null, jegy int not null,

CONSTRAINT pk_jegy PRIMARY KEY (diak_id, tt_id, tema_id, tipus_id, datum), CONSTRAINT fk_jegy_diak_tt FOREIGN KEY (diak_id, tt_id) REFERENCES diak_tt (diak_id, tt_id), CONSTRAINT fk_jegy_temakor FOREIGN KEY (tt_id, tema_id) REFERENCES temakor (tt_id,

tema_id))

Page 18: SQL Structured Query Language

Index létrehozás (Access)A táblákhoz rendelhetünk indexeket, melyek helyes megválasztása esetén a lekérdezések felgyorsíthatók.

CREATE [ UNIQUE ] INDEX indexON tábla (mező [ASC|DESC][, mező [ASC|DESC], ...])[WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]

ASC: növekvő, DESC: csökkenő

Pl.: CREATE UNIQUE INDEX ix_diak ON diak ( nev, szulido, anyja )CREATE INDEX ix_diak_anyja ON diak (anyja);

Page 19: SQL Structured Query Language

Táblák sémájának módosítása (Access)

ALTER TABLE tábla {ADD {COLUMN mezőtípus [(méret)] [NOT NULL] [CONSTRAINT index] |ALTER COLUMN mezőtípus [(méret)] |CONSTRAINT többmezős_index} |DROP {COLUMN mező I CONSTRAINT indexnév} }

Pl.: ALTER TABLE diak ADD COLUMN testmagassag int NULL;ALTER TABLE diak ADD CONSTRAINT fk_diak_tt_diak FOREIGN KEY (diak_id) REFERENCES diak (diak_id); ALTER TABLE diak DROP CONSTRAINT ix_diak_anyja;

Page 20: SQL Structured Query Language

Törlés (Access)

DROP {TABLE tábla | INDEX index ON tábla | PROCEDURE eljárás | VIEW nézet}

Pl.: DROP TABLE diak;DROP INDEX ix_diak ON diak;