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

Hasonló dokumentumok
Az SQL adatbázisnyelv: DML

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Tankönyv példák kidolgozása

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

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

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

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

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

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

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-1 előadás Előadó: dr. Hajas Csilla

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ázis tartalmának módosítása (DML), az adatbázis-kezelı rendszerek felépítése,

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

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

SQL DDL-2 (aktív elemek) triggerek

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

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

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

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

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

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

Bevezetés: Relációs adatmodell

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

Az SQL lekérdeznyelv

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

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

Adatbázisok* tulajdonságai

Adattípusok. Max. 2GByte

Adattípusok. Max. 2GByte

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

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

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

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

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

Bevezetés: az SQL-be

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

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére

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

SQL parancsok feldolgozása

Adatbázisok. 2. gyakorlat SQL november november 12. Adatbázisok 1 / 31

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

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

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

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

Az SQL nyelv. SQL (Structured Query Language = Strukturált Lekérdező Nyelv).

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

Adatok szűrése, rendezése

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

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

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)

Adatbázisok I. Az SQL nyelv

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

Adatbázis rendszerek SQL nyomkövetés

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

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

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

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

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

Adatbáziskezelés. SQL parancsok. Függvények

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

Készítette: Szabóné Nacsa Rozália

Adatbázisok I A relációs algebra

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

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

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

ADATBÁZISKEZELÉS ADATBÁZIS

Adabáziskezelés gyakorlat SQL

Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány)

BEVEZETÉS Az objektum fogalma

Adatbázis használat I. 2. gyakorlat

STRUCTURED QUERY LANGUAGE(SQL) - ALAPOK

Access alapok. Megnevezés Művelet Minta. Új adatbázis létrehozása. Új / Üres adatbázis.. Tábla létrehozása tervező nézetben.

ALAPOK. 0 és 255 közé eső számértékek tárolására. Számértékek, például távolságok, pontszámok, darabszámok.

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

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-KEZELÉS FÉLÉVES FELADAT

példa: Legyen egy zenés CD-ket tartalmazó objektum-orientált adatbázis. Feltételezzük: egy zenés CD típusa audio, vagy mp3-as, vagy videoklippeket

Nézetek és indexek. 8. fejezet Nézettáblák

Relációsémák létrehozása SQL nyelvben

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

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

Elemi alkalmazások fejlesztése IV.

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

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

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

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

Átírás:

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 LIKE Karakterláncok összehasonlítása mintákkal: <attribútum> LIKE <minta> vagy <attribútum> NOT LIKE <minta> Minta egy olyan karakterlánc, amelyben használhatjuk a speciális % és _ karaktereket. A mintában % megfelel bármilyen karakterláncnak és _ bármilyen karakternek. Azokat a bárokat keressük, amelynek a nevében van s (mint például Joe s Bar) SELECT név FROM Bár WHERE név LIKE '%''s% ; 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árs attribú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 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). 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.

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. 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) Alkérdések A FROM listán és a WHERE záradékban (valamint később lesz a HAVING záradékban) zárójelezett SELECTFROM-WHERE utasításokat(alkérdéseket) is használhatunk. Szintaktikus alakja: zárójelbe kell tenni a lekérdezést Hol használható? Ott, ahol relációnevet használunk: (1) FROM listában: új listaelem (rel.név változó SQL-ben)(lekérdezés) [AS] sorváltozó Ez felel meg annak, ahogyan a relációs algebrában tetsz.helyen használhattuk a lekérdezés eredményét. (2) WHERE záradékban: kifejezésekben, feltételekben Alkérdések használata FROM listán I. FROM záradékbanalkérdéssel létrehozott ideiglenes táblát is megadhatunk. Ilyenkor a legtöbb esetben meg kell adnunk a sorváltozó nevét. Szintaktikus alakja: (lekérdezés) [AS] sorváltozó Szemantikája: A FROM záradékban kiértékelődik az alkérdés, utána a sorváltozót ugyanúgy használjuk, mint a közönséges adatbázis relációkat. FROM záradékban alkérdéssel létrehozott ideiglenes táblát is megadhatunk. Ilyenkor a legtöbb esetben meg kell adnunk a sorváltozó nevét. Alkérdések használata WHERE záradékban: (i) Az alkérdés eredménye egyetlen skalárérték, vagyis az alkérdés olyan, mint a konstans, ami egy új elemi kifejezésként tetszőleges kifejezésben használható. (ii) Skalár értékekből álló multihalmaz logikai kifejezésekben használható: [NOT] EXISTS (lekérdezés)kifejezés [NOT] IN (lekérdezés)kifejezés Θ[ANY ALL] (lekérdezés) (iii) Teljes, többdimenziós tábla a visszatérő érték: [NOT] EXISTS (lekérdezés)(kif1, kifn) [NOT] IN (lekérdezés)

Skalár értékekbıl álló multihalmaztvisszaadó alkérdések: Az ANY művelet x= ANY(alkérdés) akkor és csak akkor igaz, ha x egyenlő az alkérdés legalább egy sorával. = helyett bármilyen aritmetikai összehasonlítás szerepelhet. x> ANY(alkérdés) akkor igaz, ha x nem az alkérdés legkisebb elemével azonos. Itt az alkérdés sorai egy mezőből állnak. Skalár értékekbıl álló multihalmazt visszaadó alkérdések: Az ALL mővelet x<> ALL(alkérdés) akkor és csak akkor igaz, ha x az alkérdés egyetlen sorával sem egyezik meg. <> helyett tetszőleges összehasonlítás szerepelhet. x>= ALL(alkérdés) x az alkérdés eredményének maximum értékével azonos. Az IN mővelet a WHERE záradékban sor IN (alkérdés) akkor és csak akkor igaz, ha a sor eleme az alkérdés eredményének. Tagadás: sor NOT IN (alkérdés). Az IN-kifejezések a WHERE záradékban jelenhetnek meg SELECT *FROM Sörök WHERE név IN (SELECT sör FROM Kedvel WHERE név = Fred ); = Az összes olyan sör adata, melyeket Fred kedvel. Az EXISTS mővelet a WHERE-ben EXISTS (alkérdés) akkor és csak akkor igaz, ha az alkérdés eredménye nem üres. Tagadása: NOT EXISTS (alkérdés) A Sörök(név, gyártó)táblában keressük meg azokat a söröket, amelyeken kívül a gyártójuk nem gyárt másikat. Ez korrelált alkérdés, többször kerül kiértékelésre, a külső tábla minden sorára kiértékeljük az alkérdést. A korrelált lekérdezések használata közben figyelembe kell vennünk a nevek érvényességi körére vonatkozó szabályokat.

Oszlopok másodnevének megadása: Az oszlop másodneve: az oszlop fejlécét is átnevezi, számított oszlop esetén különösen hasznos, az oszlopnevet (szóközzel elválasztva) követi (opcionálisan az AS kulcsszó is használható). Dupla idézıjelbe kell tenni, ha szóközt vagy speciális karaktert (#, $, ) használunk, illetve ha nem csupa nagybetőbıl áll. Összesítések (aggregálás) SELECT listán: <Aggregáló mővelet>(kifejezés) [[AS] onév], SUM, COUNT, MIN, MAX aggregáló mőveleteket, AVG (bevezették ezt is, mivel gyakran kell AVG) a SELECT záradékban alkalmazhatjuk egy oszlopra. COUNT(*) az eredmény sorainak számát adja meg. Itt is fontos a halmaz, multihalmaz megkülönböztetés. pl. SUM(DISTINCT R.A) csak a különbözı értékőeket veszi figyelembe. NULL értékek használata, pl. SUM nem veszi figyelembe (implementáció függı, ellenırizzük le a COUNT-ra gyak.) Ismétlődések kiküszöbölése összesítésben Az összesíti függvényen belül DISTINCT. hány különféleáron árulják a Bud sört? SELECT COUNT(DISTINCT ár)from Felszolgál WHERE sör = Bud ; NULL értékek nem számítanak az összesítésben NULL nem számít a SUM, AVG, COUNT, MIN, MAX függvények kiértékelésekor. De ha nincs NULL értéktıl különbözı érték az oszlopban, akkor az összesítés eredménye NULL. Kivétel: COUNT az üres halmazon 0-t ad vissza.

Csoportosítás SELECT FROM [WHERE ][GROUP BY kif1, kifk] Egy SELECT-FROM-WHERE kifejezést GROUP BY záradékkal folytathatunk, melyet attribútumok listája követ. A SELECT-FROM-WHERE eredménye a megadott attribútumok értékei szerint csoportosítódik, az összesítéseket ekkor minden csoportra külön alkalmazzuk. Csoportok szőrése: HAVING záradék A GROUP BY záradékot egyhaving <feltétel> záradék követheti. Ebben az esetben a feltétel az egyes csoportokra vonatkozik, ha egy csoport nem teljesíti a feltételt, nem lesz benne az eredményben. HAVING A Felszolgál(bár, sör, ár) és Sörök(név, gyártó) táblák felhasználásával adjuk meg az átlagos árát azon söröknek, melyeket legalább három bárban felszolgálnak, vagy Pete a gyártójuk. A HAVING feltételére vonatkozó megszorítások Az alkérdésre nincs megszorítás. Az alkérdésen kívül csak olyan attribútumok szerepelhetnek, amelyek: 1. vagy csoportosító attribútumok, 2. vagy összesített attribútomok. (Azaz ugyanazok a szabályok érvényesek, mint a SELECT záradéknál).

Adatbázis tartalmának módosítása Beszúrás: Ha egyetlen sort szúrunk be: INSERT INTO <reláció>values( <attribútum lista> ); a Kedvel(név, sör) táblában rögzítjük, hogy Zsu szereti a Bud sört. INSERT INTO Likes VALUES( Zsu, Bud ); Több sor beszúrása: Egy lekérdezés eredményét is beszúrhatjuk a következı módon alkérdéssel: INSERT INTO <reláció>( <alkérdés> ); A Látogat (név, bár) tábla felhasználásával tábla felhasználásávaladjuk hozzá a LehetBarát(név) táblához Zsu lehetséges barátait, vagyis azokat a sörivókat, akik legalább egy olyan bárt látogatnak, ahova Zsu is szokott járni. Attribútumok megadása A reláció neve után megadhatjuk az attribútumait. Ennek alapvetıen két oka lehet: 1. elfelejtettük, hogy a reláció definíciójában, milyen sorrendben szerepeltek az attribútumok. 2. Nincs minden attribútumnak értéke, és azt szeretnénk, ha a hiányzó értékeket NULL vagy default értékkel helyettesítenék. INSERT INTO Kedvel(sör, név)values( Bud, Zsu ); Default értékek megadása A CREATE TABLE utasításban az oszlopnevetdefaultkulcsszó követheti és egy érték. Ha egy beszúrt sorban hiányzik az adott attribútum értéke, akkor a default értéket kapja.

Törlés A törlendı sorokat egy WHERE feltétel segítségével adjuk meg: DELETE FROM <reláció> WHERE <feltétel>; DELETE FROM Kedvel WHERE nev = Zsu AND sör = Bud ; Az összes sor törlése: DELETE FROM Kedvel; A törlés szemantikája Tegyük fel, hogy az Anheuser-Busch csak Bud és Bud Lite söröket gyárt. Tegyük fel még, hogy s sorai közt a Bud fordul elı elıször. Az alkérdés nem üres, a késıbbi Bud Lite sor miatt, így a Bud törlıdik. Kérdés, hogy a Bud Lite sor törlődik-e? Válasz: igen, a Bud Lite sora is törlődik. A törlés ugyanis két lépésben hajtódik végre. 1. Kijelöljük azokat a sorokat, amelyekre a WHERE feltétele teljesül. 2. Majd töröljük a kijelölt sorokat. Módosítás Bizonyos sorok bizonyos attribútumainak módosítása. Fecó telefonszámát 555-1212-re változtatjuk (Fecó itt egy sörivó neve): UPDATE Sörivók SET telefon = 555-1212 WHERE név = Fecó ; Több sor módosítása Legfeljebb 4 dollárba kerülhessenek a sörök: UPDATE Felszolgál SET ár = 4.00 WHERE ár > 4.00; Olcsó sörök árát duplázzuk: UPDATE Felszolgál SET ár = 2 * ár WHERE ár < 1.00;