Professional Documents
Culture Documents
Adatbázisok Az SQL Nyelv: Salamon Gábor Gsala@cs - Bme.hu Fóliák by Katona Gyula Y
Adatbázisok Az SQL Nyelv: Salamon Gábor Gsala@cs - Bme.hu Fóliák by Katona Gyula Y
Az SQL nyelv
Salamon Gábor
gsala@cs.bme.hu
fóliák by Katona Gyula Y.
2006. október 2.
Lekérdez®nyelvek típusai, általános jellemz®ik
I aritmetika
Lekérdez®nyelvek típusai, általános jellemz®ik
I aritmetika
I aggregátumok
Lekérdez®nyelvek típusai, általános jellemz®ik
I aritmetika
I aggregátumok
I aritmetika
I aggregátumok
I aritmetika
I aggregátumok
I INGRES lekérdez®nyelve
I Query-By-Example =⇒ QBE
I oszlopkalkulus alapú
I pl. MS Access
nap idõ
név cím
város rendezõ
A példákban használt relációs séma folyt.
1 Macskajaj E. Kusturica
2 Moszkva tér Török F.
.
.
.
I Relációs nyelv
Az SQL nyelv
I Relációs nyelv
I Relációs nyelv
Szabványok
I SQL89 (SQL1)
I Relációs nyelv
Szabványok
I SQL89 (SQL1)
I WHERE el is hagyható
SELECT folyt.
Megjegyzés:
I WHERE el is hagyható
I WHERE el is hagyható
I WHERE el is hagyható
I változóhivatkozások: <sorváltozó>.<attribútum>,
<reláció>.<attribútum>, <attribútum>
A WHERE kifejezés
Kifejezés felépítése:
I változóhivatkozások: <sorváltozó>.<attribútum>,
<reláció>.<attribútum>, <attribútum>
I változóhivatkozások: <sorváltozó>.<attribútum>,
<reláció>.<attribútum>, <attribútum>
I változóhivatkozások: <sorváltozó>.<attribútum>,
<reláció>.<attribútum>, <attribútum>
SELECT név FROM mozi WHERE moziID BETWEEN 150 AND 200 AND
város LIKE 'B%' AND név LIKE '_ _ _'
M¶veletek relációkkal
A részeredményül kapott relációkkal (ha azok sémája lényegében azonos!)
halmazm¶veleteket (unió, metszet, különbség) végezhetünk.
M¶veletek relációkkal
A részeredményül kapott relációkkal (ha azok sémája lényegében azonos!)
halmazm¶veleteket (unió, metszet, különbség) végezhetünk.
Unió (valamely eredményrelációban szerepl® sorok):
I Szintaxis: <eredményreláció1> UNION <eredményreláció2>
M¶veletek relációkkal
A részeredményül kapott relációkkal (ha azok sémája lényegében azonos!)
halmazm¶veleteket (unió, metszet, különbség) végezhetünk.
Unió (valamely eredményrelációban szerepl® sorok):
I Szintaxis: <eredményreláció1> UNION <eredményreláció2>
Állítás
Az SQL relációsan teljes.
Relációs teljesség
Állítás
Az SQL relációsan teljes.
Bizonyítás: Most láttuk az uniót és különbséget, a többi pedig már volt, de újra:
Relációs teljesség
Állítás
Az SQL relációsan teljes.
Bizonyítás: Most láttuk az uniót és különbséget, a többi pedig már volt, de újra:
FROM R
Relációs teljesség
Állítás
Az SQL relációsan teljes.
Bizonyítás: Most láttuk az uniót és különbséget, a többi pedig már volt, de újra:
FROM R
Állítás
Az SQL relációsan teljes.
Bizonyítás: Most láttuk az uniót és különbséget, a többi pedig már volt, de újra:
FROM R
√
szorzat: SELECT R .A1 , R .A2 , . . . , R .Ak , S .B1 , . . . , S .Bl FROM R,S
Multihalmazok-halmazok
I Nem (mindig) éri meg közben is törekedni arra, hogy ne legyen ismétl®dés,
elég a végén, mert:
Multihalmazok-halmazok
I Nem (mindig) éri meg közben is törekedni arra, hogy ne legyen ismétl®dés,
elég a végén, mert:
Az ismétl®dés kiküszöbölése sok munka, mert rendezni kell az egész relációt
hozzá.
Aggregátumok
Budapest 3300
Pécs 500
Sopron 2300
Budapest 3300
Pécs 500
Sopron 2300
I Lehet több oszlop szerint is GROUP BY, ekkor azok a sorok lesznek egy
csoportban, ahol mindegyik GROUP BY után felsorolt oszlop értéke
megegyezik.
Aggregátumok folyt.
Példa:
SELECT város FROM mozi GROUP BY város
Aggregátumok folyt.
Példa:
SELECT város FROM mozi GROUP BY város
Példa:
SELECT város FROM mozi GROUP BY város
I Egyenl®ség vizsgálata
Csak akkor lehetséges, ha az alkérdés egysoros relációt ír le (azaz az
eredménye egyetlen érték vagy érték-vektor).
Alkérdések folyt. Alkérdés WHERE záradékban
Az alkérdés eredményét valamely attribútumok értékeivel hasonlítjuk össze a
kiválasztáshoz.
Ezeknek az attribútumok számában meg kell egyezniük az alkérdés
eredményének oszlopszámával.
I Egyenl®ség vizsgálata
Csak akkor lehetséges, ha az alkérdés egysoros relációt ír le (azaz az
eredménye egyetlen érték vagy érték-vektor).
Az egyenl®ség fennáll, ha az adott attribútumok értékei megegyeznek az
alkérdés által adott reláció megfelel® attribútumainak értékével.
Alkérdések folyt. Alkérdés WHERE záradékban
Az alkérdés eredményét valamely attribútumok értékeivel hasonlítjuk össze a
kiválasztáshoz.
Ezeknek az attribútumok számában meg kell egyezniük az alkérdés
eredményének oszlopszámával.
I Egyenl®ség vizsgálata
Csak akkor lehetséges, ha az alkérdés egysoros relációt ír le (azaz az
eredménye egyetlen érték vagy érték-vektor).
Az egyenl®ség fennáll, ha az adott attribútumok értékei megegyeznek az
alkérdés által adott reláció megfelel® attribútumainak értékével.
Szintaxis:
SELECT . . . FROM . . .
WHERE (<attrib11 >, . . . , <attrib1n >) = (SELECT <attrib21 >, . . . ,
<attrib2n > FROM . . . )
A nem egyenl®ség vizsgálatára a <> használandó.
Alkérdések folyt. Alkérdés WHERE záradékban
Az alkérdés eredményét valamely attribútumok értékeivel hasonlítjuk össze a
kiválasztáshoz.
Ezeknek az attribútumok számában meg kell egyezniük az alkérdés
eredményének oszlopszámával.
I Egyenl®ség vizsgálata
Csak akkor lehetséges, ha az alkérdés egysoros relációt ír le (azaz az
eredménye egyetlen érték vagy érték-vektor).
Az egyenl®ség fennáll, ha az adott attribútumok értékei megegyeznek az
alkérdés által adott reláció megfelel® attribútumainak értékével.
Szintaxis:
SELECT . . . FROM . . .
WHERE (<attrib11 >, . . . , <attrib1n >) = (SELECT <attrib21 >, . . . ,
<attrib2n > FROM . . . )
A nem egyenl®ség vizsgálatára a <> használandó.
Példa: A legnagyobb mozik nevei
Alkérdések folyt. Alkérdés WHERE záradékban
Az alkérdés eredményét valamely attribútumok értékeivel hasonlítjuk össze a
kiválasztáshoz.
Ezeknek az attribútumok számában meg kell egyezniük az alkérdés
eredményének oszlopszámával.
I Egyenl®ség vizsgálata
Csak akkor lehetséges, ha az alkérdés egysoros relációt ír le (azaz az
eredménye egyetlen érték vagy érték-vektor).
Az egyenl®ség fennáll, ha az adott attribútumok értékei megegyeznek az
alkérdés által adott reláció megfelel® attribútumainak értékével.
Szintaxis:
SELECT . . . FROM . . .
WHERE (<attrib11 >, . . . , <attrib1n >) = (SELECT <attrib21 >, . . . ,
<attrib2n > FROM . . . )
A nem egyenl®ség vizsgálatára a <> használandó.
Példa: A legnagyobb mozik nevei
SELECT név FROM mozi
WHERE mozi.székszám = (SELECT MAX(székszám) FROM mozi)
Alkérdések folyt.
I Tartalmazás vizsgálata
Több sort adó alkérdésre is értelmezett.
Alkérdések folyt.
I Tartalmazás vizsgálata
Több sort adó alkérdésre is értelmezett.
A tartalmazás fennáll, ha a vizsgált attribútumok értéke megegyezik az
alkérdés eredményének valamely sorával.
Alkérdések folyt.
I Tartalmazás vizsgálata
Több sort adó alkérdésre is értelmezett.
A tartalmazás fennáll, ha a vizsgált attribútumok értéke megegyezik az
alkérdés eredményének valamely sorával.
Szintaxis:
SELECT . . . FROM . . .
WHERE (<attrib11 >, . . . , <attrib1n >) IN (SELECT <attrib21 >, . . . ,
<attrib2n > FROM . . . )
Alkérdések folyt.
I Tartalmazás vizsgálata
Több sort adó alkérdésre is értelmezett.
A tartalmazás fennáll, ha a vizsgált attribútumok értéke megegyezik az
alkérdés eredményének valamely sorával.
Szintaxis:
SELECT . . . FROM . . .
WHERE (<attrib11 >, . . . , <attrib1n >) IN (SELECT <attrib21 >, . . . ,
<attrib2n > FROM . . . )
A nem tartalmazás vizsgálatára a NOT IN használandó.
I Tartalmazás vizsgálata
Több sort adó alkérdésre is értelmezett.
A tartalmazás fennáll, ha a vizsgált attribútumok értéke megegyezik az
alkérdés eredményének valamely sorával.
Szintaxis:
SELECT . . . FROM . . .
WHERE (<attrib11 >, . . . , <attrib1n >) IN (SELECT <attrib21 >, . . . ,
<attrib2n > FROM . . . )
A nem tartalmazás vizsgálatára a NOT IN használandó.
¬
I H
H I
UN UN
Háromérték¶ logika
¬ ∨ I H UN
I H I I I I
H I H I H UN
UN UN UN I UN UN
Háromérték¶ logika
¬ ∨ I H UN ∧ I H UN
I H I I I I I I H UN
H I H I H UN H H H H
UN UN UN I UN UN UN UN H UN
Háromérték¶ logika
¬ ∨ I H UN ∧ I H UN
I H I I I I I I H UN
H I H I H UN H H H H
UN UN UN I UN UN UN UN H UN
Tehát egy állítás nem csak igaz vagy hamis lehet, hanem ismeretlen is és egy
WHERE-beli állításnál természetesen csak az számit találatnak, ha igaz az
állítás, az ismeretlen nem lesz jó.
Háromérték¶ logika
¬ ∨ I H UN ∧ I H UN
I H I I I I I I H UN
H I H I H UN H H H H
UN UN UN I UN UN UN UN H UN
Tehát egy állítás nem csak igaz vagy hamis lehet, hanem ismeretlen is és egy
WHERE-beli állításnál természetesen csak az számit találatnak, ha igaz az
állítás, az ismeretlen nem lesz jó.
Furán viselkedik ez a logika:
¬ ∨ I H UN ∧ I H UN
I H I I I I I I H UN
H I H I H UN H H H H
UN UN UN I UN UN UN UN H UN
Tehát egy állítás nem csak igaz vagy hamis lehet, hanem ismeretlen is és egy
WHERE-beli állításnál természetesen csak az számit találatnak, ha igaz az
állítás, az ismeretlen nem lesz jó.
Furán viselkedik ez a logika:
¬ ∨ I H UN ∧ I H UN
I H I I I I I I H UN
H I H I H UN H H H H
UN UN UN I UN UN UN UN H UN
Tehát egy állítás nem csak igaz vagy hamis lehet, hanem ismeretlen is és egy
WHERE-beli állításnál természetesen csak az számit találatnak, ha igaz az
állítás, az ismeretlen nem lesz jó.
Furán viselkedik ez a logika:
I Séma létrehozása
I Séma törlése
I Séma módosítása
SQL Data Denition Language
I Séma létrehozása
I Séma törlése
I Séma módosítása
I Séma létrehozása
I Séma törlése
I Séma módosítása
I Nézetek létrehozása
SQL Data Denition Language
I Séma létrehozása
I Séma törlése
I Séma módosítása
I Nézetek létrehozása
I Kényszerek létrehozása
SQL Data Denition Language
I Séma létrehozása
I Séma törlése
I Séma módosítása
I Nézetek létrehozása
I Kényszerek létrehozása
I Triggerek (kicsit)
I Értékkészlet (CHECK)
I attribútumra vonatkozó feltétel
I sorra vonatkozó feltétel
I globális feltétel
Els®dleges kulcs, egyediség
Attribútum(ok) els®dleges kulccsá tétele: PRIMARY KEY
Attribútum(ok) egyediségének megkövetelése: UNIQUE
Els®dleges kulcs, egyediség
Attribútum(ok) els®dleges kulccsá tétele: PRIMARY KEY
Attribútum(ok) egyediségének megkövetelése: UNIQUE
Mindkét esetben az adott attribútumoknak egyértelm¶en azonosítaniuk kell a
sort.
Els®dleges kulcs, egyediség
Attribútum(ok) els®dleges kulccsá tétele: PRIMARY KEY
Attribútum(ok) egyediségének megkövetelése: UNIQUE
Mindkét esetben az adott attribútumoknak egyértelm¶en azonosítaniuk kell a
sort.
Különbség: PRIMARY KEY csak egy lehet, idegen kulcs csak erre hivatkozhat,
sok rendszer automatikusan indexet hoz rá létre.
Els®dleges kulcs, egyediség
Attribútum(ok) els®dleges kulccsá tétele: PRIMARY KEY
Attribútum(ok) egyediségének megkövetelése: UNIQUE
Mindkét esetben az adott attribútumoknak egyértelm¶en azonosítaniuk kell a
sort.
Különbség: PRIMARY KEY csak egy lehet, idegen kulcs csak erre hivatkozhat,
sok rendszer automatikusan indexet hoz rá létre.
Szintaxis:
a tábla létrehozásakor, az attribútum deníciójában:
<attribútum> <típus> { PRIMARY KEY | UNIQUE }
Els®dleges kulcs, egyediség
Attribútum(ok) els®dleges kulccsá tétele: PRIMARY KEY
Attribútum(ok) egyediségének megkövetelése: UNIQUE
Mindkét esetben az adott attribútumoknak egyértelm¶en azonosítaniuk kell a
sort.
Különbség: PRIMARY KEY csak egy lehet, idegen kulcs csak erre hivatkozhat,
sok rendszer automatikusan indexet hoz rá létre.
Szintaxis:
a tábla létrehozásakor, az attribútum deníciójában:
<attribútum> <típus> { PRIMARY KEY | UNIQUE }
Ilyenkor (<attrib1 >, . . . ,<attribk > ) együtt a kulcs. Ha egy kulcs több
attribútumból áll, akkor csak így lehet megadni.
Els®dleges kulcs, egyediség
Attribútum(ok) els®dleges kulccsá tétele: PRIMARY KEY
Attribútum(ok) egyediségének megkövetelése: UNIQUE
Mindkét esetben az adott attribútumoknak egyértelm¶en azonosítaniuk kell a
sort.
Különbség: PRIMARY KEY csak egy lehet, idegen kulcs csak erre hivatkozhat,
sok rendszer automatikusan indexet hoz rá létre.
Szintaxis:
a tábla létrehozásakor, az attribútum deníciójában:
<attribútum> <típus> { PRIMARY KEY | UNIQUE }
Ilyenkor (<attrib1 >, . . . ,<attribk > ) együtt a kulcs. Ha egy kulcs több
attribútumból áll, akkor csak így lehet megadni.
A kulcsfeltételeket a rendszer minden beszúrás és módosítás el®tt ellen®rzi, ezért
van automatikusan index rájuk. És persze emiatt óvatosan kell a kulcsok
megadásával bánni, mert nagyon lelassíthatják az adatmódosításokat.
Idegen kulcs
A hivatkozási épség f® eszköze az SQL-ben.
Idegen kulcs
A hivatkozási épség f® eszköze az SQL-ben.
Másik reláció els®dleges kulcsára hivatkozás. Kulcsszavak: FOREIGN KEY,
REFERENCES
Idegen kulcs
A hivatkozási épség f® eszköze az SQL-ben.
Másik reláció els®dleges kulcsára hivatkozás. Kulcsszavak: FOREIGN KEY,
REFERENCES
Szintaxis:
attribútum deníciójában:
<attribútum> <típus> REFERENCES <hivatkozott reláció>(<hivatkozott
attribútum>)
Idegen kulcs
A hivatkozási épség f® eszköze az SQL-ben.
Másik reláció els®dleges kulcsára hivatkozás. Kulcsszavak: FOREIGN KEY,
REFERENCES
Szintaxis:
attribútum deníciójában:
<attribútum> <típus> REFERENCES <hivatkozott reláció>(<hivatkozott
attribútum>)
relációdeníción belül, önállóan, külön sorban:
FOREIGN KEY <attribútumok>
REFERENCES <hivatkozott reláció>(<hivatkozott
attribútumok>)
Idegen kulcs
A hivatkozási épség f® eszköze az SQL-ben.
Másik reláció els®dleges kulcsára hivatkozás. Kulcsszavak: FOREIGN KEY,
REFERENCES
Szintaxis:
attribútum deníciójában:
<attribútum> <típus> REFERENCES <hivatkozott reláció>(<hivatkozott
attribútum>)
relációdeníción belül, önállóan, külön sorban:
FOREIGN KEY <attribútumok>
REFERENCES <hivatkozott reláció>(<hivatkozott
attribútumok>)
A FOREIGN KEY kulcsszó után álló attribútumokat nevezzük idegen
kulcsoknak.
A fenti deklaráció jelentése: ha létezik egy sor a relációban, ahol az idegen
kulcsban lev® attribútumok valami adott értékeket vesznek fel, akkor léteznie
kell a hivatkozott relációban is egy olyan sornak, ahol a hivatkozott
attribútumok értékei ugyanezek.
Idegen kulcs folyt.
Kell, hogy a hivatkozott attribútumok els®dleges kulcsot alkossanak a
hivatkozott relációban.
Idegen kulcs folyt.
Kell, hogy a hivatkozott attribútumok els®dleges kulcsot alkossanak a
hivatkozott relációban.
Az idegen kulcs deklarálása után záradékban megadható, mi történjen, ha a
hivatkozott mez® megváltozik, törl®dik, illetve ha a hivatkozó mez®
megváltozna. Lehet®ség van a változás/törlés megtiltására vagy a hivatkozó
mez® kijavítására is.
NULLitás
A NOT NULL kulcsszóval megtilthatjuk egy attribútum esetében a NULL
(ismeretlen, nem létez®) érték megadását.
Ezt használva mindenképpen valamilyen érték kerül az attribútum valamennyi
sorába, ezért csak kötelez®en megadandó attribútumok esetén használjuk!
NULLitás
A NOT NULL kulcsszóval megtilthatjuk egy attribútum esetében a NULL
(ismeretlen, nem létez®) érték megadását.
Ezt használva mindenképpen valamilyen érték kerül az attribútum valamennyi
sorába, ezért csak kötelez®en megadandó attribútumok esetén használjuk!
Szintaxis: az attribútum deníciójában:
<attribútum> <típus> NOT NULL
Értékkészlet meghatározása
Attribútum által felvehet® értékek halmazát a CHECK kulcsszóval
korlátozhatjuk.
Értékkészlet meghatározása
Attribútum által felvehet® értékek halmazát a CHECK kulcsszóval
korlátozhatjuk.
Szintaxis:
attribútumra vonatkozó feltétel: <attribútum> <típus> CHECK
(<feltétel>)
Értékkészlet meghatározása
Attribútum által felvehet® értékek halmazát a CHECK kulcsszóval
korlátozhatjuk.
Szintaxis:
attribútumra vonatkozó feltétel: <attribútum> <típus> CHECK
(<feltétel>)
sorra vonatkozó feltétel, relációdenícióban: CHECK (<feltétel>)
Értékkészlet meghatározása
Attribútum által felvehet® értékek halmazát a CHECK kulcsszóval
korlátozhatjuk.
Szintaxis:
attribútumra vonatkozó feltétel: <attribútum> <típus> CHECK
(<feltétel>)
sorra vonatkozó feltétel, relációdenícióban: CHECK (<feltétel>)
több relációra vonatkozó globális feltétel:
CREATE ASSERTION <kényszernév> CHECK(<feltétel>)
Értékkészlet meghatározása
Attribútum által felvehet® értékek halmazát a CHECK kulcsszóval
korlátozhatjuk.
Szintaxis:
attribútumra vonatkozó feltétel: <attribútum> <típus> CHECK
(<feltétel>)
sorra vonatkozó feltétel, relációdenícióban: CHECK (<feltétel>)
több relációra vonatkozó globális feltétel:
CREATE ASSERTION <kényszernév> CHECK(<feltétel>)
Tipikus attribútumra vonatkozó feltételek lehetnek:
értékkészlet felsorolása: <attribútum> IN (<érték1>, . . . , <értékn>)
Értékkészlet meghatározása
Attribútum által felvehet® értékek halmazát a CHECK kulcsszóval
korlátozhatjuk.
Szintaxis:
attribútumra vonatkozó feltétel: <attribútum> <típus> CHECK
(<feltétel>)
sorra vonatkozó feltétel, relációdenícióban: CHECK (<feltétel>)
több relációra vonatkozó globális feltétel:
CREATE ASSERTION <kényszernév> CHECK(<feltétel>)
Tipikus attribútumra vonatkozó feltételek lehetnek:
értékkészlet felsorolása: <attribútum> IN (<érték1>, . . . , <értékn>)
intervallum megadása: <attribútum> BETWEEN <alsó határ> AND <fels®
határ>
Értékkészlet meghatározása
Attribútum által felvehet® értékek halmazát a CHECK kulcsszóval
korlátozhatjuk.
Szintaxis:
attribútumra vonatkozó feltétel: <attribútum> <típus> CHECK
(<feltétel>)
sorra vonatkozó feltétel, relációdenícióban: CHECK (<feltétel>)
több relációra vonatkozó globális feltétel:
CREATE ASSERTION <kényszernév> CHECK(<feltétel>)
Tipikus attribútumra vonatkozó feltételek lehetnek:
értékkészlet felsorolása: <attribútum> IN (<érték1>, . . . , <értékn>)
intervallum megadása: <attribútum> BETWEEN <alsó határ> AND <fels®
határ>
De bármi állhat itt, ami WHERE után szerepelhet, akár alkérdés is.
Értékkészlet meghatározása
Attribútum által felvehet® értékek halmazát a CHECK kulcsszóval
korlátozhatjuk.
Szintaxis:
attribútumra vonatkozó feltétel: <attribútum> <típus> CHECK
(<feltétel>)
sorra vonatkozó feltétel, relációdenícióban: CHECK (<feltétel>)
több relációra vonatkozó globális feltétel:
CREATE ASSERTION <kényszernév> CHECK(<feltétel>)
Tipikus attribútumra vonatkozó feltételek lehetnek:
értékkészlet felsorolása: <attribútum> IN (<érték1>, . . . , <értékn>)
intervallum megadása: <attribútum> BETWEEN <alsó határ> AND <fels®
határ>
De bármi állhat itt, ami WHERE után szerepelhet, akár alkérdés is.
Például a vetít tábla létrehozásakor beírhatunk egy ilyen sort:
CHECK (lmID IN (SELECT lm.lmID FROM lm))
Értékkészlet meghatározása
Attribútum által felvehet® értékek halmazát a CHECK kulcsszóval
korlátozhatjuk.
Szintaxis:
attribútumra vonatkozó feltétel: <attribútum> <típus> CHECK
(<feltétel>)
sorra vonatkozó feltétel, relációdenícióban: CHECK (<feltétel>)
több relációra vonatkozó globális feltétel:
CREATE ASSERTION <kényszernév> CHECK(<feltétel>)
Tipikus attribútumra vonatkozó feltételek lehetnek:
értékkészlet felsorolása: <attribútum> IN (<érték1>, . . . , <értékn>)
intervallum megadása: <attribútum> BETWEEN <alsó határ> AND <fels®
határ>
De bármi állhat itt, ami WHERE után szerepelhet, akár alkérdés is.
Például a vetít tábla létrehozásakor beírhatunk egy ilyen sort:
CHECK (lmID IN (SELECT lm.lmID FROM lm))
Ebben az esetben a vetít tábla minden egyes változásakor leellen®rizzük, hogy
létezik-e a megfelel® lm a lm táblában.
Értékkészlet meghatározása
Attribútum által felvehet® értékek halmazát a CHECK kulcsszóval
korlátozhatjuk.
Szintaxis:
attribútumra vonatkozó feltétel: <attribútum> <típus> CHECK
(<feltétel>)
sorra vonatkozó feltétel, relációdenícióban: CHECK (<feltétel>)
több relációra vonatkozó globális feltétel:
CREATE ASSERTION <kényszernév> CHECK(<feltétel>)
Tipikus attribútumra vonatkozó feltételek lehetnek:
értékkészlet felsorolása: <attribútum> IN (<érték1>, . . . , <értékn>)
intervallum megadása: <attribútum> BETWEEN <alsó határ> AND <fels®
határ>
De bármi állhat itt, ami WHERE után szerepelhet, akár alkérdés is.
Például a vetít tábla létrehozásakor beírhatunk egy ilyen sort:
CHECK (lmID IN (SELECT lm.lmID FROM lm))
Ebben az esetben a vetít tábla minden egyes változásakor leellen®rizzük, hogy
létezik-e a megfelel® lm a lm táblában.
Baj ezzel: csak akkor ellen®rzi, ha a vetít táblával történik valami, azt simán
hagyja, hogy a lm táblából töröljek, pedig ilyenkor is elromolhat.
Értékkészlet meghatározása folyt. Erre megoldás az ASSERTION:
Ezt a rendszer minden olyan alkalommal ellen®rzi, ha vagy a vetít vagy a lm
változik.
Értékkészlet meghatározása folyt. Erre megoldás az ASSERTION:
Ezt a rendszer minden olyan alkalommal ellen®rzi, ha vagy a vetít vagy a lm
változik.
Megjegyzések:
Ezt a rendszer minden olyan alkalommal ellen®rzi, ha vagy a vetít vagy a lm
változik.
Megjegyzések:
SQL3-as szemlélet: lehet®ség van arra, hogy mi mondjuk meg, mikor legyen
ellen®rzés
Trigger:
SQL3-as szemlélet: lehet®ség van arra, hogy mi mondjuk meg, mikor legyen
ellen®rzés
Trigger:
SQL3-as szemlélet: lehet®ség van arra, hogy mi mondjuk meg, mikor legyen
ellen®rzés
Trigger:
SQL3-as szemlélet: lehet®ség van arra, hogy mi mondjuk meg, mikor legyen
ellen®rzés
Trigger: