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

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

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

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

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

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

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

Tankönyv példák kidolgozása

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

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

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

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

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

Bevezetés: Relációs adatmodell

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

Bevezetés: az SQL-be

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

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

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

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

Az SQL adatbázisnyelv: DML

SQL DDL-2 (aktív elemek) triggerek

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

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

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

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

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

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

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

Bevezetés: Relációs adatmodell

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

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

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

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

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

Bevezetés: Relációs adatmodell

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

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

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

Adatok szűrése, rendezése

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

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

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

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 használat I. 2. gyakorlat

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

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

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

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

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

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

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

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

Relációs algebra 1.rész

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

Adatbázisok I. Az SQL nyelv

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

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

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

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

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

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

SQL parancsok feldolgozása

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

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

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

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

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

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

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

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.

Adatbázisok I A relációs algebra

A SELECT működése. Ttanar tábla: Tdiak tábla:

Adatbázis használat I. 2. gyakorlat

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

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

Adatbázis kezelés Delphiben. SQL lekérdezések

Adatbázisok-1 előadás

Csoportosított adatok megjelenítése összesítı függvények használatával. Copyright 2004, Oracle. All rights reserved.

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

Adattípusok. Max. 2GByte

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

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

Adatbázisok* tulajdonságai

Adatbázis-kezelés. Harmadik előadás

Adattípusok. Max. 2GByte

5.3. Logika a relációkhoz

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

Adatbázisrendszerek megvalósítása 2

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

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

Az SQL lekérdeznyelv

Az adatbázisrendszerek világa

Adatbázis, adatbázis-kezelő

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

Adatbázis-kezelés, információs-rendszerek

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

Adatbázis Rendszerek

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

Gazdasági folyamatok térbeli elemzése. 5. elıadás

SQL gyakorló feladatok. 6. Adatbázis gyakorlat április 5.

Átírás:

Lekérdezések az SQL-ben 1.rész Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 6.1. Egyszerű (egy-relációs) lekérdezések az SQL-ben - Select-From-Where utasítás - Műveletek nullértékekkel - Ismeretlen igazságérték - Az eredmény rendezése 03A_SQL1lekerd // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

Select-From-Where (SFW) utasítás Egyetlen reláció lekérdezése Melyek az unér műveletek? A relációs algebra mely műveletei egy argumentumosak? Ezek a vetítés Π Lista a kiválasztás σ Felt és az átnevezés ρ S(B 1,, Bk) (R) Egyetlen reláció lekérdezése: Π Lista ( σ Felt (ρ S(B 1,, Bk) (R))) SELECT utasítás több részből áll, a részeket záradékoknak nevezzük. Három alapvető záradék van: SELECT lista --milyen típusú sort szeretnénk az eredményben látni? FROM Relációnév -- a tábla neve WHERE feltétel --milyen feltételeknek eleget tevő sorokat kiválasztani? 03A_SQL1lekerd // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 2

Példa Sörivók adatbázisséma Az előadások SQL lekérdezései az alábbi Sörivók adatbázissémán alapulnak (aláhúzás jelöli a kulcs attribútumokat) Sörök(név, gyártó) Bárok(név, város, tulaj, engedély) Ivó(név, város, tel) Kedvel(név, sör) Felszolgál(bár, sör, ár) Látogat(név, bár) 03A_SQL1lekerd // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 3

Egyszerő példa Select-From-Where-re Használjuk Sörök(név, gyártó)relációsémát, mely söröket gyártja a Dreher? SELECT név FROM Sörök WHERE gyártó = Dreher ; 03A_SQL1lekerd // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 4

A lekérdezés eredménye név Arany Ászok Dreher Classic... A lekérdezés eredménye egy reláció, amelynek egy attribútuma van (név) és a sorai az összes olyan sör neve, amelyet a Dreher gyárt. Eltérés a relációs algebrától: Az SQL alapértelmezésben nem szűri ki a duplikátumokat, az eredmény multihalmaz. 03A_SQL1lekerd // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 5

Egy-relációs lekérdezés formális kiértékelése Kiindulunk a FROM záradékból, mely táblára vonatkozik a lekérdezés? Elvégezzük a WHERE záradékban szereplő feltételnek eleget tevő sorok kiválasztását Alkalmazzuk a SELECT záradékban jelölt kiterjesztett projekciót. Lényeges különbség a relációs algebra és SQL között, hogy az SQL-ben az eredmény alapértelmezés szerint nem halmaz, hanem multihalmaz (egy sor az eredményben többször is előfordulhat, ennek az oka, hogy az olcsóbb és hatékonyabb kiértékelést tekintjük az SQL-ben alapértelmezésnek. Ahhoz, hogy halmazt kapjunk, azt külön kérni kell SELECT DISTINCT Lista 03A_SQL1lekerd // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 6

A mőveletek szemantikája név gyártó 1) Ellenőrizzük a feltételt, hogy a gyártó Dreher-e Arany Ászok Dreher 2) Ha a feltétel teljesült, akkor képezünk egy t eredménysort 3) Ebből a t sorból a SELECT listának megfelelő típusú sort képezzük, példa: t.név 03A_SQL1lekerd // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 7

Egy táblát használó SFW alapértelmezése SELECT [DISTINCT] kif 1 [[AS] onév 1 ],, kif n [onév n ] FROM táblanév [sorváltozó] [WHERE feltétel] Alapértelmezés (a műveletek szemantikája --általában) A FROMzáradékban levő relációhoz tekintünk egy sorváltozót, amely a reláció minden sorát bejárja 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. 03A_SQL1lekerd // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 8

SELECT záradékban * jelentése Amikor egy reláció van a FROM záradékban, akkor a SELECT záradékban levő * jelentése: a reláció minden attribútuma Példa: Keressük a Sörök(név, gyártó)tábla alapján a Dreher-sörök adatait. A lekérdezés eredménye SELECT * FROM Sörök WHERE gyártó = Dreher ; A lekérdezés eredménye a Sörök tábla összes attribútumát tartalmazza. 03A_SQL1lekerd // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 9

Attribútumok átnevezése Ha az eredményben más attribútumnevet szeretnénk használni, akkor [AS]új_oszlopnév segítségével tudunk más oszlopnevet kiírni (Oracle-ben nem kell AS ) Példa: Sörök(név, gyártó) SELECT név sör, gyártó FROM Sörök WHERE gyártó = Dreher ; A lekérdezés eredményében az oszlopnevek sör és gyártó lesznek. 03A_SQL1lekerd // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 10

SELECT záradékban levı kifejezések Tetszőleges kifejezés, amely értelmezhető előfordulhat a SELECT záradék elemeként (lásd bővebben majd a gyakorlatok példáit) Példa: Felszolgál(bár, sör, ár) SELECT bár, sör, ár*114 áryenben FROM Felszolgál; Konstansok a kifejezésekben Kedvel(név, sör): SELECT név AS DABkedvelő FROM Kedvel WHERE sör = DAB ; 03A_SQL1lekerd // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 11

WHERE záradék (összetett feltételek) Hasonlóan, mint a relációs algebra kiválasztás (σ) feltételében elemi feltételekből építkezünk, ahol elemi feltételen két kifejezés =, <>, <, >, <=, >= aritmetikai összehasonlítását, a theta műveletet értjük. Logikai műveletek AND, OR, NOTés zárójel( ) segítségével kapjuk az összetett feltételeket. Példa:Felszolgál (bár, sör, ár)relációséma esetén keressük a Joe s Bar bárban árult DAB sörök árát: SELECT ár FROM Felszolgál WHERE bár = Joe s Bar AND sör = DAB ; 03A_SQL1lekerd // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 12

WHERE záradék (további lehetıségek) SQL specialitások, amelyek könnyen átírhatóak relációs algebrai kifejezésre (összetett kiválasztási feltételre) BETWEEN.. AND.. intervallumba tartozás IN (értékhalmaz) egyszerű értékek halmaza SQL specialitások, nem írhatók át relációs algebrába: (---ezek jönnek a köv.lapon ) Karakterláncok LIKE összehasonlítása mintákkal IS NULL összehasonlítás 03A_SQL1lekerd // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 13

LIKE Karakterláncok összehasonlítása mintákkal: <attribútum> LIKE <minta> vagy <attribútum> NOT LIKE <minta> Mintaegy olyan karakterlánc, amelyben használhatjuk a speciális % és _ karaktereket. A mintában % megfelel bármilyen karakterláncnak és _ bármilyen karakternek. Példa:Azokat a bárokat keressük, amelynek a nevében van s (mint például Joe s Bar) SELECT név FROM Bárok WHERE név LIKE '%''s% ; 03A_SQL1lekerd // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 14

NULL értékek Az SQL lehetővé teszi, hogy a relációk soraiban az attribútum értéke egy speciális NULL nullérték legyen. A nullérték értelmezésére több lehetőségünk is van: Ismeretlen érték: például tudom, Joe s Bár -jának van valamilyen címe, de nem tudom, hogy mi az. Nem-definiált érték: például a házastársattribútumnak egyedülálló embereknél nincs olyan értéke, aminek itt értelme lenne, nincs házastársa, ezért nullérték. Where záradékban a nullérték vizsgálata: IS NULL IS NOT NULL 03A_SQL1lekerd // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 15

NULL értékek használata Where záradékban a nullérték használata: Amikor egy aritmetikai műveletben az egyik tag NULL, akkor az eredmény is NULL. Amikor egy NULLértéket hasonlítunk össze bármely más értékkel (beleértve a NULL-t is)az összehasonlítási operátorok (=, <>, <, <=, >, >=) segítségével, akkor az eredmény UNKNOWN (ismeretlen). 03A_SQL1lekerd // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 16

Az ismeretlen (unknown) igazságérték Az SQL-ben szereplő logikai feltételek valójában háromértékű logika: TRUE, FALSE, UNKNOWN (magyarban igaz, hamis, ismeretlen rövidítése miatt inkább meghagyjuk az angol T, F, U rövidítéseket). A WHERE záradékban szereplő logikai feltételt a rendszer minden egyes sorra ellenőrzi és a logikai érték TRUE, FALSE vagy UNKNOWN valamelyike lehet, de az eredménybe csak azok a sorok kerülnek, amelyeknek a feltétel kiértékelése TRUE értéket adott. 03A_SQL1lekerd // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 17

A 3-értékő logika Hogyan működnek az AND, OR, és NOT logikai műveletek a 3-értékű logikában? A szabályt könnyű megjegyezni, ha úgy tekintjük, hogy TRUE = 1, FALSE = 0, és UNKNOWN = ½. Ekkor AND = MIN,OR = MAX, NOT(x) = 1-x. Példa: TRUE AND (FALSE OR NOT(UNKNOWN)) = MIN(1, MAX(0, (1 -½ ))) = MIN(1, MAX(0, ½ )) = MIN(1, ½ ) = ½ = UNKNOWN A 3-értékű logika AND, OR és NOT igazságtáblázatát lásd a Tk. 6.2.ábráját (vagy kitöltése a fenti szabállyal) 03A_SQL1lekerd // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 18

Egy meglepı példa Példa:Felszolgál reláció legyen az alábbi: bár sör ár Joe s Bar Bud NULL SELECT bar FROM Felszolgál WHERE ár < 2.00 OR ár >= 2.00; UNKNOWN UNKNOWN UNKNOWN 03A_SQL1lekerd // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 19

Oka: a 2-értékő!= 3-értékő szabályok Bizonyos általános szabályok, mint például, hogy az AND kommutatív érvényes a 3-értékű logikában is. Ellenben nem igaz, például a kizáró szabály, vagyis por NOT p= TRUEnem teljesül, ha p= UNKNOWN, mert ekkor a baloldal: MAX( ½, (1 ½ )) = ½!=1 vagyis a 3-értékű logikában baloldal értéke nem TRUE. Ezért az előző példában nem az eredeti egy soros táblát, hanem az üres táblát (amelynek egy sora sincs) kaptuk meg az eredménytáblaként. 03A_SQL1lekerd // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 20

Az eredmény rendezése SQL SELECT utasításban a záradékok Az SQL lehetővé teszi, hogy a lekérdezés eredménye bizonyos sorrendben legyen rendezve. Az első attribútum egyenlősége esetén a 2.attribútum szerint rendezve, stb, minden attribútumra lehet növekvő vagy csökkenő sorrend. Select-From-Whereutasításhoz a következő záradékot adjuk, a WHERE záradék és minden más záradék (mint például GROUP BY és HAVING) után következik: SELECT FROM [WHERE ][ ] ORDER BY {attribútum [DESC], } Példa: SELECT * FROM Felszolgál ORDER BY ár DESC, sör 03A_SQL1lekerd // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 21