SQL alapok
SQL (Sequental Query Language , Structure Query Language). ) nyelv:
Olyan deklaratív nyelv, mely az adatbázisoknál alkalmazva halmaz orientált megközelítéssel, a relációs algebra műveleteinek megvalósítására alkalmas .
Adatbázist jellemzi, hogy egymással valamilyen szempontból kapcsolatban lévő adatok jól szervezett halmazát alkotja, mely számítógépen tartósan, hosszabb ideig tárolt és egyidejűleg több felhasználó párhuzamosan használhatja.
Az SQL parancsok egyszerű angol mondatok, melyek egyszerűen értelmezhetők és azt fogalmazzuk meg hogy milyen adatokat szeretnénk megkapni.
Az SQL parancsok végrehajtása közben az adatbázis motor egy kiválasztó, optimalizáló algoritmusa határozza meg, hogy konkrétan milyen elemi lépések során, milyen módon, miket használva állítja elő a kért eredményt.
Olyan deklaratív nyelv, mely az adatbázisoknál alkalmazva halmaz orientált megközelítéssel, a relációs algebra műveleteinek megvalósítására alkalmas .
Adatbázist jellemzi, hogy egymással valamilyen szempontból kapcsolatban lévő adatok jól szervezett halmazát alkotja, mely számítógépen tartósan, hosszabb ideig tárolt és egyidejűleg több felhasználó párhuzamosan használhatja.
Az SQL parancsok egyszerű angol mondatok, melyek egyszerűen értelmezhetők és azt fogalmazzuk meg hogy milyen adatokat szeretnénk megkapni.
Az SQL parancsok végrehajtása közben az adatbázis motor egy kiválasztó, optimalizáló algoritmusa határozza meg, hogy konkrétan milyen elemi lépések során, milyen módon, miket használva állítja elő a kért eredményt.
SQL szabványok
SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003, SQL:2006, SQL:2008
Jellemzően követő szabvány Számos adatbázis motor gyártó specifikus 'tájszólással'.
SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003, SQL:2006, SQL:2008
Jellemzően követő szabvány Számos adatbázis motor gyártó specifikus 'tájszólással'.
Jellemzően követő szabvány Számos adatbázis motor gyártó specifikus 'tájszólással'.
Az SQL szabvány lekérdezés mellett lehetővé teszi:
- Tárolt adatok karbantartását (új adatok, módosítás, törlés)
- Sémák, szabályok definiálását (relációk, attribútumok)
- Tárolt adatok visszakeresését
- Hozzáférés korlátozását (felhasználók)
- Adatok megosztását (konkurens felhasználók)
- Adat integritás ellenőrzését (integritás kényszerek)
- Tárolt adatok karbantartását (új adatok, módosítás, törlés)
- Sémák, szabályok definiálását (relációk, attribútumok)
- Tárolt adatok visszakeresését
- Hozzáférés korlátozását (felhasználók)
- Adatok megosztását (konkurens felhasználók)
- Adat integritás ellenőrzését (integritás kényszerek)
SQL szintaktikai szabályok:
- Az egyes SQL parancsokat pontosvesszővel zárjuk le.
- A kis és nagybetűket nem különbözteti meg.
- A parancsok szóközökkel, tabulátorokkal tagolhatók és igény szerint több sorba írhatók.
- A szöveg konstansok szimpla aposztrófok között pl. 'alma'
- Az egyes SQL parancsokat pontosvesszővel zárjuk le.
- A kis és nagybetűket nem különbözteti meg.
- A parancsok szóközökkel, tabulátorokkal tagolhatók és igény szerint több sorba írhatók.
- A szöveg konstansok szimpla aposztrófok között pl. 'alma'
SQL nyelv elemei
- Adat definíciós nyelv DDL (séma definíció és módosítás) CREATE, ALTER, DROP
- Hozzáférés (Access Control) GRANT, REVOKE
- Adat manipulációs nyelv DML INSERT, UPDATE, DELETE
- Lekérdezés (Query Language) SELECT
- Tranzakció kezelés COMMIT, ROLLBACK
- Adat definíciós nyelv DDL (séma definíció és módosítás) CREATE, ALTER, DROP
- Hozzáférés (Access Control) GRANT, REVOKE
- Adat manipulációs nyelv DML INSERT, UPDATE, DELETE
- Lekérdezés (Query Language) SELECT
- Tranzakció kezelés COMMIT, ROLLBACK
Megszorítások (constraint)
Az adatbázis tábláinak és mezőinek használata közben automatikusan hatő kényszeritő szabályok.
Egy oszlopra vonatkozó megszorítások
- NULL az attribútum definíciójában arra utal, hogy az adat megadása nem kötelező, ez az alapértelmezés ezért a legritkább esetben írják ki.
- NOT NULL az attribútum definíciójában arra utal, hogy az adat megadása kötelező, azaz nem vihető be olyan sor a relációban, ahol az így definiált adat nincs kitöltve.
- PRIMARY KEY ez az oszlop a tábla elsődleges kulcsa.
- UNIQUE ez az oszlop a tábla kulcsa.
- CHECK(feltétel) csak feltételt kielégítő értékek kerülhetnek be az oszlopba.
- [FOREIGN KEY] REFERENCES reláció_név [ (oszlop_név) ], ez az oszlop külső kulcs
Több oszlopra vonatkozó megszorítások
- PRIMARY KEY(oszlop1[, oszlop2, ...]) ezek az oszlopok együtt alkotják az elsődleges kulcsot. UNIQUE(oszlop1[, oszlop2, ...]) ezek az oszlopok együtt kulcsot alkotnak.
- CHECK(feltétel) csak feltételt kielégítő sorok kerülhetnek be a táblába. F
- OREIGN KEY (oszlop1[, oszlop2, ...])
- REFERENCES reláció(oszlop1[, oszlop2, ...]), az oszlopok külső kulcsot alkotnak a megadott tábla oszlopaihoz.
Példák:
CREATE TABLE uj_tablam (
tbl_azon INT2 PRIMARY KEY,
nev VARCHAR(14) NOT NULL,
cim VARCHAR(13) NOT NULL,
CONSTRAINT unev UNIQUE(nev));
- ALTER TABLE uj_tablam ADD uj_vez int2 NOT NULL;
- ALTER TABLE uj_tablam DROP COLUMN uj_vez;
- DROP TABLE uj_tablam;
A tábla kiürítés parancs a kényszerek (alkalmazott külső kulcs hivatkozás) miatt nem mindig hajtható végre!
- CREATE INDEX belepes_index ON alkalmazott(belepes);
- DROP INDEX belepes_index;
- CREATE USER user_név IDENTIFIED BY jelszó;
- DROP USER név;
- ALTER USER név IDENTIFIED BY jelszó;
INSERT – új sorok hozzáadása a relációhoz
INSERT INTO tablam (név1, név2, ...) VALUES (érték1, érték2, ...);
UPDATE – egy vagy több oszlop tartalmának módosítása
UPDATE tablam SET név1 = érték1, név2 = érték2, ... WHERE logikai feltétel;
DELETE – sorok törlése a relációból
DELETE tablam [WHERE logikai feltétel]; -- (Feltétel nélkül a tábla teljes tartalmát törli! )
SELECT - eredmény sorok megjelenítése, listázása
SELECT * FROM tablam WHERE logikai feltétel ;
SELECT nev1, nev2, ... FROM tablam WHERE logikai feltétel ;
A sorok egyediségének biztosítása SELECT DISTINCT attribútum1, attribútum2, … FROM reláció_név;
Az adatbázis tábláinak és mezőinek használata közben automatikusan hatő kényszeritő szabályok.
Egy oszlopra vonatkozó megszorítások
- NULL az attribútum definíciójában arra utal, hogy az adat megadása nem kötelező, ez az alapértelmezés ezért a legritkább esetben írják ki.
- NOT NULL az attribútum definíciójában arra utal, hogy az adat megadása kötelező, azaz nem vihető be olyan sor a relációban, ahol az így definiált adat nincs kitöltve.
- PRIMARY KEY ez az oszlop a tábla elsődleges kulcsa.
- UNIQUE ez az oszlop a tábla kulcsa.
- CHECK(feltétel) csak feltételt kielégítő értékek kerülhetnek be az oszlopba.
- [FOREIGN KEY] REFERENCES reláció_név [ (oszlop_név) ], ez az oszlop külső kulcs
Több oszlopra vonatkozó megszorítások
- PRIMARY KEY(oszlop1[, oszlop2, ...]) ezek az oszlopok együtt alkotják az elsődleges kulcsot. UNIQUE(oszlop1[, oszlop2, ...]) ezek az oszlopok együtt kulcsot alkotnak.
- CHECK(feltétel) csak feltételt kielégítő sorok kerülhetnek be a táblába. F
- OREIGN KEY (oszlop1[, oszlop2, ...])
- REFERENCES reláció(oszlop1[, oszlop2, ...]), az oszlopok külső kulcsot alkotnak a megadott tábla oszlopaihoz.
Példák:
CREATE TABLE uj_tablam (
tbl_azon INT2 PRIMARY KEY,
nev VARCHAR(14) NOT NULL,
cim VARCHAR(13) NOT NULL,
CONSTRAINT unev UNIQUE(nev));
- ALTER TABLE uj_tablam ADD uj_vez int2 NOT NULL;
- ALTER TABLE uj_tablam DROP COLUMN uj_vez;
- DROP TABLE uj_tablam;
A tábla kiürítés parancs a kényszerek (alkalmazott külső kulcs hivatkozás) miatt nem mindig hajtható végre!
- CREATE INDEX belepes_index ON alkalmazott(belepes);
- DROP INDEX belepes_index;
- CREATE USER user_név IDENTIFIED BY jelszó;
- DROP USER név;
- ALTER USER név IDENTIFIED BY jelszó;
INSERT – új sorok hozzáadása a relációhoz
INSERT INTO tablam (név1, név2, ...) VALUES (érték1, érték2, ...);
UPDATE – egy vagy több oszlop tartalmának módosítása
UPDATE tablam SET név1 = érték1, név2 = érték2, ... WHERE logikai feltétel;
DELETE – sorok törlése a relációból
DELETE tablam [WHERE logikai feltétel]; -- (Feltétel nélkül a tábla teljes tartalmát törli! )
SELECT - eredmény sorok megjelenítése, listázása
SELECT * FROM tablam WHERE logikai feltétel ;
SELECT nev1, nev2, ... FROM tablam WHERE logikai feltétel ;
A sorok egyediségének biztosítása SELECT DISTINCT attribútum1, attribútum2, … FROM reláció_név;
Logikai feltétel
Operátor Értelmezés
= egyenlő
!= <> ^= nem egyenlő
> nagyobb
>= nagyobb egyenlő
< kisebb
<= kisebb egyenlő
BETWEEN x AND y adott értékek közé esik
IN (a, b, c, ...) az értékek között található
LIKE minta hasonlít a mintára ( speciális elemei % és _ )
NOT Logikai tagadás
AND Logikai és
OR Logikai vagy
Operátor Értelmezés
= egyenlő
!= <> ^= nem egyenlő
> nagyobb
>= nagyobb egyenlő
< kisebb
<= kisebb egyenlő
BETWEEN x AND y adott értékek közé esik
IN (a, b, c, ...) az értékek között található
LIKE minta hasonlít a mintára ( speciális elemei % és _ )
NOT Logikai tagadás
AND Logikai és
OR Logikai vagy
= egyenlő
!= <> ^= nem egyenlő
> nagyobb
>= nagyobb egyenlő
< kisebb
<= kisebb egyenlő
BETWEEN x AND y adott értékek közé esik
IN (a, b, c, ...) az értékek között található
LIKE minta hasonlít a mintára ( speciális elemei % és _ )
NOT Logikai tagadás
AND Logikai és
OR Logikai vagy
Precedenciák:
- =, !=, <>, ^=, >, >=, <, <=
- NOT
- AND
- OR
- =, !=, <>, ^=, >, >=, <, <=
- NOT
- AND
- OR
A SELECT eredmény lista szűkítőfeltételek közé tartozik az ALL, DISTINCT, TOP.
- Alapértelmezett működés az összes listázása. (ALL)
- A DISTINCT a kiválasztott mezők
szerint ismétlődő adatok elhagyására
szolgál.
- A TOP-pal a lista tartomány tetejéről
választhatunk ki rekordokat
- Alapértelmezett működés az összes listázása. (ALL)
- A DISTINCT a kiválasztott mezők szerint ismétlődő adatok elhagyására szolgál.
- A TOP-pal a lista tartomány tetejéről választhatunk ki rekordokat
Több táblás lekérdezések
Descartes szorzat :
- SELECT * FROM reláció1, reláció2;
Egyen összekapcsolás:
Általában a táblákat szorosan kell illeszteni. Ezzel a művelettel a két táblának azok a rekordjai kombinálódnak, melyek egy közös mezőben azonos értéket tartalmaznak. A szoros illesztésű lekérdezés az egyik tábla minden olyan rekordját visszakeresi, amelyik megfelel egy másik tábla rekordjainak.
- SELECT * FROM tablam1, tablam2 WHERE tablam1.nev1 = tablam2.nev2;
- SELECT * FROM tablam1 INNER JOIN tablam2 ON tablam1.nev1 = tablam2.nev2;
Ha a kapcsolómezők típusa nem szám, akkor típusuk
és tartalmuk fajtája szerint egyezniük kell.
Tábla összekapcsolása önmagával:
- SELECT alias1.nev1, alias2.nev2, … FROM tablam AS alias1, tablam AS alias2;
Külső összekapcsolás:
A laza külső illesztésű lekérdezés annyiban különbözik a szoros illesztésütől, hogy mindenképpen visszaadja az egyik illesztett tábla rekordjait, akkor is, ha nincsenek kapcsolódó rekordok a másikban. A baloldali illesztés a bal oldali tábla rekordjaihoz kapcsolja a másik tábla azon rekordjait, melyek az illesztési feltételeknek megfelelnek. A jobb oldali illesztés ugyanez, csak ott a jobb oldali tábla rekordjaihoz kapcsolja a másik tábla, illesztésnek megfelelő rekordjait.
Az illesztési műveletek egymásba ágyazhatók. Ha illesztett lekérdezést készítünk annak előnye, hogy az illesztett táblákat is úgy kezeli, mintha ugyanabban a táblában lennének, melyhez illesztve lettek.
- SELECT * FROM tablam1 LEFT | RIGHT JOIN tablam2 ON tablam1.nev1 = tablam2.nev2;
Táblák közötti halmaz műveletek:
- SELECT … UNION SELECT ...;
- SELECT … INTERSECT SELECT ...;
- SELECT … EXCEPT SELECT ...;
Egymásba ágyazott lekérdezéseknél két lehetőség van:
- a beágyazott SELECT egy rekordot ad vissza
- a beágyazott SELECT több rekordot add vissza
Speciális összehasonlítások: exists, in, not in, > all, < any
Korrelált lekérdezés – a beágyazott lekérdezés visszautal a külső lekérdezésre, a belső lekérdezés a külső lekérdezés minden egyes rekordjára újra kiértékelésre kerül
SELECT nev FROM osztaly o WHERE NOT EXISTS (
SELECT * FROM alkalmazott WHERE oszt_azon = o.oszt_azon);
--- (osztályok, melyeknek nincs dolgozója )
Descartes szorzat :
Egyen összekapcsolás:
Általában a táblákat szorosan kell illeszteni. Ezzel a művelettel a két táblának azok a rekordjai kombinálódnak, melyek egy közös mezőben azonos értéket tartalmaznak. A szoros illesztésű lekérdezés az egyik tábla minden olyan rekordját visszakeresi, amelyik megfelel egy másik tábla rekordjainak.
Ha a kapcsolómezők típusa nem szám, akkor típusuk és tartalmuk fajtája szerint egyezniük kell.
Tábla összekapcsolása önmagával:
Külső összekapcsolás:
- SELECT * FROM reláció1, reláció2;
Egyen összekapcsolás:
Általában a táblákat szorosan kell illeszteni. Ezzel a művelettel a két táblának azok a rekordjai kombinálódnak, melyek egy közös mezőben azonos értéket tartalmaznak. A szoros illesztésű lekérdezés az egyik tábla minden olyan rekordját visszakeresi, amelyik megfelel egy másik tábla rekordjainak.
- SELECT * FROM tablam1, tablam2 WHERE tablam1.nev1 = tablam2.nev2;
- SELECT * FROM tablam1 INNER JOIN tablam2 ON tablam1.nev1 = tablam2.nev2;
Ha a kapcsolómezők típusa nem szám, akkor típusuk és tartalmuk fajtája szerint egyezniük kell.
Tábla összekapcsolása önmagával:
- SELECT alias1.nev1, alias2.nev2, … FROM tablam AS alias1, tablam AS alias2;
Külső összekapcsolás:
A laza külső illesztésű lekérdezés annyiban különbözik a szoros illesztésütől, hogy mindenképpen visszaadja az egyik illesztett tábla rekordjait, akkor is, ha nincsenek kapcsolódó rekordok a másikban. A baloldali illesztés a bal oldali tábla rekordjaihoz kapcsolja a másik tábla azon rekordjait, melyek az illesztési feltételeknek megfelelnek. A jobb oldali illesztés ugyanez, csak ott a jobb oldali tábla rekordjaihoz kapcsolja a másik tábla, illesztésnek megfelelő rekordjait.
Az illesztési műveletek egymásba ágyazhatók. Ha illesztett lekérdezést készítünk annak előnye, hogy az illesztett táblákat is úgy kezeli, mintha ugyanabban a táblában lennének, melyhez illesztve lettek.
- SELECT * FROM tablam1 LEFT | RIGHT JOIN tablam2 ON tablam1.nev1 = tablam2.nev2;
Táblák közötti halmaz műveletek:
- SELECT … UNION SELECT ...;
- SELECT … INTERSECT SELECT ...;
- SELECT … EXCEPT SELECT ...;
Egymásba ágyazott lekérdezéseknél két lehetőség van:
- a beágyazott SELECT egy rekordot ad vissza
- a beágyazott SELECT több rekordot add vissza
Speciális összehasonlítások: exists, in, not in, > all, < any
Korrelált lekérdezés – a beágyazott lekérdezés visszautal a külső lekérdezésre, a belső lekérdezés a külső lekérdezés minden egyes rekordjára újra kiértékelésre kerül
SELECT nev FROM osztaly o WHERE NOT EXISTS (
SELECT * FROM alkalmazott WHERE oszt_azon = o.oszt_azon);
--- (osztályok, melyeknek nincs dolgozója )
Nézet
A nézetek olyan virtuális táblák, amelyek a fizikai táblákat felhasználva a tárolt adatok más és
más logikai modelljét, csoportosítását tükrözik. Nézetek a
CREATE VIEW <nézetnév> [(<oszlopnév> [, <oszlopnev>, ...])]
AS <lekérdezés>;
A nézet lekérdezésre az egyedüli megkötés, hogy rendezést nem tartalmazhat.
A nézetek olyan virtuális táblák, amelyek a fizikai táblákat felhasználva a tárolt adatok más és
más logikai modelljét, csoportosítását tükrözik. Nézetek a
CREATE VIEW <nézetnév> [(<oszlopnév> [, <oszlopnev>, ...])]
AS <lekérdezés>;
A nézet lekérdezésre az egyedüli megkötés, hogy rendezést nem tartalmazhat.
más logikai modelljét, csoportosítását tükrözik. Nézetek a
CREATE VIEW <nézetnév> [(<oszlopnév> [, <oszlopnev>, ...])]
AS <lekérdezés>;
A nézet lekérdezésre az egyedüli megkötés, hogy rendezést nem tartalmazhat.
Indexek
Az indexek a táblákban való keresést gyorsítják meg.
CREATE [UNIQUE] INDEX <indexnév>
ON <táblanév> (<oszlopnév> [, <oszlopnév> , ...]);
Ha indexet az UNIQUE kulcsszóval definiáltuk, a rendszer biztosítja, hogy az adott oszlop csak egyedi értékeket kaphat
Az indexek a táblákban való keresést gyorsítják meg.
CREATE [UNIQUE] INDEX <indexnév>
ON <táblanév> (<oszlopnév> [, <oszlopnév> , ...]);
Ha indexet az UNIQUE kulcsszóval definiáltuk, a rendszer biztosítja, hogy az adott oszlop csak egyedi értékeket kaphat
CREATE [UNIQUE] INDEX <indexnév>
ON <táblanév> (<oszlopnév> [, <oszlopnév> , ...]);
Ha indexet az UNIQUE kulcsszóval definiáltuk, a rendszer biztosítja, hogy az adott oszlop csak egyedi értékeket kaphat
Néhány adatbázis fogalom
Adatbázis séma:
az adatbázis szerkezete, amit
tervezéskor, egyszeri alkalommal hozunk létre, ritkán változtatjuk. Az
adatbázis séma megadja, hogy az adatbázisban milyen egyedek vannak, ezek milyen
tulajdonságokkal és kapcsolatokkal rendelkeznek. A szerkezet leírása a az
adatmodellek jelölési rendszerével történik.
az adatbázis szerkezete, amit
tervezéskor, egyszeri alkalommal hozunk létre, ritkán változtatjuk. Az
adatbázis séma megadja, hogy az adatbázisban milyen egyedek vannak, ezek milyen
tulajdonságokkal és kapcsolatokkal rendelkeznek. A szerkezet leírása a az
adatmodellek jelölési rendszerével történik.
Adatbázis előfordulás
alatt az adatbázis pillanatnyi
tartalmát értjük Általában a tervezés befejezésekor, az adatbázis használatba
vételekor történik az adatok elsődleges betöltése az adatbázisba. A mindennapi
használat során az adatbázis előfordulás, a tartalom az, ami állandóan
változik. Az adatbázis tartalmának változtatásához az adatmodell műveleti
halmazát használjuk.
alatt az adatbázis pillanatnyi
tartalmát értjük Általában a tervezés befejezésekor, az adatbázis használatba
vételekor történik az adatok elsődleges betöltése az adatbázisba. A mindennapi
használat során az adatbázis előfordulás, a tartalom az, ami állandóan
változik. Az adatbázis tartalmának változtatásához az adatmodell műveleti
halmazát használjuk.
Tábla (table):
az adattárolás alapegysége. Az adatok struktúrált tárolásáért felelős. Oszlopokból és sorokból áll mely megfeleltethető egy relációnak, az oszlopoknak megadható a típusa, amely meghatározza, hogy a sorok (a rekordok) az adott mezőn milyen jellegű adatot tartalmazhatnak.. A tábla, a tábla oszlopai és a táblában tárolt rekordok egyedien azonosíthatóak.
az adattárolás alapegysége. Az adatok struktúrált tárolásáért felelős. Oszlopokból és sorokból áll mely megfeleltethető egy relációnak, az oszlopoknak megadható a típusa, amely meghatározza, hogy a sorok (a rekordok) az adott mezőn milyen jellegű adatot tartalmazhatnak.. A tábla, a tábla oszlopai és a táblában tárolt rekordok egyedien azonosíthatóak.
Partíciók (partitioning):
A tábla partíciókra osztható, a rekordok csoportjai szét vannak osztva az egyes partíciók között (vízszintes felbontás). Alapértelmezetten az egész tábla egyetlen partíció, nincsen felbontás. Többpartíciós táblákkal skálázhatóbbá tehető az adatbázis, de bevezetésük inkább nagyméretű tábláknál javasolt, ahol sok erőforrás spórolható meg ha nem a tábla egészét szükséges módosítani/lekérni/karbantartani. Kívülről nézve a tábla, mint logikai egység atomi, a partícionálás transzparens módon működik.
A tábla partíciókra osztható, a rekordok csoportjai szét vannak osztva az egyes partíciók között (vízszintes felbontás). Alapértelmezetten az egész tábla egyetlen partíció, nincsen felbontás. Többpartíciós táblákkal skálázhatóbbá tehető az adatbázis, de bevezetésük inkább nagyméretű tábláknál javasolt, ahol sok erőforrás spórolható meg ha nem a tábla egészét szükséges módosítani/lekérni/karbantartani. Kívülről nézve a tábla, mint logikai egység atomi, a partícionálás transzparens módon működik.
Nézet (view):
virtuális tábla. Különböző táblákból összeállított adatok megjelenítésére alkalmas. Fizikai tárolása azonban nincs, az adatokat csak származtatja a táblákból. Az adatbázisban is csak a nézetet létrehozó utasítás (SQL select) tárolódik. A nézetek alkalmasak arra, hogy korlátozzák a felhasználó által látható adatokat illetve, hogy átformálják az adatokat. Erre lehet példa táblák összekapcsolása, értékek aggregálása (összegzése) egy oszlopban.
virtuális tábla. Különböző táblákból összeállított adatok megjelenítésére alkalmas. Fizikai tárolása azonban nincs, az adatokat csak származtatja a táblákból. Az adatbázisban is csak a nézetet létrehozó utasítás (SQL select) tárolódik. A nézetek alkalmasak arra, hogy korlátozzák a felhasználó által látható adatokat illetve, hogy átformálják az adatokat. Erre lehet példa táblák összekapcsolása, értékek aggregálása (összegzése) egy oszlopban.
Kulcs (key):
az adat, amely alapján biztosan azonosítható a rekord. Egy táblának lehet több kulcsa is, de csak egyetlen elsődleges kulcsa és csak erre jönnek létre automatikusan indexek.
az adat, amely alapján biztosan azonosítható a rekord. Egy táblának lehet több kulcsa is, de csak egyetlen elsődleges kulcsa és csak erre jönnek létre automatikusan indexek.
Index:
Az adatok a táblákban rendezetlenül helyezkednek el. Az indexek a rekordokhoz való hozzáférést gyorsítják és külön struktúrában tárolódnak az adatbázisban. Általában olyan oszlopra érdemes indexet létrehozni, amelyre várhatóan gyakran lesz megfogalmazva keresés. Az indexek épülhetnek olyan oszlopokra is, amelyekre nincs megkövetelve a rekordok egyedisége.
Kétféle index létezik:
- Fürtözött index (clustered index): az indexrekordok tárolási sorrendje megegyezik az adatrekordok tárolási sorrendjével. Mivel egynél több ellentmondásmentes rendezési sorrend nem feltétlen definiálható fürtözött index is csak egyetlen oszlopra épülhet. Az SQL Serverben a fürtözött indexek B*-fa struktúrában tárolódnak. Az indexfa alsó szintjén pedig adatblokkok (SQL Server terminológiában lapok) szerepelnek.
- Nem-fürtözött index (non-clustered index): az indexrekordok sorrendje független a tárolási sorrendtől. A nem-fürtözött indexek csak olyan táblákon hozhatók létre, amelyeken szerepel már fürtözött index. Szintén B*-fa struktúrában tárolódnak ám az alsó szint speciális. Ha a tábla rendelkezik fürtözött index-szel, akkor a megfelelő kulcs lesz a levélelemben. Ha ilyen nincs, akkor egy mutató az adatrekordra.
Az adatok a táblákban rendezetlenül helyezkednek el. Az indexek a rekordokhoz való hozzáférést gyorsítják és külön struktúrában tárolódnak az adatbázisban. Általában olyan oszlopra érdemes indexet létrehozni, amelyre várhatóan gyakran lesz megfogalmazva keresés. Az indexek épülhetnek olyan oszlopokra is, amelyekre nincs megkövetelve a rekordok egyedisége.
Kétféle index létezik:
- Fürtözött index (clustered index): az indexrekordok tárolási sorrendje megegyezik az adatrekordok tárolási sorrendjével. Mivel egynél több ellentmondásmentes rendezési sorrend nem feltétlen definiálható fürtözött index is csak egyetlen oszlopra épülhet. Az SQL Serverben a fürtözött indexek B*-fa struktúrában tárolódnak. Az indexfa alsó szintjén pedig adatblokkok (SQL Server terminológiában lapok) szerepelnek.
- Nem-fürtözött index (non-clustered index): az indexrekordok sorrendje független a tárolási sorrendtől. A nem-fürtözött indexek csak olyan táblákon hozhatók létre, amelyeken szerepel már fürtözött index. Szintén B*-fa struktúrában tárolódnak ám az alsó szint speciális. Ha a tábla rendelkezik fürtözött index-szel, akkor a megfelelő kulcs lesz a levélelemben. Ha ilyen nincs, akkor egy mutató az adatrekordra.
Kétféle index létezik:
- Fürtözött index (clustered index): az indexrekordok tárolási sorrendje megegyezik az adatrekordok tárolási sorrendjével. Mivel egynél több ellentmondásmentes rendezési sorrend nem feltétlen definiálható fürtözött index is csak egyetlen oszlopra épülhet. Az SQL Serverben a fürtözött indexek B*-fa struktúrában tárolódnak. Az indexfa alsó szintjén pedig adatblokkok (SQL Server terminológiában lapok) szerepelnek.
- Nem-fürtözött index (non-clustered index): az indexrekordok sorrendje független a tárolási sorrendtől. A nem-fürtözött indexek csak olyan táblákon hozhatók létre, amelyeken szerepel már fürtözött index. Szintén B*-fa struktúrában tárolódnak ám az alsó szint speciális. Ha a tábla rendelkezik fürtözött index-szel, akkor a megfelelő kulcs lesz a levélelemben. Ha ilyen nincs, akkor egy mutató az adatrekordra.
Kényszer (constraint):
az adatintegritást elősegítő szabályok egy oszlop mezőire. A tábla rekordjainak be kell tartaniuk ezen szabályokat. Miután létrehoztuk a kényszereket az SQL Server automatikusan ellenőrzi a betartásukat.
az adatintegritást elősegítő szabályok egy oszlop mezőire. A tábla rekordjainak be kell tartaniuk ezen szabályokat. Miután létrehoztuk a kényszereket az SQL Server automatikusan ellenőrzi a betartásukat.
Elsődleges kulcs (primary key):
gyakorlatilag a kitöltött és egyediség kényszerek együtt.
gyakorlatilag a kitöltött és egyediség kényszerek együtt.
Külső kulcs (foreign key):
az oszlop mezői csak egy másik tábla rekordjainak megfelelő mezőjéből kerülhet ki. A külső kulcs kényszer tehát táblák közötti kapcsolatok azonosítására szolgál.
az oszlop mezői csak egy másik tábla rekordjainak megfelelő mezőjéből kerülhet ki. A külső kulcs kényszer tehát táblák közötti kapcsolatok azonosítására szolgál.
Alapértemezett érték (defaults):
a kényszerekhez hasonló módon oszlopokra definiálható. Az alapértelmezett értéket hordozza, amivel inicializálódik a rekord, amennyiben a létrehozásakor az érintett mezőt üresen hagyták. Az érték-jellegű kényszerekhez hasonlóan bonyolult számítások eredménye is lehet egy alapértelmezett érték, de akár egy konstans is.
a kényszerekhez hasonló módon oszlopokra definiálható. Az alapértelmezett értéket hordozza, amivel inicializálódik a rekord, amennyiben a létrehozásakor az érintett mezőt üresen hagyták. Az érték-jellegű kényszerekhez hasonlóan bonyolult számítások eredménye is lehet egy alapértelmezett érték, de akár egy konstans is.
Tárolt eljárás és függvény (stored procedure):
egy tárolt eljárás T-SQL utasítások gyűjteménye, amely a szerveroldalon futtatható (pl. egy bonyolult fáradtságos többtáblát érintő feltételes adatmódosítás) egyetlen felhasználói utasításként. Annak megfelelően, hogy ad-e vissza értéket vagy sem beszélhetünk tárolt eljárásról illetve tárolt függvényről.
egy tárolt eljárás T-SQL utasítások gyűjteménye, amely a szerveroldalon futtatható (pl. egy bonyolult fáradtságos többtáblát érintő feltételes adatmódosítás) egyetlen felhasználói utasításként. Annak megfelelően, hogy ad-e vissza értéket vagy sem beszélhetünk tárolt eljárásról illetve tárolt függvényről.
Trigger:
Adatbázis eseményekre aktiválódó tárolt eljárás. Közvetlenül nem hívható meg.
Adatbázis eseményekre aktiválódó tárolt eljárás. Közvetlenül nem hívható meg.
Sémák (Schemas)
Az SQL Server sémái az adatbázison belül elhelyezkedő névterek, amelyek objektumok csoportjait tárolják (pl. táblákat, nézeteket). Minden objektum az adatbázisban sémákba van rendezve. A sémák hozzá lehetnek rendelve egy felhasználóhoz vagy adatbázis-szerephez, korlátozva ezzel az általuk elérhető objektumokat az adatbázison belül. A saját sémában levő objektumokra nem kell előtaggal együtt hivatkozni. Ha egy felhasználó hozzá akar férni más séma objektumához és van erre jogosultsága ezt megteheti, amennyiben a másik sémában levő objektumra a séma nevével együtt hivatkozik
Az SQL Server sémái az adatbázison belül elhelyezkedő névterek, amelyek objektumok csoportjait tárolják (pl. táblákat, nézeteket). Minden objektum az adatbázisban sémákba van rendezve. A sémák hozzá lehetnek rendelve egy felhasználóhoz vagy adatbázis-szerephez, korlátozva ezzel az általuk elérhető objektumokat az adatbázison belül. A saját sémában levő objektumokra nem kell előtaggal együtt hivatkozni. Ha egy felhasználó hozzá akar férni más séma objektumához és van erre jogosultsága ezt megteheti, amennyiben a másik sémában levő objektumra a séma nevével együtt hivatkozik
Szinonimák (Synonyms)
A nem saját sémában levő objektumokhoz való hozzáféréshez a teljes nevükkel kell rájuk hivatkozni. Ez feltételezi a másik séma ismeretét is, ami kellemetlen követelmény. A sémagazdák és az erre jogosultak létrehozhatnak szinonimákat a saját sémájukban a külső sémákban levő objektumokra (amennyiben ahhoz hozzáférnek természetesen). A szinonima ezután bárhol használható, ahol a névtérrel kiegészített objektumnévre lenne szükség. A szinonimák tehát alternatív névként funkcionálnak elfedik a külső séma jellegzetességei és egyben erőforrások is, amelyek engedélyekhez köthetők, így rugalmasabbá tehetők a sémák közötti műveletek
A nem saját sémában levő objektumokhoz való hozzáféréshez a teljes nevükkel kell rájuk hivatkozni. Ez feltételezi a másik séma ismeretét is, ami kellemetlen követelmény. A sémagazdák és az erre jogosultak létrehozhatnak szinonimákat a saját sémájukban a külső sémákban levő objektumokra (amennyiben ahhoz hozzáférnek természetesen). A szinonima ezután bárhol használható, ahol a névtérrel kiegészített objektumnévre lenne szükség. A szinonimák tehát alternatív névként funkcionálnak elfedik a külső séma jellegzetességei és egyben erőforrások is, amelyek engedélyekhez köthetők, így rugalmasabbá tehetők a sémák közötti műveletek
Megjegyzések
Megjegyzés küldése