Adatbázis rendszerek I
Az SQL nyelv elemei
Kovács László
SQL jelentősége
Az SQL ez egyik legfontosabb alaptechnológia az informatikában.Az SQL fejlődése során egyre több funkciót integrál magába,globális adatkezelés felé halad(Vikram Vaswani)
A legkeresettebb ismeretek egyike az IT álláshirdetésekben az SQL,amely stabilan tartja magát (mellette a C++, Java, PHP, UNIX váltakoznak)
(CWJobs.UK)
Kb. évi 10%-os piacnövekedés az adatbáziskezelőknél, kb. 8 billió $ 2005-ben
(Gartner Group)
Számos feladat specifikus SQL DBMSlétezik a piacon
SQL jelentősége
Meg kell tanulni SQL-ben gondolkodni!
Az alap építőelemekből a szükséges elemeket a helyes sorrendben kell bevonni.
Csak biztos alapra szabad építeni, a rejtett hibák csakkésőbb derülnek ki. Látszólag működik a rendszer, …de nem mindig helyesen vagy nem hatékonyan !!
zsiráf-mozaikok
„Aki nem mestere, az hóhéra” (Nagymamám)
SQL használata
SELECT mezőlista FROM tábla , (SELECT …) WHERE mezőfeltétel AND (SELECT …)-feltétel GROUP BY csoport-kif. HAVING csoportfeltétel AND (SELECT..)UNION | INTERSECT | …(SELECT …)
A SELECT parancs szinte végtelen kombinációs, bővítési lehetőséggel rendelkezik
A SELECT parancs több alakban is megjelenhet
ide kaméleonSELECT … FROM …SELECT … INTO … FROM …CURSOR … AS SELECT …
SQL használata
Az SQL több, mint a SELECT parancs
- view- domain- snapshot- trigger- job- tárolt eljárás- tárolt függvény- felhasználó- profile- role- schema- database link- replication- cluster- lock...
interaktív program
CLI-SQLE-SQLSQL
PL-SQLT-SQL
Oracle SQL referencia: www-db.iit.uni-miskolc.hu/…
SQL használata
Az SQL szabvány és az egyes SQL implementációkszoros kölcsönhatásban állnak egymással
- ismerni kell a szabványt- ismerni kell a konkrét SQL felületet
- egyedi objektumok- egyedi operátorok- egyedi függvények- egyedi kapcsolók- egyedi paraméterek- egyedi adattípusok- eltérő operátorok- hiányzó operátorok- …
FROM T1 OUTER JOIN T2 ON fFROM T1 = (+) T2 WHERE f
WHERE CTOD(‘2003.02.10’)…WHERE TO_DATE(‘2003.02.10’,…)WHERE CONVERT(‘2003.02.10’,…)WHERE {2003.02.0}…
ANSI SQL kompatibilitás
matyusa babaegymásba ágyazott
SQL használata
Könyvekben és on-line módon számos SQL oktató forrás áll rendelkezésreAki keres, az talál
www.w3schools.com/sql www.1keydata.com/sql/ www.sqlcourse.com www.geocities.com/SiliconValley /Vista/2207/sql1.html www.firstsql.com/tutor.htm www.sql-tutorial.net
select name, count(aid) from author, ( ( select author from wrote, book where publication=pubid ) union all ( select author from wrote, article where publication=pubid ) ) ba where aid=author11 group by name,aid
kép
Mészöly Géza (1844-1887): Homokbánya (1872)
SQL SELECT funkciói
Algebrai jele: r1 r2 illetve r1 feltétel r2
AUTÓ
EMBER
rsz tulaj
r1
r4
r6
3
1
4
id név
1
2
3
4
Laci
Ágota
János
Zoltán
összekapcsolás
rsz tulaj id név
r1
r4
r6
3
1
4
r1
r4
r6
3
1
4
r1
r4
r6
3
1
4
r1
r4
r6
3
1
4
1 Laci
1 Laci
1 Laci
2 Ágota
2 Ágota
2 Ágota
3 János
3 János
3 János
4 Zoltán
4 Zoltán
4 Zoltán
Táblák összekapcsolása
SELECT mlista FROM r1, r2,.. WHERE feltétel;
Ha a feltétel elmaradDescartes szorzatotkapunk
Kettőnél több táblais összekapcsolható
SQL SELECT funkciói
Táblák összekapcsolása
SELECT mlista FROM r1 INNER JOIN r2 ON feltétel …;
- Illesztési és normál feltételek szétválasztása- Ha több táblában is azonos elnevezésű mező van, akkor a kibővitett mezőnevet használjuk:
tábla.mező - Ha hosszú a táblanév alias nevet használhatunk:
tábla alias- Tábla szerepkört is alias névvel jelöljük
DOLGOZO (kod PK, nev, beosztas, fonok REF DOLGOZO, fizetes)
SELECT f.nev, d.nev FROM dolgozo f INNER JOIN dolgozo dON f.kod = d.fonok WHERE d.beosztas = ‘raktáros’
A B
1
2
3
C
G
U
A C
3
1
5
L
T
P
T1 +T1.A = T2.A T2T1 T2
A C
1
3
T
L
A B
1
2
3
C
G
U
Az outer-join megadása
SELECT mlista FROM r1 LEFT | RIGTH | FULL OUTER JOIN r2 ON feltétel WHERE felt …;
SELECT * FROM AUTO A RIGHT OUTER JOIN EMBER EON A.TULAJ = E.IGSZ WHERE A.AR > 6000000;
Algebrai jele: r1 +feltétel + r2
SQL SELECT funkciói
Algebrai jele: aggregációs-lista (r)
SUM(mez.kif) AVG(mez.kif)COUNT(mez.kif) MAX(mez.kif)MIN(mez.kif)
AUTÓ
rsz tipus
r1 Fiat 1200
r2 Opel 930
r6 Mazda 870
r4 Skoda 1500
r9 Suzuki 1400
ár csoportképzés
kifejezés:
kiírandó: COUNT()
r7 Opel 2570
r11 Fiat 850
r8 Opel 1000
Count()
8
SELECT COUNT(*) FROM AUTO;
Az aggregáció megadása
SELECT aggregációs-lista FROM r;
SQL SELECT funkciói
SQL SELECT funkciói
Algebrai jele: csopképkifaggregációs-lista (r)
AUTÓ
rsz tipus
r1 Fiat 1200
r2 Opel 930
r6 Mazda 870
r4 Skoda 1500
r9 Suzuki 1400
ár csoportképzés
kifejezés: tipus
kiírandó: tipus, AVG(ár)
r7 Opel 2570
r11 Fiat 850
r8 Opel 1000
tipus
Fiat 1025
Opel
Mazda 870
Skoda 1500
Suzuki 1400
AVG(ár)
1500
Az aggregáció és csoportképzés megadása
SELECT aggregációs-lista FROM r GROUP BY csopképkif;
SELECT TIPUS, AVG(AR) FROM AUTO GROUP BY TIPUS;
Szűrés az elkészült csoportokból
SELECT agg-lista FROM tábla GROUP BY cskif HAVING feltétel;
SELECT TIPUS FROM AUTO GROUP BY TIPUS HAVING AVG(AR) > 10000000;
A csoportképzés előtti és utáni szelekció együttesen is szerepelhet:
SELECT TIPUS FROM AUTO WHERE SZIN=”PIROS”GROUP BY TIPUS HAVING AVG(AR) > 10000000;
WHERE HAVING
SQL SELECT funkciói
Algebrai jele: feltétel(cskifagg-lista (r))
Az eredmény rekordok rendezése
SELECT mlista FROM tábla ORDER BY mezo1 mod1, mezo2 ...;
ASCDESCNem része a relációs algebrának
A második mező szerinti szempont csak az első egyezősége esetén lényeges
SELECT RSZ, TIPUS, AR FROM AUTO ORDER BYAR DESC, TIPUS;
Lehet sorszámmal is hivatkozni a mezőkre
SELECT RSZ, TIPUS, AR FROM AUTO ORDER BY3 DESC, 2;
SQL SELECT funkciói
SQL SELECT funkciói
Táblák halmaz műveletei
Algebrai jele: r1 r2 , r1 r2 , r1 \ r2
SELECT … FROM r1 … UNION SELECT … FROM r2 …;SELECT … FROM r1 … UNION ALL SELECT … FROM r2 …;SELECT … FROM r1 … INTERSECT SELECT … FROM r2 …;SELECT … FROM r1 … MINUS SELECT … FROM r2 …;
csak kompatíbilis szerkezetű táblák vonhatók össze
a rendezés csak a legvégén szerepelhet egyszer
SELECT nev FROM OKTATOK WHERE varos = ‘EGER’ UNION ALLSELECT nev FROM HALLGATOK WHERE varos = ‘EGER’ ORDER BY 1;
SQL SELECT funkciói
Al-SELECT használata
A szelekciós feltételben számított érték is szerepelhetA számított értéket az előállító SELECT paranccsal adjuk meg
SELECT … FROM … WHERE … (SELECT …) GROUP BY … HAVING (SELECT…)
A SELECT kifejezések többszörösen egymásba ágyazhatók
SELECT nev FROM DOLGOZOK WHERE fizetes > (SELECT AVG(fiz)FROM DOLGOZOK);
Speciális szelekciós operátorok
kif LIKE minta sztring illeszkedése egy mintára (%,_)
kif IS [NOT] NULL üres-e a kifejezés
kif BETWEEN kif2 AND kif3 köztes érték vizsgálat
SQL SELECT funkciói
EXISTS (al_SELECT) eredménytábla létezése
kif IN lista | (al_SELECT) tartalmazás
kif op ALL lista | (al_SELECT) minden kvantor
kif op ANY lista | (al_SELECT) létezés kvantor
SQL VIEW objektum
Származtatott táblák haszna:- parancs egyszerűsítés- egyszerűbb végrehajtás- védelemv
CREATE VIEW vnév (mnév1, …) AS SELECT … ;
CREATE VIEW BETEGSZAB AS SELECT nev, beosztas, reszleg FROM dolgozok WHERE status = 2;
Csak az előállító SQL parancs tárolódik, az adattábla nem
Hivatkozáskor áll elő a tartalom- aktuális- lassú lehet
Mészöly Géza: Balatoni halásztanya (1877)
kép
A relációs adatmodell
Egyedi elemek- VIEW a kétszeres aggregációban- DISTINCT- UNION ALL- self-join - CROSS JOIN- INNER JOIN- NATURAL JOIN .. USING- több táblás join- SNAPSHOT
Mészöly Géza: Chioggia (1883)
kép