Adatbázis rendszerek II.
-
Upload
penelope-mcdowell -
Category
Documents
-
view
24 -
download
0
description
Transcript of Adatbázis rendszerek II.
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;