adatbázis rendszerek ii

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

Upload: penelope-mcdowell

Post on 02-Jan-2016

32 views

Category:

Documents


0 download

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

TRANSCRIPT

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;