You are on page 1of 33

Adatbázis rendszerek

Műveletek, SQL
2 Kiegészítések a múlt héthez
 Gyakorlat: a feladatokhoz forrás: az előadás fóliák,
esetleg az adott gyakorlat fóliái, a dokumentáció

 A relációs séma fogalmát majd még egyszer elő fogjuk


venni néhány hét múlva, amikor az adatbázis tervezésről
lesz tüzetesebben szó.

 A create table utasításban az oszlopdefiníciónál fontos a


sorrend:
 Oszlopnév adattípus [default érték] [kényszerek]

BCE 2018
3 Ismétlő kérdések – kahoot.it
 Bal oldal a jobb oldal ellen
 Állítsanak össze 5-5
tesztkérdést: 1 jó, 1-3 rossz
válasz
 A kész kahoot-ot osszák
meg velem
 A bal oldal kérdéssorát a
jobb, a jobb oldal
kérdéssorát a bal oldalnak
kell megválaszolni
 Két fődíj van

BCE 2018
4 Miről lesz ma szó?
•Minden
adatmodell
Műveletek műveletei
•Relációs
műveletek
•A nyelv részei
•Select
SQL •Adattípusok
műveletei,
függvényei

BCE 2018
5 Miről lesz ma szó?
•Minden
adatmodell
Műveletek műveletei
•Relációs
műveletek
•A nyelv részei
•Select
SQL •Adattípusok
műveletei,
függvényei

BCE 2018
6 Adatbázis, adatmodell
Adatbázisnak a valós világ egy részhalmazának leírásához
használt adatok összefüggő, rendezett halmazát nevezzük.
(Gajdos Sándor)

Modellezés

Az adatmodell egy logikai struktúra és azon értelmezett


kényszerek és műveletek összessége

BCE 2018
7 Minden adatbázisra jellemző műveletek
 (érték) Beszúrás
 (érték) Törlés
 (érték) Módosítás (= Törlés + Beszúrás)
 (jellemző) Átnevezés
 (jellemző) Törlés
 (jellemző) Létrehozás
 (adatszerkezet) Létrehozás
 (adatszerkezet) Törlés
 … stb.

BCE 2018
8 Relációs műveletek
 A rendszer zárt a műveletekre: a műveletek 1 vagy 2
relációt alakítanak át egy relációvá

Művelet Reláció3

BCE 2018
9 Egyoperandusú műveletek
 Szokásos műveletek:
 Kiválasztás, vagy korlátozás (SELECT v. RESTRICT)
 Vetület, vagy projekció (PROJECT)
 Átnevezés (RENAME)

 Kibővített műveletek
 Beszúrás (INSERT): új sor
 Bővítés (EXTEND), vagy kibővített vetület: új oszlop
 Csoportfüggvény képzés (GROUPING)

BCE 2018
10 Műveletek vizuálisan
RENAME EXTEND
O1 O2 O3 O4 O5 O1 O2_2 O3 O6
a1 a1
a2 SELECT a3
a3 a4
a4 a7
a5 a8
a6 a10
a7 INSERT
a8
a9
BCE 2018
PROJECT
11 Kiválasztás és vetület
Kiválasztás Vetület
 Csak a megadott feltételnek  Csak a kiválasztott
megfelelő rekordok attribútumok szerepelnek az új
szerepelnek az új relációban relációban
 Az új reláció attribútumai  Mivel a halmaz elemei nem
ismétlődhetnek, előfordulhat,
ugyanazok, mint az eredeti hogy a rekordok száma is
reláció attribútumai kevesebb lesz

NEPTUNKÓD NÉV VÁROS NÉV


AAAAAA Béla Budapest Béla
BBBBBB Anna Budapest Anna
CCCCCC Béla Pécs
BCE 2018
12 Kétoperandusú műveletek
 Halmazműveletek
 Unió (UNION)
 Különbség (MINUS)
 Metszet (INTERSECT)
 Keresztszorzat (CARTESIAN PRODUCT v. CROSS JOIN)

 További (összetett) műveletek


 Illesztés (JOIN)
 Hányados (DIVISION) – nem tananyag

BCE 2018
13 Halmazműveletek
 Az unió, kivonás és metszet csak unió-kompatibilis relációkra
működik:
 A két relációban az attribútumok száma és fő adattípusa megegyezik
(gyakorlatban az attribútumok sorrendjének is meg kell egyeznie)
 Az uniónál az eredményhalmaz elemeinek száma lehet, hogy
kevesebb lesz a két halmaz elemszámának összegénél (az
ismétlődések kimaradnak)
 A kivonás művelete nem felcserélhető
 A metszet levezethető a kivonásból, de külön műveletként is
szerepel
 A keresztszorzat bármilyen két reláció között működik
 Az attribútumok száma a két forrás reláció attribútumszámának összege (ha
voltak azonos nevű attribútumok, akkor azokat át kell nevezni)
 A rekordok száma a két forrás reláció rekordszámának szorzata

BCE 2018
14 Halmazműveletek - UNION
R1
O1 O2 O3 O4 R1 UNION R2
a1 R3
a2 O1 O2 O3 O4
a3 a1
R2 a2
O1 O2 O3 O4 a3
a2 a4
a4 a6
a6 a8
a8

BCE 2018
15 Halmazműveletek - MINUS
R1
O1 O2 O3 O4 R1 MINUS R2
a1 R3
a2 O1 O2 O3 O4
a3 a1
R2 a3
O1 O2 O3 O4 R2 MINUS R1
a2 R4
a4 a4
a6 a6
a8 a8

BCE 2018
16 Halmazműveletek - INTERSECT
R1
O1 O2 O3 O4 R1 INTERSECT R2
a1 R3
a2 O1 O2 O3 O4
a3 a2
R2
O1 O2 O3 O4
R1 MINUS (R1 MINUS R2)
a2
a4
a6
a8

BCE 2018
17 Halmazműveletek – KERESZTSZORZAT
R1 R1 X R2
O1 O2 O3 R3
a1 O1 O2 R1.O3 R2.O3 O4 O5 O6
a2 a1 x1
a3 a2 x1
R2 a3 x1
O3 O4 O5 O6 a1 x2
x1 a2 x2
x2 a3 x2

OSZLOPOK SZÁMA: 3 + 4 = 7
SOROK SZÁMA: 3 * 2 = 6

BCE 2018
18 Komplex művelet – JOIN
R1 R1 JOIN R2 (O3)
O1 O2 O3 R3
a1 x2 O1 O2 O3 O4 O5 O6
a2 x2 a1 x2
a3 x4 a2 x2
R2
O3 O4 O5 O6
x1
x2

BCE 2018
19 Miről lesz ma szó?
•Minden
adatmodell
Műveletek műveletei
•Relációs
műveletek
•A nyelv részei
•Select
SQL •Adattípusok
műveletei,
függvényei

BCE 2018
20 Structured Query Language
 ANSI és ISO standard, de nagyon megengedő  eltérő nyelvjárások
is megfelelnek a szabványnak
 Nem procedurális, hanem deklaratív nyelv
 A végrehajtás módját az adatbáziskezelő rendszer részeként a lekérdezés
optimalizáló határozza meg
 Strukturált lekérdező nyelv, de nem csak lekérdezésre alkalmas:
 DDL: data definition language (CREATE, ALTER, DROP)
 DML: data manipulation language (INSERT, UPDATE, DELETE)
 DQL: data query language (SELECT)
 TCL: transaction control language (COMMIT, ROLLBACK, SAVEPOINT)
 DCL: data control language (GRANT, REWOKE)
 További típusok: pl. procedurális nyelvi elemek, stb.

BCE 2018
21 Szintaktikai elemek
 Nem case-sensitive, kis és nagybetűk szabadon használhatóak
 Az utasítás bárhol (két szó között) több sorba törhető, indentálható

;
 Az utasítás végét mindig pontosvessző ( ) zárja le
 Az objektumok neve nem tartalmazhat különleges karaktert, szóköz
helyett alulvonást használunk (_)
 Különleges karakterek esetén kötelező az idézőjelek használata (idézőjelben
a kis-nagybetű is megmarad, alapból nagybetűsen kerül minden a
katalógusba)

.
 A megadás pontosítása: séma objektumnév oszlopnév .
 Szöveg megadása egyszeres aposztrófok között lehetséges
 Számokban tizedes pont van

BCE 2018
22 Relációs műveletek SQL-ben
 Egyoperandusú műveletek  Kétoperandusú műveletek
 Szokásos műveletek:  Halmazműveletek
 Átnevezés (RENAME) – SELECT  Unió (UNION) – UNION
lista (AS)
 Különbség (MINUS) – MINUS
 Kiválasztás, vagy korlátozás
(SELECT v. RESTRICT) – WHERE  Metszet (INTERSECT) – INTERSECT

 Vetület, vagy projekció  Keresztszorzat (CARTESIAN


(PROJECT) – SELECT lista PRODUCT v. CROSS JOIN) –
FROM
 Kibővített műveletek
 További (összetett) műveletek
 Beszúrás (INSERT): új sor – INSERT
 Illestés (JOIN) – JOIN
 Bővítés (EXTEND): új oszlop –
SELECT lista, új oszlop
 Csoportfüggvény képzés
(GROUPING) – GROUP BY

BCE 2018
23 Lekérdezés példa I.
Select lista: Select lista: Select lista:
vetület átnevezés bővítés

SELECT did, nev AS név, ’diák’ AS státusz


FROM diak
WHERE varos=’Pécs’ OR varos=’Budapest’ Korlátozás
ORDER BY did;
Sorba rendezés:
A FROM után szerepelhet(nek) a reláció(k) NEM RELÁCIÓS MŰVELET!
(keresztszorzat vagy JOIN):
táblanév, nézetnév, vagy szinonima!

BCE 2018
24 Segédletek
 Tábla szerkezetének lekérése sql plus utasítással
 DESCRIBE táblanév (rövidítve: DESC táblanév)

desc minta.alkalmazott

 Segédtábla teszteléshez
 DUAL: publikus szinonima, nem kell elé sémanév
 Egyetlen oszlopa van: DUMMY
 Egyetlen rekordja van
 Konstansok, rendszerváltozók lekérdezésére, konstans feltételek
tesztelésére szoktuk használni

BCE 2018
25 Matematika v. valóság
 NULL érték
 Halmaz és zsák szemantika
 A zsákban lehet ismétlődés
 SELECT: alapból zsák szemantika
 SELECT DISTINCT: halmaz szemantika
 A DISTINCT kulcsszót csak egyszer kell kiírni a select lista elejére
 Halmazműveletek (UNION, MINUS, INTERSECT)
 Alapból halmaz szemantika
 UNION ALL: zsák szemantika

BCE 2018
26 Lekérdezések példa II.
ZSÁK

HALMAZ

HALMAZ

HALMAZ

ZSÁK

BCE 2018
27 Where feltétel
 Nem kötelező elem
 Ha van, akkor csak egy van, lehet egyszerű, vagy
összetett
 Összetett feltétel: logikai műveletekkel, használjunk zárójeleket!
 Kiértékelés:
 A FROM után álló reláció minden rekordjára el kell dönteni, hogy
a feltétel igaz-e
 TRUE: a rekord része az eredmény relációnak
 FALSE: a rekord nem része az eredményrelációnak
 UNKNOWN: a rekord nem része az eredményrelációnak

BCE 2018
28 Where példa
SELECT 'Lefutott' AS eredmény FROM dual
WHERE NULL + 3 IS NULL OR (NULL + 3 = 3 AND NULL = NULL);

SELECT 'Lefutott' AS eredmény FROM dual


WHERE (NULL + 3 IS NULL OR NULL + 3 = 3) AND NULL = NULL;

Run script:
BCE 2018
29 Néhány függvény
 A dokumentációban külön fejezet (7 Functions)
 Az oszlopfüggvények (Single-Row functions)
csoportosítása elsősorban adattípus szerint van
 Szám függvények, pl. ABS, ROUND
 NULL kezelő függvények:
 NVL
 Ha az első érték NULL, akkor a másodikat adja eredményül
 A két érték adattípusának egyformának kell lennie
 COALESCE
 Kiterjesztett NVL függvény
 Az első nem null értéket fogja eredményül adni

BCE 2018
30 NVL függvény kiváltása

BCE 2018
31 Rendezés
 Nem relációs művelet
 A SELECT utolsó lépése írásban és kiértékelésben is
 Megadása több módon lehet (akár vegyesen is)
 Kifejezéssel (oszlopnév vagy függvény)
 Aliassal
 Az eredményreláció oszlopszámával
 Lehet növekvő vagy csökkenő
 ASC (alapértelmezett), DESC
 Lehet többszintű
 A rendezési szempontokat vesszővel elválasztva kell megadni

BCE 2018
32 Rendezés példák

BCE 2018
33 Források
 Quittner Pál, Kardkovács Zsolt és Kerepes Tamás
előadásai
 Oracle Academy anyagai
 Elmasri, Navathe: Fundamentals of Database Systems
(6th edition)
 Gajdos Sándor: Adatbázisok. Műegyetemi jegyzet.
 Oracle dokumentáció

BCE 2018

You might also like