adatbázis rendszerek ii
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 PresentationTRANSCRIPT
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ó
Lekérdezés egy táblából - ugyanannyi sor, de az eredetinél kevesebb oszlop ( a tábla vertikális megszorítása)
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)
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.
Ö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.
HalmazműveletekA halmazműveletek azonos szerkezetű két vagy több reláció között végezhetők el.
Unió
Halmazműveletek
Metszet
Halmazműveletek
Különbség
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
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
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,..
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);
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);
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,..
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”,...);
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;
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,..
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;
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
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”;
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”;
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ó
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;
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
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;
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;
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;
A keresési feltételben megadható összehasonlító operátorok numerikus, karakteres és dátum
típusú adatokra
halmazokra
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:
Az összehasonlító operátorok precedenciája (végrehajtási sorrendje)
csökkenő sorrendben:
Logikai operátorok
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;