Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaGyula Orbán Megváltozta több, mint 10 éve
1
Adatbázis gyakorlat – SUBSELECT – Tarcsi Ádám 2005. március
2
Miről lesz szó? SUBSELECT INSERT, DELETE, UPDATE – select Gyakorlás
3
Allekérdezés - subselect
Allekérdezés olyan SELECT utasítás, amely értéke(ke)t ad át egy külső utasításnak. WHERE-ben vizsgálandó értékeket másik SELECT-ből hozzuk. Pl.: Ki idősebb, mint a 13-as azonosítójú diák? SELECT nev FROM tdiak WHERE kor> (SELECT kor WHERE DAzon=13); Hogy is van ez? Az eddig tanult lekérdezések korlátja, hogy csak olyan kérdéseket tehetünk fel, amikre a válasz megadható a kiindulási tábláink direktszorzatából képzett sorok szűrésével és/vagy csoportosításával. Nagyon egyszerűen fel tudunk tenni olyan kérdést, ami ezzel az eszközrendszerrel nem megválaszolható. Pl.: „Melyik tanár nem osztályfőnök?” …
4
Allekérdezés – subselect – 2.
Jelentőségük: ha egy külső utasítás eredménytáblájában valamely sor kiválasztása egy teljes tábla kiértékelésétől függ. Először a belső SELECT hajtódik végre, ez lesz a külső feltétele. WHERE, HAVING, FROM utasításrészben Mindig egy összehasonlító operátor jobb oldalán van! Zárójelbe ( ) kell tenni Nem tartalmazhat ORDER BY utasításrészt Fajái: egysoros többsoros
5
Egysoros subselect A belső SELECT egyetlen sort ad vissza
DISTINCT záradékkal segíthetünk! Példa: Listázzuk ki azokat a diákokat, akik legalább kétszer olyan idősek, mint a legfiatalabb diák. Kiket tanít még ‘Kis Pista’ tanára?
6
Többsoros subselect Hibás, ha az előbbi alselect több sort ad vissza.
Összehasonlító operátort használunk: IN / NOT IN: a lista bármely elemével egyenlő ANY: listát ad vissza, ha van egy elem, ami kielégíti a feltételt, akkor a WHERE feltétel teljesül ALL: listát ad vissza Teljesül a feltétel, ha a visszaadott lista minden eleme minden tagja teljesíti EXIST: a feltétel teljesül, ha az allekérdezés legalább egy sort ad vissza. Amennyiben az alkérdés egynél több sort eredményezhet, és a felsőbb kérdés az adott helyen csupán egyetlen értéket vár, meg kell adnunk, milyen szabály szerint képezzünk egyetlen IGAZ vagy NEM IGAZ logikai értéket a soronként elvégzett összehasonlítások alapján. Az lehet a feladat, hogy a főkérdésben megadott mező (kifejezés) az alkérdés eredményei közül: Legalább eggyel, (legalább egy esetben igaz - ANY) Vagy mindegyikkel bizonyos relációban van-e, (minden esetben igaz – ALL) Legalább eggyel nem (legalább egy esetben nem igaz – NOT ALL), Vagy semelyikkel sincs a megadott relációban (egyetlen esetben sem igaz – NOT ANY). ANY, ALL, NOT ANY/ALL Megadott érték előfordulásának vizsgálata: IN
7
Subselect feladatok Adjuk meg azon tanárokat, akik legalább egy diákot tanítanak! Adjuk meg azon tanárokat, akik nem tanítanak egy diákot sem!
8
Allekérdezés -2. INSERT INTO
INSERT INTO <táblanév> (<mezőnév1>, …, <mezőnévn>)(<al-select>) INSERT INTO tDiak (DAzon, Nev, Kor, TAzon)(SELECT DAzon, Nev, Kor, 1 FROM tOsztaly) INSERT INTO tDiak (DAzon, Nev, Kor, TAzon)(SELECT *, 1 FROM tOsztaly)
9
Allekérdezés -3. – UPDATE
UPDATE <táblanév> SET <mezőnév1> = <érték1>, …, <mezőnévk> = <értékk> WHERE <feltétel al-select-ekkel> Változtassuk a TAzon mező értékét 3-ra azon diákoknál, akiket Nagy Aranka tanít! UPDATE tDiak SET TAzon=3 WHERE TAzon IN (SELECT TAzon FROM tTanar WHERE Nev=’Nagy Aranka’)
10
Allekérdezés -3. – DELETE FROM
DELETE FROM <táblanév> WHERE <feltétel al-select-ekkel> Töröljük azokat a tanárokat, akik egy diákot sem tanítanak! DELETE FROM tTanár WHERE TAzon NOT IN (SELECT TAzon FROM tDiak)
11
Alkérdés CREATE TABLE-ben
(… ) AS SELECT …
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.