32
Adatbázis rendszerek II. Műveletek táblákkal Az SQL nyelv elemei

Adatbázis rendszerek II

Embed Size (px)

DESCRIPTION

Adatbázis rendszerek II. Műveletek táblákkal Az SQL nyelv elemei. Műveletek táblákkal. Projekció Szelekció Descartes szorzat Összekapcsolás (Join) Halmazműveletek Unió Metszet Különbség. Projekció. - PowerPoint PPT Presentation

Citation preview

Page 1: Adatbázis rendszerek  II

Adatbázis rendszerek II.

Műveletek táblákkal

Az SQL nyelv elemei

Page 2: Adatbázis rendszerek  II

Műveletek táblákkal

Projekció

Szelekció

Descartes szorzat

Összekapcsolás (Join)

Halmazműveletek Unió Metszet Különbség

Page 3: Adatbázis rendszerek  II

Projekció

Lekérdezés egy táblából - ugyanannyi sor, de az eredetinél kevesebb oszlop ( a tábla vertikális megszorítása)

Page 4: Adatbázis rendszerek  II

Szelekció

Lekérdezés a táblából - ugyanannyi oszlop, de az eredetinél kevesebb sor (a tábla horizontális megszorítása)

Page 5: Adatbázis rendszerek  II

Descartes szorzat A Descartes szorzat két táblából indul ki, és az eredményül kapott tábla úgy

keletkezik, hogy az első tábla sorait minden lehetséges módon folytatjuk a második tábla minden sorával.

Page 6: Adatbázis rendszerek  II

Összekapcsolás (Join) Az összekapcsolás művelete két vagy több relációt kapcsol össze egy-egy attributum

érték összehasonlításával. Az összekapcsolás leggyakoribb esete amikor az attributumok egyezését vizsgáljuk.

Page 7: Adatbázis rendszerek  II

HalmazműveletekA halmazműveletek azonos szerkezetű két vagy több reláció között végezhetők el.

Unió

Page 8: Adatbázis rendszerek  II

Halmazműveletek

Metszet

Page 9: Adatbázis rendszerek  II

Halmazműveletek

Különbség

Page 10: Adatbázis rendszerek  II

SQL – strukturált lekérdező nyelvA SQL jellemzése:

- a relációs algebrára épül- kiterjed az adatkezelő tevékenységekre:

- adatdefiniáló (DDL)- adatkezelő (DML)- lekérdező (DQL)- vezérlő (DCL)

- nem tartalmaz vezérlési, IO elemeket- van interaktív és beépülő változata

Az SQL nem DBMS

Page 11: Adatbázis rendszerek  II

SQL

Tipikus műveleti sorrend: - objektumok, táblák

létrehozása - adatok felvitele - adatok lekérdezése - adatok módosítása - szerkezetek módosítása - működési környezet beállítása

1233

1253

4433

6233

Alma

Dió

Mogyi

Bab

23

783

79

98.V.3

01.I.8

97.II.11

75.X.2

kód név ár dátum

Termék

1233 Alma 23 98.V.3

Termék

Page 12: Adatbázis rendszerek  II

SQL- Utasítások csoportosításaDefiníció:DDL: - objektum létrehozás CREATE

- objektum megszüntetés DROP- objektum módosítás ALTER

Módosítás:DML: - rekord felvitel INSERT

- rekord törlés DELETE- rekord módosítás UPDATE

Lekérdezés:DQL: - lekérdezés SELECT

VezérlésDCL: - védelem GRANT,..

- tranzakció kezelés COMMIT,..

Page 13: Adatbázis rendszerek  II

Definíció:Objektum létrehozása:

CREATE TABLE tnév (mnev1 tipus1 intfelt1, …,intfelt) ... ;

CHAR(n)NUMBER(n,m)DATE

PRIMARY KEYNOT NULLUNIQUECHECK feltREFERENCING tabla

CREATE TABLE AUTO (RSZ CHAR(6) PRIMARY KEY,AR NUMBER(9) NOT NULL, IDO DATE);

Page 14: Adatbázis rendszerek  II

Definíció:

Objektum megszüntetése:

DROP TABLE tnév ;

Objektum séma módosítás:

ALTER TABLE tnév ADD | MODIFY (mnev tip intfelt | intfelt);

Page 15: Adatbázis rendszerek  II

SQL- Utasítások csoportosításaDefiníció:DDL: - objektum létrehozás CREATE

- objektum megszüntetés DROP- objektum módosítás ALTER

Módosítás:DML: - rekord felvitel INSERT

- rekord törlés DELETE- rekord módosítás UPDATE

Lekérdezés:DQL: - lekérdezés SELECT

VezérlésDCL: - védelem GRANT,..

- tranzakció kezelés COMMIT,..

Page 16: Adatbázis rendszerek  II

MódosításRekord felvitele:

INSERT INTO tabla VALUES (mezo=ertek,…);

Az érték lehet NULL is. Nem maradhat ki mező.Fontos a mezősorrend

INSERT INTO AUTO VALUES (“bju564”,234,”FIAT”);INSERT INTO AUTO VALUES (“bju564”,234,NULL);INSERT INTO AUTO VALUES (RSZ=“bju564”,...);

Page 17: Adatbázis rendszerek  II

MódosításRekord törlése:

DELETE FROM tabla WHERE feltétel;

A feltételnek eleget tevő rekordok törlődnekHa elmarad a WHERE tag, minden rekord törlődik

DELETE FROM AUTO WHERE AR<1200000;

Rekord módosítása:UPDATE tabla SET mezo= érték,... WHERE feltétel;

A feltételnek eleget tevő rekordok módosulnakHa elmarad a WHERE tag, minden rekord módosul

UPDATE AUTO SET AR = AR * 1.2 WHERE AR<1200000;

Page 18: Adatbázis rendszerek  II

SQL- Utasítások csoportosításaDefiníció:DDL: - objektum létrehozás CREATE

- objektum megszüntetés DROP- objektum módosítás ALTER

Módosítás:DML: - rekord felvitel INSERT

- rekord törlés DELETE- rekord módosítás UPDATE

Lekérdezés:DQL: - lekérdezés SELECT

VezérlésDCL: - védelem GRANT,..

- tranzakció kezelés COMMIT,..

Page 19: Adatbázis rendszerek  II

Lekérdezés:Adatok lekérdezése:

SELECT mezőlista FROM tabla1,tabla2, ... JOIN...

WHERE feltétel

GROUP BY cskif – csoportosításHAVING feltétel – ha a csoportra további

megszorítást akarunk adni ORDER BY – rendezés

Pl:SELECT kód, név, jegy FROM hallgató, tanult tárgyak WHERE tanszék=“menedzser” GROUP BY név HAVING szülév<1984;

Page 20: Adatbázis rendszerek  II

SQL

SELECT - a projekció megadása

AUTÓ

rsz tipus szín

r1 Fiat zöld

r2 Opel kék

r6 Mazda piros

r4 Skoda kék

r9 Suzuki pirosprojekció

kijelölt mezõk = tipus, rsz

tipus

Fiat

Opel

Mazda

Skoda

Suzuki

szín

zöld

kék

piros

kék

piros

SELECT RSZ, TIPUS FROM AUTO;

SELECT mlista FROM tábla;

Az mlista helyén * áll, ha minden mező kell

Page 21: Adatbázis rendszerek  II

SQL

AUTÓ

rsz tipus szín

r1 Fiat zöld

r2 Opel kék

r6 Mazda piros

r4 Skoda kék

r9 Suzuki pirosszelekció

feltétel: szín = 'piros' VAGY tipus = 'Mazda'

rsz tipus szín

r2 Opel kék

r4 Skoda kék

r6 Mazda piros

SELECT - a szelekció megadása

SELECT mlsita FROM tábla WHERE feltétel;

SELECT * FROM AUTO WHERE SZIN = ”KÉK” OR TIPUS = ”MAZDA”;

Page 22: Adatbázis rendszerek  II

AUTÓ

rsz tipus szín

r1 Fiat zöld

r2 Opel kék

r6 Mazda piros

r4 Skoda kék

r9 Suzuki pirosprojekció

kijelölt mezõk = rsz

rsz

r6

r4

r9

szelekció

feltétel: szín='piros' VAGY

szín='kék' r2

SQL

Műveletek kombinálása:

SELECT RSZ FROM AUTO WHERE SZIN = ”PIROS” OR SZIN=”KEK”;

Page 23: Adatbázis rendszerek  II

SQL

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

SELECT - a join megadása

SELECT mlista FROM tabla1, tabla2,.. WHERE feltétel;

Ha a feltétel elmaradDescartes szorzatotkapunk

Kettőnél több táblais összekapcsolható

Page 24: Adatbázis rendszerek  II

SQLSzelekciós join:

SELECT * FROM AUTO, EMBER WHERE TULAJ = IGSZ;

Ha több táblában is azonos elnevezésű mező van, akkor a kibővített mezőnevet használjuk: tábla.mező

SELECT * FROM AUTO, EMBER WHERE AUTO.TULAJ = EMBER.IGSZ;

Ha hosszú a táblanév alias nevet használhatunk: tábla alias

SELECT * FROM AUTO A, EMBER E WHERE A.TULAJ = E.IGSZ;

Page 25: Adatbázis rendszerek  II

SQL

AUTÓ

rsz tipus

r1 Fiat 1200

r2 Opel 930

r6 Mazda 870

r4 Skoda 1500

r9 Suzuki 1400

kiterjesztés

új mezõ: ár/100

ár rsz tipus

r1 Fiat 1200

r2 Opel 930

r6 Mazda 870

r4 Skoda 1500

r9 Suzuki 1400

ár ár/100

12

9.3

8.7

15

14

SELECT - kifejezés megadása

SELECT kifejezés (mezőnév,... FROM …;

SELECT AR/100 UJAR FROM AUTO;

Az előállító kifejezés

Page 26: Adatbázis rendszerek  II

SQL

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;

SELECT - az aggregáció megadása

SELECT aggregációs-lista FROM tábla;

Page 27: Adatbázis rendszerek  II

SQL

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

SELECT - az aggregáció és csoportképzés megadása

SELECT aggregációs-lista FROM tábla GROUP BY csopképzkif;

SELECT TIPUS, AVG(AR) FROM AUTO GROUP BY TIPUS;

Page 28: Adatbázis rendszerek  II

SQLSELECT - eredmény rekordok rendezése

SELECT mlista FROM tábla ORDER BY mezo1 mod1, mezo2 ...;

ASCDESC

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;

Page 29: Adatbázis rendszerek  II

A keresési feltételben megadható összehasonlító operátorok numerikus, karakteres és dátum

típusú adatokra

halmazokra

Page 30: Adatbázis rendszerek  II

A keresési feltételben szereplőszöveges minta megadása

A LIKE operátort karakteres mezők összehasonlítására alkalmazhatjuk. Két speciális karakter adható meg:

% jel tetszőleges hosszúságú karakter sorozatot helyettesít,

_ aláhúzás karakter pedig egy tetszőleges karaktert.

Például:

Page 31: Adatbázis rendszerek  II

Az összehasonlító operátorok precedenciája (végrehajtási sorrendje)

csökkenő sorrendben:

Logikai operátorok

Page 32: Adatbázis rendszerek  II

SQL mintapéldákBOROK(kod, nev, gyarto, fajta, ar)VEVO(vkod, nev, cim)RENDELES(vevo, bor, mennyiseg,datum)

1. azon vevők, akik rendeltek Bikavért

2. Melyik gyártó termel 5-nél több vörös bort

SELECT V.NEV FROM VEVO V, RENDELES R, BOROK BWHERE V.VKOD = R.VEVO AND R.BOR = B.KOD ANDB.NEV LIKE ”BIKAVER%”;

SELECT GYARTO FROM BOROK WHERE FAJTA = ”VOROS”GROUP BY GYARTO HAVING COUNT(*) > 5;