Download ppt - Adatbázis rendszerek I

Transcript
Page 1: Adatbázis rendszerek I

Adatbázis rendszerek I

Az SQL nyelv elemei

Kovács László

Page 2: Adatbázis rendszerek I

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

Page 3: Adatbázis rendszerek I

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)

Page 4: Adatbázis rendszerek I

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 …

Page 5: Adatbázis rendszerek I

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/…

Page 6: Adatbázis rendszerek I

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

Page 7: Adatbázis rendszerek I

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

Page 8: Adatbázis rendszerek I

kép

Mészöly Géza (1844-1887): Homokbánya (1872)

Page 9: Adatbázis rendszerek I

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ó

Page 10: Adatbázis rendszerek I

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’

Page 11: Adatbázis rendszerek I

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

Page 12: Adatbázis rendszerek 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

Page 13: Adatbázis rendszerek 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;

Page 14: Adatbázis rendszerek I

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))

Page 15: Adatbázis rendszerek I

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

Page 16: Adatbázis rendszerek 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;

Page 17: Adatbázis rendszerek I

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);

Page 18: Adatbázis rendszerek I

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

Page 19: Adatbázis rendszerek I

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

Page 20: Adatbázis rendszerek I

Mészöly Géza: Balatoni halásztanya (1877)

kép

Page 21: Adatbázis rendszerek I

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

Page 22: Adatbázis rendszerek I

Mészöly Géza: Chioggia (1883)

kép


Recommended