22
Adatbázis rendszerek I Az SQL nyelv elemei Kovács László

Adatbázis rendszerek I

  • Upload
    keelia

  • View
    45

  • Download
    4

Embed Size (px)

DESCRIPTION

Adatbázis rendszerek I. Kovács László. Az SQL nyelv elemei. 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). - PowerPoint PPT Presentation

Citation preview

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