BEVEZETÉS Az objektum fogalma Program (1)
Objektum
Adat (2)
• • • •
Kiadványszerkesztés Táblázatkezelés CAD Adatbáziskezelés
– – – –
Word Excel AutoCad Access
1
Program (1)
Objektum
Adat (2)
Adatmodell (2) – A valós világ elemeinek leképezése adatokra. Az adatok között kapcsolat lehet – –
A világ ugyanazon elemét írják le (frsz.–típus) Több különböző – azonban egymással össze-függésben lévő dolog leírása Tul.–(frsz.–típus)
Adatbázis-kezelő (1) rendszer – Programrendszer az adatok+kapcsolatok ellentmondásmentes tárolására, megjelenítésére, feldolgozására – – – – – –
Többféle leképezési mód Interaktív használat Programozhatóság az elérés biztosítása, az elérés szabályozása, a hibátlanság, ellentmondás-mentesség garanciája.
BEVEZETÉS
2
1. Az adatbáziskezelő rendszerek (DBMS) funkciói 1.1 Az adatbázisok szerkezete • Modellezési alapelemek adatleírásra - adattárolásra • Többszintű kialakítás Külső szint (alséma) Koncepcionális szint (séma) Fizikai szint (belső szint)
Vetítések, összekapcsolások (felhasználók) L1(A,B,C)
L2(A,B,E,F)
L3(E,F,J,K)
Adatok között kapcsolatok (adatbázis felügyelő) H1(A,B,C,D)
H2(E,F,G,A)
H3(H,I,J,K,E)
fizikai adatok (operációs rendszer)
• Az adatokhoz való hozzáférés csak a DBMS-sel
1. AZ ADATBÁZISKEZELŐ RENDSZEREK (DBMS) FUNKCIÓI
3
1.2 Speciális DBMS funkciók • Indexelés • Tranzakció kezelés – Naplózás („fejben elvégzett műveletek, jóváhagyás) – Elkülönítés (több felhasználó) – Felújítás (zárolással)
• • • • • •
Hozzáférési jogok kezelése Adatleíró nyelv (Data Definition Language) - elemdefiníció Adatkezelő nyelv (Data Manipulation Language) - adatkezelés Adatfelügyelő nyelv (Data Control Language) – hozzáférés-kezelés Interaktív kezelés Adatszótár (katalógus) – Automatikusan karbantartott elemdefiníciók, statisztikák, jogosultságok stb. Lekérdezhető.
• Központosított adattárolás (logikailag) – Lehet osztott, kliens szerver.
• Fizikai (tárolásfüggetlen) és logikai (nem módosítás-érzékeny) adatfüggetlenség • Segédprogramok feldolgozáshoz (jelentések, képernyők) 1. AZ ADATBÁZISKEZELŐ RENDSZEREK (DBMS) FUNKCIÓI
4
MDAC - Microsoft Data Access Components
1. AZ ADATBÁZISKEZELŐ RENDSZEREK (DBMS) FUNKCIÓI
5
2. Az adatmodellezés alapjai 2.1 Az adatmodell fogalma (bővített pontosított definíció) – Szűkebb értelemben a leírásra szolgáló adatok szerkezete (a modellezési alapelemek) – Általánosabban tartalmazza az alapelemeket, az alapelemekkel végzett műveleteket és az integritási kényszereket – Adatszerkezet
–
– Művelet
–
az adatok tárolására szolgáló elemi adatok rendszere a megjelenítési igényeknek megfelelően (pl. indexek)
– Integritási kényszer
–
az ellentmondásmentességet biztosító feltételek, megszorítások (pl. egyértelműség biztosítása - kulcs) 6
2.2 Egyed, egyedhalmaz • Egyed
- a világ egy megkülönböztetett Kis József 1 3312… fizikai objektuma Nagy Irén 2 3312… (Egyedtípus, Entitás, Rekordtípus) • Egyedhalmaz - azonos, megkülönböztetőjegyekkel jellemzett objektumok Emberek gyűjteménye
– Különbözőség biztosítása • természetes módon (pl. személyi szám), • mesterségesen (a kezelő rendszer biztosítja azonosító) 2. AZ ADATMODELLEZÉS ALAPJAI
7
2.3 Kapcsolat, kapcsolat-előfordulás, kapcsolattíp. • Kapcsolat
- Két egyedhalmaz, illetve az egyedhalmazok között fennálló viszony Emberek - (a kapcsolatelőfordulások halmaza) autók • Kapcsolat-előfordulás - Az egyedhalmazok elemei között fennálló Kis József viszony • Kapcsolattípus - 1:1 ABC-123 - 1:N 1:N - N:M
2. AZ ADATMODELLEZÉS ALAPJAI
8
2.4 Tulajdonság, tulajdonságérték, értékhalmaz • Tulajdonság (attribútum)
-
• Tulajdonságérték
-
• Értékhalmaz (értéktartomány) (domain)
-
2. AZ ADATMODELLEZÉS ALAPJAI
Az egyedhalmaz egyedeinek azon jellemzői, amelyek az egyedhalmazt definiálják vagy az egyedhalmazok közti kapcsolatok jellemzői. az egyedekhez, vagy a kapcsolat-előfordulásokhoz tartozó konkrét adat A tulajdonságok lehetséges értékei
9
Példa
Tulajdonságok Emberek (Név, Szem.szám,Szakma) Tulajdonságértékek
Kapcsolatok Kapcsolat előfordulás
Kis József Nagy Irén Kovács István
1 33…
Mérnök, közg.
2 33… 1 33…
Kapcsolat előfordulások
Autók(Rendszám,Típus)
Tanuló -
ABC- 123 tulajdonos autó 1:N
DEF- 456
Egyedek tulajdonos lakás N:M házastárs1
házastárs2
Kapcsolat előfordulások
1:1
VW
Alfa
GHJ- 789
Opel
Lakások (Cím, Hrsz) 1111 Bp. Báb…
Hrsz 12…
1211 Bp. Vas u… 1031 Bp. Gát u…
Hrsz 23…
Hrsz 45… Egyedhalmazok
2. AZ ADATMODELLEZÉS ALAPJAI
10
3. Az egyed-kapcsolat modell (E-K)
(Entity-Relationship) (SSADM Structured System Analysis and Design Method alapok)
Egyedhalmaz
3.1 Az EK modell tulajdonságai minden egyednél egyetlen érték
• Egyértékű • Többértékű • Egyszerű • Összetett • Kulcstulajdonság • Alaptulajdonság • Származtatott tul. 4. AZ EGYED-KAPCSOLAT MODELL
név
több értéket is felvehet (pl. egy anya gyerekei) nem bontható további tulajdonságokra további tulajdonságokra bontható (pl. lakcím = irszám + város + …) Az elemeket egyértelműen azonosító egyértékű tul. Létezik más tulajdonságoktól függetlenül Egyéb tulajdonságokból 11 előállított életkor=fv(szül.dat)
3.2 Az EK modell kapcsolatai N jellel jelöljük. • A kapcsolatokat 1 Név • A kapcsolatoknak is vannak tul2 tulajdonságaik és típusuk. tul1 • A kapcsolatban résztvevők száma alapján beszélünk a kapcsolat fokáról – Unáris, vagy rekurzív – Bináris, vagy két résztvevős – Trináris: háromrésztvevős.
Sz.számF 1
Hrsz Lakások Cím Ir.sz
Város
…
Sz.számN
házasság
1
Emberek N
Lak.Tul
M 1
Név
Sz.szám Autótul.
Hrsz
N
Sz.szám
Szakm Típus
Autók
Rendszám Sz.szám 4. AZ EGYED-KAPCSOLAT MODELL
Rendszám 12
• Az ISA kapcsolat – „is a” kapcsolat az egyedek közötti 1:1 megfeleltetés – Pl. egy iskola tanárai és alkalmazottai
– a halmazok között alá- és fölérendelés az egyedhalmazok hierarchiája – Az alárendelt halmaz részhalmaz,
Alkalmazottak
a tulajdonságok is öröklődnek.
Tanárok Egyéb alk. • Specializáció – Az egyedhalmaz részhalmazokra való bontása – Explicit megadással (pl. Bp.-i és vidéki lakások megadáskor) – Vagy szabállyal (pl. irszám), azaz származtatással • Általánosítás – Az egyedhalmazok uniója • Egzisztenciálisan függő (gyenge) egyedhalmazok – Ha létezése más egyedhalmaztól függ (pl. vevők, számlák)
3.3 Integritási kényszer – Egyértékű kulcstulajdonság az egyedhalmazokban – A valós kapcsolatok tükrözése 4. AZ EGYED-KAPCSOLAT MODELL
13
3.4 Példák E-K modellre 3.4.1 Lemezek- szoftverek számítógépes nyilvántartása • A lemezeken különböző gyártótól származó szoftverek vannak – A lemezeket kapacitás és a gyártó jellemzi. – A szoftvereket nevük és előállítójuk azonosítja. – Egy lemezen több szoftver is lehet. – Egy szoftver lehet többlemezes is. • Adatok – – – – – – –
Lemezkód, Lemezmárka Lemez kapacitás Szoftverkód, Szoftvernév Gyártókód Gyártónév
4. AZ EGYED-KAPCSOLAT MODELL
14
Megoldás LemezKód
N
Lemez
Szoftverkód
Tartalom
Szoftverkód
M
Szoftvernév
Szoftver N
LemezKód
L_Kapacitás L_Márka
•
•
Szoftverkód
SZ_GY
Gyártókód
1
A lemezeken különböző gyártótól származó szoftverek vannak Gyártó – A lemezeket kapacitás és a gyártó jellemzi. – A szoftvereket nevük és előállítójuk azonosítja. – Egy lemezen több szoftver is lehet. – Egy szoftver lehet többlemezes is. Gyártókód Gyártónév Adatok – Lemezkód, – Lemezmárka – Lemez kapacitás – Szoftverkód, – Szoftvernév – Gyártókód 4. AZ EGYED-KAPCSOLAT MODELL – Gyártónév
15
3.4.2 DVD kölcsönző számítógépes nyilvántartása • A lemezek a filmek a kölcsönzők és a kölcsönzések adatai – A filmeket a lemezeket és a kölcsönzőket kód jellemzi. – Lehet egy lemezen több film és egy film több lemezen is. – Egy kölcsönző több lemezt kölcsönözhet. – Egy lemez egy időben egy helyen lehet csak. • Adatok – – – – – – – – –
Filmkód Filmcím Lemezkód Lemez ár Kölcsönző kód Kölcsönző név Kölcsönző cím Elvitel Visszahozatal
4. AZ EGYED-KAPCSOLAT MODELL
16
Megoldás FilmKód
Filmek
N
Lemzkód
Lemezkód
M
Tartalom
Lemezár
Lemezek
N FilmKód
Filmcím
Elvitel
Kölcsönz vissza
•
•
Lemezkód
1
Kölcs_kód
A lemezek a filmek a kölcsönzők és a kölcsönzések adatai – A filmeket a lemezeket és a kölcsönzőket kód jellemzi. Kölcsönzők – Lehet egy lemezen több film és egy film több lemezen is. – Egy kölcsönző több lemezt kölcsönözhet. – Egy lemez egy időben egy helyen lehet csak. Kölcs_kód Adatok – Filmkód Kölcs_név Kölcs_cím – Filmcím – Lemezkód – Lemez ár – Kölcsönző kód – Kölcsönző név – Kölcsönző cím – Elvitel 4. AZ EGYED-KAPCSOLAT MODELL – Visszahozatal
17
4. A relációs adatmodell
• Adatok valódi kétdimenziós táblázatban Az oszlopok az attribútumok (oszlophalmaz - reláció) – az elemi (atomi) adattípusok az értékek
• A sorok a reláció előfordulások halmazát alkotják – • • • • • • •
– nincs két azonos sor
A sorok és oszlopok felcserélhetők A relációt névvel azonosítjuk Név + attribútumok = reláció séma Az oszlopok száma a reláció fokszáma A sorok száma a reláció kardinalitása Szuperkulcs – sorokat megkülönböztető oszlophalmaz Kulcs – minimális elemszámú szuperkulcs Elsődleges kulcs – a megkülönböztetésre választott kulcs – Másodlagos kulcsok – Egyszerű (egy oszlop), vagy összetett (több oszlop)
• Elsődleges tulajdonság – valamely kulcs része
18
4.1 Egyedhalmazok a relációs modellben •
Az átírás szabályai
Tábla név = az egyedhalmaz neve A tábla attribútumai = tulajdonság nevek Az oszlopok értékkészlete = a tulajdonság értékkészlete Tábla sorok = egyedhalmaz sorok Probléma a többértékű tulajdonságok kezelése • Minden tulajdonságértéket új sorba írunk, azonos atomi értékekkel 6. Ha nincs többértékű, akkor marad a kulcs , egyébként többelemű 1. 2. 3. 4. 5.
Anya
Emberek Sz.szám Név Szakma
Gyerek
Nagyné
Nagy Ede
Nagyné
Nagy Éva
Autók
Lakások
Rendszám Típus
Hrsz. Cím
4.2 Speciális adatértékek • NULL • Alapértelmezett 3. A RELÁCIÓS ADATMODELL
19
4.3 Kapcsolatok ábrázolása •
Az egyik reláció bővítése a másik előfordulását azonosító oszlopokkal. (Idegen kulcs) • 1:1 esetén bármelyik táblázatba a másik elsődleges kulcsa • 1:N esetén csak az egyikbe a másik elsődleges kulcsa • N:M esetén új tábla az elsődleges kulcsokkal és a kapcsolatot jellemző tulajdonságokkal.
Autók
Emberek
Rendszám Típus
Tulaj
1:N
Sz.szám Név
Férj Feleség
1:1
1:1 1:1
Lakás tulajdonosok Sz.szám
Hrsz
Házastársak
1:1
Lakások Hrsz
Szakma Cím
1:N
Sz.szám Szakma
N:M 3. A RELÁCIÓS ADATMODELL
20
4.3.1 Példák E-K modell átírására 4.3.1.1 Lemezek- szoftverek számítógépes nyilvántartása
LemezKód
N
Lemez
Szoftverkód
Tartalom
Szoftverkód
M
Szoftvernév
Szoftver
1 LemezKód
L_Kapacitás
Szoftverkód
SZ_GY
L_Márka
Gyártókód
N Gyártó Gyártókód
Gyártónév
4. AZ EGYED-KAPCSOLAT MODELL
21
Megoldás Lemez Lemezkód
Tartalom L_márka
L_kapacitás
1:1
Szoftver
Lemezkód
Szoftverkód
1:1
Szoftverkód
N:M
Szoftvernév
1:1
SZGY Szoftverkód
Gyártó_kód
1:N 1:1 Gyártó Gyártó_kód
Gyártó_név
4. AZ EGYED-KAPCSOLAT MODELL
22
4.3.1.2 DVD kölcsönző számítógépes nyilvántartása
FilmKód
Filmek
N
Lemzkód
Lemezkód
M Tartalom
Lemezár
Lemezek
N FilmKód
Filmcím
Lemezkód
Elvitel
Kölcsönz vissza
1
Kölcs_kód
Kölcsönzők Kölcs_kód Kölcs_név
Kölcs_cím
4. AZ EGYED-KAPCSOLAT MODELL
23
Megoldás Filmek Filmkód
Tartalom Filmcím
1:1
Filmkód
Lemezek Lemezkód
1:1
Lemezkód
Lemezár
N:M Kölcsönz
1:1
Filmkód
Kölcs_kód
Elvitel
Vissza
1:N
1:1 Kölcsönzők Kölcs_kód
Kölcs_név
Kölcs_cím
4. AZ EGYED-KAPCSOLAT MODELL
24
4.4 Relációs műveletek • •
•
•
Halmazműveletek – Azonos struktúra esetén - Egyesítés, Metszet, Különbség Csonkító műveletek – Vetítés - oszlopok, – Kiválasztás - sorok Kapcsoló műveletek – Descartes – minden mindennel, – Join – közös oszlopok kapcsolnak, – Theta – kapcsolás más szempontok alapján. Átnevezés
4.5 Integritási kényszerek • •
Az elsődleges kulcs megszorításai – Egyedi értékek – Nem lehet benne NULL Az idegen kulcs megszorításai – hivatkozási feltétel – Másik táblázat elsődleges kulcsa, vagy NULL – Az adatbázis-kezelő módosításkor felügyeli • Visszautasítás vagy • Továbbgyűrűző, kaszkád frissítés vagy • NULL értékre állítás
3. A RELÁCIÓS ADATMODELL
25
4.6 Redundancia és felújítási problémák • Redundancia = többszörös adattárolás
– Ugyanaz az adat ne szerepeljen több táblázatban (kivétel a kapcsolatokat jellemző idegen kulcsok esete) – Egy egyed ne szerepeljen a táblázat több sorában
• Anomália = rendellenesség, szabálytalanság
– Beírási anomália = a kapcsolt egyedek adatai nem írhatók be addig, amíg azok kulcsa NULL – Módosítási anomália = a redundáns adattárolás miatt a javítás nem történik meg mindenhol – Törlési anomália = az egyedekre vonatkozó információk teljesen elveszhetnek.
26
4.7 Normalizálás • Minden adat egyetlen táblázatba • A normálformákat megsértő függőségeket táblázatok többlépéses bontásával bontásával megszüntetjük. • Követelmény, hogy egyesítéssel az eredeti táblázat visszaállítható legyen
4.7.1 Funkcionális függőség
• R relációs séma α R és β R β funkcionálisan függ α-tól, α→β, ha bármely két sorban α értékei egyeznek, akkor β értékei is egyezőek. – – – – – – – – – –
Triviális funkcionális függőség α→β ha β α (részhalmaz) Nem triviális FF, ha α→β és biα, bi β (van független elem) Teljesen nem triviális FF, ha α→β és ! bi β, melyre bi α (diszj.) Részleges FF, ha α→β és γ→β, ahol γ α (kevesebbtől is függ) Teljes FF, ha ! γ α, melyre γ→β teljesül (ez a legkevesebb) Szétvághatóság α→β α→bi i=1,…n Összevonhatóság α→bi i=1,…n α→β = b1 ,...bn α β Reflexivitás ha β α, akkor α→β Szem.szam Név Bővítés ha α→β, akkor (αU γ)→β Nagy Lajos Tranzitivitás ha α→β és β→γ, akkor α→ γ 11
5. NORMALIZÁLÁS
1 1
Nagy Lajos Nagy Lajos 27 Nagy Lajos
4.7.2 Többértékű függőség •
és , β többértékű függéssel függ α-tól α→→β, ha minden olyan t1 és t2 sorhoz, ahol t1[α]= t2[α] létezik t3 és t4 úgy, hogy t1[α]= t2[α] =t3[α]= t4[α] t3[β]= t1[β] t3[R-β]= t2 [R- β] t4 [ β]= t2[β] α β t4[R-β]= t1 [R- β] Szem.szam Név Végzettség Projekt • Például: 1 1
1 1
Nagy Nagy Nagy Nagy
Lajos Lajos Lajos Lajos
Matematikus Mérnök
OTKA GVOP
Matematikus Mérnök
GVOP OTKA
• Tranzitivitás, ha a T(α, β, γ) táblázatban α∩β=Ø és α∩γ=Ø és α→→β és β→→γ, akkor α→→γ • Komplementer szabály, T(α, β, γ) táblázatban ha α→→β, akkor α→→ γ 5. NORMALIZÁLÁS
28
4.7.3 Táblázatok szétbontása Ha A={a1, a2,…an}, B={b1, b2,…bm} és C= {c1, c2,…ck} és T(A,B,C) és A→B vagy A→→B akkor a táblázat bontható T1(A,B) és T2(A,C) formában az azonos sorokat törölve.
– ha A→B állt fenn, akkor A a T1 elsődleges kulcsa, T2 idegen kulcsa – ha A→→B, akkor meg kell határozni az elsődleges kulcsokat
4.7.4 Normálformák • Első normálforma 1NF
– Minden tulajdonság atomi (nem bontható)
• így definiáltuk, • tartalmazhat sorismétlést, az elsődleges kulcs nincs megkövetelve.
• Második normálforma 2NF
– Ha 1NF és a nem kulcs tulajdonságok funkcionális függősége teljes funkcionális függőség
α→β teljes FF, ha !γ α, melyre γ ->β teljesül (ez a legkevesebb)
Munkatársak(kód, végzettség, név) nem 2NF, mert kód→név Felbontás Munkatársak(kód,név)+Diploma(kód, végzettség) 5. NORMALIZÁLÁS
29
• Harmadik normálforma 3NF
– Ha 2NF és az elsődleges kulcsban nem szereplő tulajdonságok között nincs funkcionális függőség Példa Vizsga (diákkód, Dátum, Tanárkód, Tanárnév) nem 3NF, mert Tanárkód→Tanárnév Felbontás Vizsga(diákkód, Dátum, Tanárkód) Tanárok(Tanárkód, Tanárnév)
• Boyce-Codd normálforma BCNF
– Ha függőségi kapcsolataiban minden meghatározó tulajdonság egyben szuperkulcs. Pl: R( A, B, C, D, E) és AD , BE, DEC nem BCNF, a meghatározók nem szuperkulcsok (2NF sem áll fenn, pl. AD miatt) Felbontás R1(A,D) - BCNF R2 (A,B,C,E) – Nem BCNF BE miatt R21(B,E) R22(A,B,C)
5. NORMALIZÁLÁS
30
• Negyedik normálforma 4NF
– Ha a többértékű függésekben a meghatározó tulajdonság szuperkulcs Pl: Munkatársak(Munkatárskód, végzettség, projekt) BCNF, azonban nem 4F Munkatárskód végzettség Munkatárskód projekt Felbontás MtVegzettseg (Munkatárskód, végzettség) MtProjekt (Munkatárskód, projekt)
1NF 2NF 3NF
BCNF 4NF ...
5. NORMALIZÁLÁS
31
5. Az SQL nyelv (DDL)
Tábla létrehozása CREATE TABLE
CREATE TABLE
( [NOT NULL] [ CONSTRAINT egyoszlopos *] [, CONSTRAINT többoszlopos **] [, …]); CREATE TABLE Lajos0 (alma char(255) NOT NULL, körte integer);
* {CONSTRAINT {PRIMARY KEY | NOT NULL | UNIQUE } | REFERENCES [(, …)]} CREATE TABLE Lajos2 (alma integer CONSTRAINT x PRIMARY KEY, körte integer CONSTRAINT y UNIQUE); CREATE TABLE Lajos4(alma integer CONSTRAINT x PRIMARY KEY, körte integer CONSTRAINT y UNIQUE, narancs integer REFERENCES Geza0(elso));
** CONSTRAINT {PRIMARY KEY ([, …]) | NOT NULL ([, …]) | UNIQUE ([, …]) | FOREIGN KEY ([, …]) REFERENCES (<(oszln1>[, …])} CREATE TABLE Geza1(elso integer, masodik integer, CONSTRAINT y PRIMARY KEY (elso, masodik)); CREATE TABLE Lajos5 (alma integer CONSTRAINT x PRIMARY KEY, körte integer, narancs integer, CONSTRAINT sok FOREIGN KEY (körte, narancs) REFERENCES Geza1(elso,masodik));
6. AZ SQL NYELV
32
(DDL)
Index létrehozása CREATE INDEX
CREATE [ UNIQUE] INDEX ON ( [ASC | DESC] [ , [ASC | DESC],… ]) [ WITH { PRIMARY | DISALLOW NULL | IGNORE NULL}]; CREATE UNIQUE INDEX prim on Lajos0(alma ASC ) WITH IGNORE NULL; CREATE UNIQUE INDEX elso ON Geza1(elso) WITH DISALLOW NULL;
(DDL)
Tábla módosítása ALTER TABLE
ALTER TABLE { ADD { COLUMN [NOT NULL] [ CONSTRAINT egyoszlopos *] | CONSTRAINT többoszlopos ** } | DROP { COLUMN | CONSTRAINT } }; ALTER TABLE Lajos5 ADD COLUMN banan integer CONSTRAINT uj REFERENCES Geza1(elso) ; ALTER TABLE Lajos5 DROP CONSTRAINT uj; ALTER TABLE Lajos5 DROP COLUMN banan;
6. AZ SQL NYELV
33
(DDL)
Kényszer hozzáadása
ALTER TABLE ADD CONSTRAINT { * | **}; ALTER TABLE Lajos5 ADD CONSTRAINT pk UNIQUE(körte);
(DDL)
Kényszer törlése
ALTER TABLE DROP CONSTRAINT ; ALTER TABLE Lajos5 DROP CONSTRAINT pk;
(DDL)
Index törlése DROP INDEX
DROP INDEX ON DROP INDEX prim ON Lajos0;
(DDL)
Tábla törlése DROP TABLE
DROP TABLE ; DROP TABLE Lajos;
6. AZ SQL NYELV
34
(DML)
Lekérdezés SELECT
SELECT [ ALL | DISTINCT | TOP n [PERCENT] ] { | * } FROM { > } [másodnév] [, …] [ WHERE ] [ GROUP BY ] [ HAVING ] [ ORDER BY { | <egész áll>} [ASC|DESC] [,…] ] ; Táblanév.oszlopnév vagy
Táblanév!oszlopnév vagy
[Tábla név]![oszlop név] vagy
[Tábla név].[oszlop név] • •
A záradékok sorrendje kötött A záradékok kiértékelési sorrendje: – FROM, – WHERE, – GROUP BY, – HAVING, – ORDER BY. 6. AZ SQL NYELV
35
(DML)
SELECT FROM ;
SELECT * FROM Tabla1; SELECT TOP 3 * FROM Tabla1; SELECT TOP 25 PERCENT * FROM Tabla1; SELECT Nev AS Név, Eletkor AS Életkor FROM Tabla1;
SELECT Eletkor FROM Tabla1; SELECT DISTINCT eletkor FROM Tabla1; (DML)
SELECT aggregátor() FROM ;
• • • • • •
AVG (< kifejezés> | ) COUNT ( * | ) MAX (< kifejezés> | ) MIN (< kifejezés> | ) SUM (< kifejezés> | ) STDEV (< kifejezés> | ), STDEVP (< kifejezés> | ) • VAR ( < kifejezés>), VARP ( < kifejezés>) • FIRST ( < kifejezés>), LAST ( < kifejezés>) (DML)
SELECT AVG(eletkor) AS atlag FROM Tabla1; SELECT COUNT(*) AS db FROM Tabla1; SELECT MAX(eletkor+testmagassag) AS ektm FROM Tabla1;
SELECT STDEV(eletkor) AS szoras FROM Tabla1;
SELECT FROM WHERE ;
SELECT * FROM Tabla1 WHERE Eletkor>20;
LIKE , IS, IN, BETWEEN, ANY, SOME, ALL, EXISTS, UNIQUE, • LIKE * ? # [ae] [!ae] [a-c] SELECT * FROM Tabla1 WHERE Nev Like "*Kiss*";
• BETWEEN SELECT Nev FROM Tabla1 WHERE (Eletkor Between 15 And 36);
6. AZ SQL NYELV
36
(DML)
SELECT FROM GROUP BY ;
• Kell aggregátor SELECT ffi, Count(*) FROM Tabla1 GROUP BY FFi; SELECT Eletkor, AVG(Testmagassag) AS [atlag testmagassag] FROM Tabla1 GROUP BY Eletkor;
SELECT FROM GROUP BY HAVING ; Kell aggregátor
(DML)
•
SELECT ffi, Count(*) AS darab FROM Tabla1 GROUP BY FFi HAVING FFi ; SELECT ffi, count(*) AS db, AVG(Testmagassag) AS [atlag testmag], AVG(Eletkor) AS [atlag eletkor] FROM Tabla1 GROUP BY FFi HAVING Not FF;
(DML)
összetett SELECT
SELECT Tabla1.* FROM Tabla1 WHERE (Eletkor>(SELECT AVG(eletkor) FROM Tabla1)) and (Testmagassag>(SELECT AVG(Testmagassag) FROM Tabla1)); SELECT Tabla1.* FROM Tabla1, 7_atlag_eletk WHERE (Tabla1.Eletkor>[7_atlag_eletk].atlag); (DML)
SELECT FROM ORDER BY [ASC | DESC];
SELECT Nev FROM TABLA1 ORDER BY Nev DESC;
6. AZ SQL NYELV
37
(DML)
Paraméterek
SELECT * FROM Tabla1 WHERE Eletkor>parameter;
SELECT FROM {INNER | LEFT | RIGHT} JOIN ON ; (DML)
SELECT Auto.Rendszam, Auto.Tipus, Tabla1.Nev AS tulajdonos FROM Tabla1 INNER JOIN Auto ON Tabla1.Azonosító=Auto.Tulaj; SELECT Auto.Rendszam, Auto.Tipus, Tabla1.Nev AS tulajdonos FROM Tabla1 LEFT JOIN Auto ON Tabla1.Azonosító=Auto.Tulaj;
TRANSFORM <SELECT utasítás> PIVOT [IN (<érték1>, [<érték2> [,… ]])]; (DML)
TRANSFORM Avg(Tabla1.Testmagassag) AS AvgOfTestmagassag SELECT Tabla1.Eletkor FROM Tabla1 GROUP BY Tabla1.Eletkor PIVOT Tabla1.Nev; (DDL)
Halmaz
• UNION SELECT * FROM Tabla1 WHERE Eletkor>30 UNION SELECT * FROM Tabla1 WHERE Eletkor<20;
6. AZ SQL NYELV
38
(DDL)
INSERT, DELETE
CREATE TABLE Tabla (Azonosító COUNTER Primary Key, Nev CHAR(50), FFi BIT, Eletkor Integer, Testmagassag Integer) ; INSERT INTO Tabla VALUES (1, "Nagy Lajos", TRUE, 12, 165); INSERT INTO Tabla SELECT * FROM tabla1; DELETE * FROM Tabla;
(DML)
UPDATE SET
UPDATE Tabla1 SET Eletkor = Eletkor * 2 WHERE FFI;
6. AZ SQL NYELV
39