Lekérdezések az SQL-ben 2.rész

Hasonló dokumentumok
2.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Lekérdezések az SQL-ben 1.rész

Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK)

Lekérdezések az SQL-ben 1.rész

5.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Több táblára vonatkozó lekérdezések Relációs algebra és SQL SELECT

Tankönyv példák kidolgozása

SQL bevezetés. Select-From-Where záradékok Több relációt tartalmazó lekérdezések Alkérdések

Relációs algebra 1.rész alapok

3.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Adatbázis tartalmának módosítása

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

Relációs algebrai lekérdezések átírása SQL SELECT-re (példák)

Az SQL adatbázisnyelv: DML

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

Relációs algebra 2.rész példák

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

WHERE záradék (további lehetıségek) SQL specialitások, nem írhatók át relációs algebrába: LIKE. NULL értékek. Az ismeretlen (unknown) igazságérték

Bevezetés: az SQL-be

SQL DDL-1: táblák és megszorítások

Adatbázis tartalmának módosítása. SQL DML utasítások

Adatbázisok tavaszi félév Vizsgatételsor

Relációs algebra 1.rész

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

~i 6.2. Több relációra vonatkozó lekérdezések

Adatbázis tartalmának módosítása (DML), az adatbázis-kezelı rendszerek felépítése,

Információs rendszerek Adatbázis-kezelés

Feladatok A mai előadáson: Tankönyv -- Termékek feladatai:

SQL DDL-2 (aktív elemek) triggerek

Adatbázisok elmélete 9. előadás

Bevezetés: Relációs adatmodell

Bevezetés: Relációs adatmodell

Adatbázis rendszerek 7. Matematikai rendszer amely foglal magában:

Relációs adatbázisok tervezése ---2

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

ADATBÁZISOK ELMÉLETE 5. ELŐADÁS 3/22. Az F formula: ahol A, B attribútumok, c érték (konstans), θ {<, >, =,,, } Példa:

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

Bevezetés: Relációs adatmodell

Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK)

Relációs adatmodell. Adatbázisok használata

LEKÉRDEZÉSEK SQL-BEN. A relációs algebra A SELECT utasítás Összesítés és csoportosítás Speciális feltételek

Nézetek és indexek. AB1_06C_Nézetek_Indexek - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

Példák átírásokra: Relációs algebrai kifejezések, a kiértékelı fák átírása SQL lekérdezésekre

Adatbázis Rendszerek

Megszorítások. AB1_06A_Megszorítások - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

4.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Adatbázis rendszerek 2. előadás. Relációs algebra

SQL DDL: Táblák, megszorítások (constraints), triggerek, nézettáblák

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

ADATBÁZISOK I. Az esetleges hibákat kérlek a csongor@csongorbokay.com címen jelezd! Utolsó módosítás: március 20.

4. előadás. Relációalgebra és relációkalkulusok. Adatbázisrendszerek előadás október 10.

Relációs algebra lekérdezések optimalizációja. Adatbázisok használata

ADATBÁZISOK: TAN7.EA témaköre SQL DDL, DML, DCL, Tranz.kez.

Adatbázisok elmélete 8. előadás

ABR ( Adatbázisrendszerek) 1. Előadás : Műveletek a relációs medellben

Adatbázisok elmélete

Az adatbázisrendszerek világa

Adatbázisrendszerek Tervezése Közgazdászoknak Munkapéldány

Adatbázis rendszerek 2. előadás. Relációs algebra

ADATBÁZIS-KEZELÉS. Relációalgebra, 5NF

Adatbázisok I. Jánosi-Rancz Katalin Tünde 327A 1-1

Lekérdezések az SQL SELECT utasítással

LOGISZTIKAI ADATBÁZIS RENDSZEREK UNIÓ, ALLEKÉRDEZÉSEK

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

ABR ( Adatbázisrendszerek) 2. Előadás : Műveletek a relációs modellben

Adatbázisok 1. Kósa Balázs gyakorlata alapján Készítette: Nagy Krisztián. 1. gyakorlat

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok

Adatbázisrendszerek megvalósítása 2

6.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Adatbázisok elmélete 9. előadás

Adatbázisok-1 előadás

Csima Judit szeptember 6.

8.Előadás Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

A relációs algebra egy speciális algebra, amely néhány egyszerű, de hathatós. operandusok. Egy reláció megadható a nevével vagy közvetlenül, sorainak

4. Előadás Az SQL adatbázisnyelv

Relációs algebra 2.rész

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

ADATBÁZISOK I. ELŐADÁS ÉS GYAKORLAT JEGYZET

Mveletek a relációs modellben. A felhasználónak szinte állandó jelleggel szüksége van az adatbázisban eltárolt adatok egy részére.

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

Marton József BME-TMIT. Adatbázisok VITMAB november 11.

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP /1/A

Relációs adatbázisok tervezése 2.rész (dekompozíció)

Adatbázis rendszerek. 5. előadás Adatbázis tervezés. Koppányi Zoltán

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Databases 1. Relációs algebra és nemrekurzív Datalog

SQL/PSM kurzorok rész

AZ ADATBÁZISOK HATÁSA A RELÁCIÓS ALGEBRÁRA

Adatbázisok elmélete 9. előadás

Az SQL lekérdeznyelv

Adatbázis rendszerek. 5. előadás Adatbázis tervezés. Koppányi Zoltán

SQL parancsok feldolgozása

Relációs adatbázisok tervezése 2.rész (dekompozíció)

Lekérdezések optimalizálása

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Tervezés: Egyed-kapcsolat modell és az SQL DDL: táblák, nézetek

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Lekérdezések az SQL SELECT utasítással. Copyright 2004, Oracle. All rights reserved.

Relációs adatbázisok tervezése 2.rész (dekompozíció)

Átírás:

Lekérdezések az SQL-ben 2.rész Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 6.2. Több relációra vonatkozó lekérdezések az SQL-ben - Szorzat és összekapcsolás - Sorváltozók használata - Lekérdezések alapértelmezése - Halmazműveletek az SQL-ben 03B_SQL2tobbrel // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

Select-From-Where (SFW) utasítás Több reláció lekérdezése Gyakran előforduló relációs algebrai kifejezés Π Lista ( σ Felt (R 1 x x R n )) típusú kifejezések Szorzat és összekapcsolás az SQL-ben SELECT s-lista --milyen típusú sort szeretnénk az eredményben látni? FROM f-lista -- relációk (táblák) összekapcsolása, illetve szorzata WHERE felt --milyen feltételeknek eleget tevő sorokat kell kiválasztani? FROM f-lista elemei (ezek ismétlődhetnek) táblanév [[AS] sorváltozó, ] Itt: táblák direkt szorzata SQL-ben is bevezethetünk további lehetőségeket a különböző összekapcsolásokra, ezt később a köv.héten tárgyaljuk. Ma: a lekérdezések alapértelmezése 03B_SQL2tobbrel // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 2

Attribútumok megkülönböztetése ---1 Milyen problémák merülnek fel? (1) Ha egy attribútumnév több sémában is előfordul, akkor nem elég az attribútumnév használata, mert ekkor nem tudjuk, hogy melyik sémához tartozik. Ezt a problémát az SQL úgy oldja meg, hogy megengedi egy relációnévnek és egy pontnak a használatát egy attribútum előtt: R.A(az R reláció A attribútumát jelenti). Természetes összekapcsolás legyen R(A, B), S(B,C) SELECT A, R.B B, C FROM R, S WHERE R.B=S.B; 03B_SQL2tobbrel // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 3

Attribútumok megkülönböztetése ---2 Milyen problémák merülnek még fel? (2) Semmi nem tiltja, hogy ugyanaz a reláció többször is szerepeljen, szükség lehet arra, hogy ugyanaz a relációnév többször is előforduljon a FROM listában. Ekkor a FROM listában másodnevet kell megadni, erre sorváltozóként is szoktak hivatkozni, megadjuk azt is, hogy melyik sorváltozó melyik relációt képviseli: FROM R 1 [t 1 ],, R n [t n ] Ekkor a SELECT és WHERE záradékok kifejezésekben a hivatkozás: t i.a(vagyis sorváltozó.attribútumnév) 03B_SQL2tobbrel // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 4

SFW szabvány alapértelmezése ---1 Kiindulunk a FROM záradékból: a FROM lista minden eleméhez egy beágyazott ciklus, végigfut az adott tábla sorain a ciklus minden lépésénél az n darab sorváltozónak lesz egy-egy értéke ehhez kiértékeljük a WHERE feltételt, vagyis elvégezzük a WHERE záradékban szereplő feltételnek eleget tevő sorok kiválasztását (csak a helyesek, ahol TRUE=igaz választ kapunk), azok a sorok kerülnek az eredménybe. Alkalmazzuk a SELECT záradékban jelölt kiterjesztett projekciót. Az SQL-ben az eredmény alapértelmezés szerintitt sem halmaz, hanem multihalmaz. Ahhoz, hogy halmazt kapjunk, azt külön kérni kell: SELECT DISTINCT Lista 03B_SQL2tobbrel // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 5

SFW szabvány alapértelmezése ---2 FOR t1 sorra az R1 relációban DO FOR t2 sorra az R2 relációban DO... FOR tnsorra az Rnrelációban DO IF a where záradék igaz, amikor az attribútumokban t1, t2,..., tnmegfelelő értékei találhatóak THEN t1, t2,..., tn-nek megfelelően kiértékeljük a select záradék attribútumait és az értékekből alkotott sort az eredményhez adjuk 03B_SQL2tobbrel // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 6

SFW szabvány alapértelmezése ---3 SELECT [DISTINCT] kif 1 [[AS] onév 1 ],, kif n [[AS] onév n ] FROM R 1 [t 1 ],, R n [t n ] WHERE feltétel (vagyis logikai kifejezés) Alapértelmezés (a műveletek szemantikája --általában) A FROMzáradékban levő relációkhoz tekintünk egy-egy sorváltozót, amelyek a megfelelő reláció minden sorát bejárják (beágyazott ciklusban) Minden egyes aktuális sorhoz kiértékeljük a WHERE záradékot Ha helyes (vagyis igaz) választ kaptunk, akkor képezünk egy sort a SELECT záradékban szereplő kifejezéseknek megfelelően. 03B_SQL2tobbrel // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 7

Megjegyzés: konverzió relációs algebrába SELECT [DISTINCT] kif 1 [[AS] onév 1 ],, kif n [[AS] onév n ] FROM R 1 [t 1 ],, R n [t n ] WHERE feltétel (vagyis logikai kifejezés) 1.) A FROM záradék sorváltozóiból indulunk ki, és tekintjük a hozzájuk tartozó relációk Descartesszorzatát. Átnevezéssel valamint R.A jelöléssel elérjük, hogy minden minden attribútumnak egyedi neve legyen. 2.) A WHERE záradékot átalakítjuk egy kiválasztási feltétellé, melyet alkalmazunk az elkészített szorzatra. 3.) Végül a SELECT záradék alapján létrehozzuk a kifejezések listáját, a (kiterjesztett) vetítési művelethez. Π onév1,, onévn ( σ feltétel (R 1 R n )) 03B_SQL2tobbrel // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 8

Példa: Két tábla összekapcsolása ---1 Mely söröket szeretik a Joe s Bárba járó sörivók? SELECT sör FROM Kedvel, Látogat WHERE bár = Joe s Bar AND Látogat.név = Kedvel.név; Kiválasztási feltétel: bár = Joe s Bar Összekapcsolási feltétel: Látogat.név = Kedvel.név Alapértelezését lásd a következő oldalon Összekapcsolások SQL:1999-es szintaxisa a köv.órán. 03B_SQL2tobbrel // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 9

Példa: Két tábla összekapcsolása ---2 Látogat Kedvel név bár név sör t1 t2 Sally Joe s Sally Bud Ellenőrzés Joe s bárja output Ellenőrizzük, hogy megegyeznek-e 03B_SQL2tobbrel // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 10

Tábla önmagával való szorzata ---1 Bizonyos lekérdezéseknél arra van szükségünk, hogy ugyanannak a relációnak több példányát vegyük. Ahhoz, hogy meg tudjuk különböztetni a példányokat a relációkat átnevezzük, másodnevet adunk, vagyis sorváltozókatírunk mellé a FROM záradékban. A relációkat mindig átnevezhetjük ily módon, akkor is, ha egyébként nincs rá szükség (csak kényelmesebb). Példa: R(Szülő, Gyerek) séma feletti relációban adott szülő-gyerek adatpárokból állítsuk elő a megállapítható Nagyszülő-Unoka párokat! SELECT t1.szülő NagySzülő, t2.gyerek Unoka FROM R t1, R t2 WHERE t1.gyerek = t2.szülő; 03B_SQL2tobbrel // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 11

Tábla önmagával való szorzata ---2 Példa: Sörök(név, gyártó) tábla felhasználásával keressük meg az összes olyan sörpárt, amelyeknek ugyanaz a gyártója. Ne állítsunk elő (Bud, Bud) sörpárokat. A sörpárokat ábécé sorrendben képezzük, például ha (Bud, Miller)szerepel az eredményben, akkor (Miller, Bud)ne szerepeljen. SELECT s1.név, s2.név FROM Sörök s1, Sörök s2 WHERE s1.gyártó = s2.gyártó AND s1.név < s2.név; 03B_SQL2tobbrel // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 12

Halmazmőveletek Mi hiányzik még, hogy a relációs algebra alapműveleteit mindet az SQL-ben vissza tudjuk adni? A relációs algebrai halmazműveletek: unió, különbség mellett az SQL-ben ide soroljuk a metszetet is (ugyanis SQL-ben megvan a metszetet implementációja is). Az SQL-ben a halmazműveleteket úgy vezették be, hogy azt mindig két lekérdezés között lehet értelmezni, vagyis nem relációk között, mint R U S, hanem lekérdezem az egyiket is és a másikat is, majd a lekérdezések unióját veszem. (lekérdezés1) [UNION INTERSECT {EXCEPT MINUS}] (lekérdezés2); 03B_SQL2tobbrel // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 13

Példa: Intersect (metszet) Kedvel(név, sör), Felszolgál(bár,sör, ár) és Látogat(név, bár)táblák felhasználásával keressük Trükk:itt ez az alkérdés valójában az adatbázisban tárolt tábla (SELECT * FROM Kedvel) INTERSECT (SELECT név, sör azokat a sörivókat és söröket, amelyekre a sörivó szereti az adott sört ésa sörivó látogat olyan bárt, ahol felszolgálják a sört. FROM Felszolgál, Látogat (név, sör) párok, ahol a sörivó látogat olyan bárt, ahol ezt a sört felszolgálják WHERE Látogat.bár = Felszolgál.bár); 03B_SQL2tobbrel // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 14

Halmaz-multihalmaz szemantika A SELECT-FROM-WHERE állítások multihalmaz szemantikát használnak, a halmazműveleteknél mégis a halmaz szemantika az érvényes. Azaz sorok nem ismétlődnek az eredményben. Ha projektálunk, akkor egyszerűbb, ha nem töröljük az ismétlődéseket. Csak szépen végigmegyünk a sorokon. A metszet, különbség számításakor általában az első lépésben lerendezik a táblákat. Ez után az ismétlődések kiküszöbölése már nem jelent extra számításigényt. Motiváció: hatékonyság, minimális költségek 03B_SQL2tobbrel // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 15

Példa: ALL (multihalmaz szemantika) Látogat(név, bár)éskedvel(név, sör) táblák felhasználásával kilistázzuk azokat a sörivókat, akik több bárt látogatnak, mint amennyi sört szeretnek, és annyival többet, mint ahányszor megjelennek majd az eredményben (SELECT név FROM Látogat) EXCEPT ALL (SELECT név FROM Kedvel); 03B_SQL2tobbrel // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 16