Adatbázisok 1. SQL (alkérdések). Az IN használata Emlékezzünk vissza: Az IN után szereplő multihalmaz elemei lekérdezéssel is megadhatók SELECT nev FROM.

Slides:



Advertisements
Hasonló előadás
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Advertisements

10. gyakorlat SQL SELECT.
Tananyag: konzultáció
2012. tavaszi félév Véső Tamás. A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges,
Adatbázisrendszerek elméleti alapjai 2. előadás
Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda 4. Előadás Az SQL adatbázisnyelv Sorváltozók Alkérdések Ismétlődő sorok Összesítések 1.
Lekérdezések SQL-ben Relációs algebra A SELECT utasítás
© Kozsik Tamás Adatbáziskezelés •Relációs adatbáziskezelők •Noha a Java objektum-elvű, egyelőre nem az objektum-elvű adatbáziskezelőket támogatja.
Adatbázis rendszerek I Relációs kalkulus Általános Informatikai Tsz. Dr. Kovács László.
Anyagadatbank c. tárgy gyakorlat
Elmaradás.  0 Számjegy. Ebben a pozícióban egyetlen számjegyet kell megadnia.  9 Számjegy. Ebben a pozícióban egyetlen számjegyet lehet megadni, nem.
Delphi programozás alapjai
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
– SQL 2: Adatok kezelése – Tarcsi Ádám, január 30. Adatbázis gyakorlat.
Adatbázis gyakorlat – SUBSELECT – Tarcsi Ádám március.
2012. március 6. Rózsa Győző Interaktív környezet március Rózsa Győző
Többtáblás lekérdezések, allekérdezések Rózsa Győző
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
SQL – DQL (Data Query Language ) adat lekérdezések
INSERT INTO Egy vagy több rekordot ad hozzá a táblához. Egyetlen rekordot hozzáfűző kifejezés: INSERT INTO cél_tábla (mező1,mező2,…) VALUES (érték1, érték2,
Algebra a matematika egy ága
(MY)SQL MEGJEGYZÉSEK. MYISAM VS. INNODB  A MySQL-ben többféle tárolási motor is használatos: MyISAM, InnoDB  A régebbi verziókban a MyISAM alapértelmezett,
Adatbázis rendszerek II.
Adatbáziskezelés Horváth Ernő.
Delphi programozás alapjai Nagyváradi Anett PTE PMMK MIT.
2006. október 2.Markó Tamás, PTE TTK1 Az Oracle SQL 4. Összesítés és csoportosítás lekérdezésekben. Halmazműveletek.
SQL92 lehetőségek KL A tábla B tábla C view adatok VIEW működése utasítás: SELECT.. FROM A,B … SELECT.. FROM C Az adatok a hivatkozáskor állítódnak elő.
ADATBÁZISOK
Részletező csoportosítások Rózsa Győző
SQL Server 2005 relációs adattárház technológiák
RDF és SPARQL. Felhasznált anyagok Marcelo Arenas, Claudio Gutierrez, Jorge Peréz: RDF and SPARQL: Database Foundations (bemutató) Claudio Gutierrez,
Adatbázis kezelés SQL. Történeti áttekintés 1976IBM:SEQUEL,SQL 1976IBM:SEQUEL,SQL 1983ORACLE 1983ORACLE 1984INFORMIX 1984INFORMIX 1986SQL – szabvány :
Lekérdezésfordító Adatbázisok 2.. Elemzés Lekérdezés Elemző Előfeldolgozó Logikai lekérdezéstervet generáló Lekérdezésátíró Jónak vélt logikai lekérdezésterv.
Lekérdezésfordító Adatbázisok tervezése, megvalósítása, menedzselése.
Összesítés és csoportosítás lekérdezésekben. Halmazműveletek.
SQL.
Az SQL nyelv alapjai.
Access XP Kifejezés-szerkesztő Összehasonlító operátorok:
Lekérdezések Páll Boglárka A lekérdezés az adatbázisban szereplő adatok kinyerésének leghatékonyabb és legsokrétübb módja A lekérdezés tulajdonképpen.
2012. tavaszi félév Véső Tamás. Kérdezze le minden dolgozó nevét, jövedelmét, részlegének nevét és a részlegében dolgozók legkisebb és legnagyobb jövedelmét,
2012. tavaszi félév Véső Tamás Véső Tamás OE­NIK / 18.
2012. tavaszi félév Véső Tamás Véső Tamás OE­NIK / 29.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Adatbázis-kezelés SQL-lel
SQL DDL DATA DEFINITION LANGUAGE. Táblák létrehozása CREATE TABLE táblanév ( oszlopnév1 típus(méret) /DEFAULT érték/ /NOT NULL/, oszlopnév2 típus(méret)
Készítette: Tóth Ervin
– SQL 3: SELECT - 1. – Tarcsi Ádám, január 31. Adatbázis gyakorlat.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
1 Informatikai Szakképzési Portál Adatbázis kezelés DQL – Adatlekérdező nyelv.
1. MATEMATIKA ELŐADÁS Halmazok, Függvények.
Adatbázisok gyakorlat
1 Vektorok, mátrixok.
Többtáblás lekérdezések, hierarchikus lekérdezések, allekérdezések
Webprogramozó tanfolyam
SQL történelem 1970 Edgar F. Codd (IBM) cikke 12 szabály a relációs adatmodellekre 1979 első kereskedelmi forgalmazású relációs adatbáziskezelő 1986 az.
Adatbázis-kezelés 3-4. Adatok lekérdezése utasítás általános formája SELECT [ALL/DISTINCT] {*/, …, } FROM [ ], …, [ ] [WHERE GROUP BY, …, HAVING ORDER.
1 Verseny 2000 gyakorlat SQL 2000 Server Portál adatbázis létrehozása.
– SELECT - 1. – Tarcsi Ádám január Adatbázis gyakorlat.
1 Relációs kalkulusok Tartománykalkulus (DRC) Sorkalkulus (TRC) - deklaratív lekérdezőnyelvek - elsőrendű logikát használnak - relációs algebra kifejezhető.
Programozás III JPA.
SQL bevezetés Select-From-Where záradékok
SQL aggregálás, csoportosítás és összekapcsolás Adatbázisok 1.
1 SQL jogosultság-kezelés Privilégiumok Grant és Revoke Grant Diagrammok.
Sapientia - Erdélyi Magyar Tudományegyetem (EMTE) Csíkszereda
SQL Több táblás lekérdezések. Halmazműveletek. Alkérdések
Alkalmazásfejlesztés gyakorlat
XML lekérdezőnyelvek XPath XQuery.
Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda
Előadás 03 Algebrai optimalizáció Mi a NULL? Multihalmazok
Előadás másolata:

Adatbázisok 1. SQL (alkérdések)

Az IN használata Emlékezzünk vissza: Az IN után szereplő multihalmaz elemei lekérdezéssel is megadhatók SELECT nev FROM szeret WHERE LOWER(gyumolcs) IN ('alma','korte'); SELECT felavatva FROM hajok WHERE nev IN (SELECT hajo FROM kimenetelek WHERE eredmeny = 'elsullyedt');

Mi a különbség? SELECT felavatva FROM hajok WHERE nev IN (SELECT hajo FROM kimenetelek WHERE eredmeny = 'elsullyedt'); SELECT felavatva FROM hajok, kimenetelek WHERE nev = hajo AND eredmeny = 'elsullyedt';

És itt? SELECT datum FROM csatak WHERE nev IN (SELECT csata FROM kimenetelek); SELECT felavatva FROM csatak, kimenetelek WHERE nev = csata;

Az IN és az = közötti különbség Szintaktikailag az alábbi lekérdezés is helyes SELECT datum FROM csatak WHERE nev = (SELECT csata FROM kimenetelek); Futási időben azonban hibát kapunk – egy érték és multihalmaz egyenlőségét csak abban az esetben vizsgálhatjuk, ha a multihalmaz pontosan egy értéket tartalmaz – azaz, az = jobboldalán szereplő lekérdezésnek pontosan egy sort kellene visszaadnia

A többi aritmetikai művelet Hasonló mondható el a többi aritmetikai összehasonlítás esetében is SELECT nev FROM hajok WHERE felavatva > (SELECT TO_CHAR(datum, 'YYYY') FROM csatak WHERE nev = 'Denmark Strait'); Helyes SELECT nev FROM hajok WHERE felavatva > (SELECT TO_CHAR(datum, 'YYYY') FROM csatak WHERE datum > DATE ' '); Helytelen

Az ALL és az ANY használata Alkérdések esetén az aritmetikai összehasonlításokat általában az ALL vagy ANY műveletekkel alkalmazzuk – az ALL a minden kvantornak felel meg – míg az ANY a létezik kvantornak

Példák SELECT osztaly FROM hajoosztalyok WHERE where agyukSzama >= ALL (SELECT agyukSzama FROM hajoosztalyok); SELECT nev FROM hajok WHERE felavatva > ANY (SELECT TO_CHAR(datum, 'YYYY') FROM csata);

Mi az alábbi lekérdezés jelentése? SELECT agyukSzama FROM hajoosztalyok MINUS SELECT agyukSzama FROM hajoosztalyok WHERE agyukSzama < ANY (SELECT agyukSzama FROM hajoosztalyok);

Az IN és az = ANY Vegyük észre SELECT nev FROM hajo WHERE nev IN (SELECT hajo FROM kimenetelek WHERE eredmeny = 'elsullyedt'); SELECT nev FROM hajo WHERE nev = ANY (SELECT hajo FROM kimenetelek WHERE eredmeny = 'elsullyedt'); A két lekérdezés ekvivalens egymással

Az EXISTS használata SELECT nev FROM hajo h WHERE EXISTS (SELECT * FROM kimenetelek WHERE hajo = h.nev); A hajó tábla minden sorára kiértékeljük a jobboldali lekérdezést, ahol az eredmény nem üres, a sor bekerül a végeredménybe.

Vegyük észre SELECT nev FROM hajok WHERE EXISTS (SELECT * FROM kimenetelek WHERE eredmeny = 'elsullyedt'); Mivel az alkérdésnek "semmi köze" a fő kérdéshez, az ilyen lekérdezések mindig vagy nem adnak vissza sort, vagy a teljes tábla lesz az eredmény.

Korrelált alkérdések Korrelált alkérdés esetén a fő kérdés egy táblájának legalább egy attribútuma összehasonlításra kerül az alkérdés egy táblájának attribútumával SELECT nev FROM hajo h WHERE EXISTS (SELECT * FROM kimenetelek WHERE hajo = h.nev); Az EXISTS használata esetén tehát mindig korrelált alkérdést kell használnunk

NOT EXISTS: példa Mit ad vissza az alábbi lekérdezés SELECT osztaly, agyukSzama FROM hajoosztalyok h1 WHERE NOT EXISTS (SELECT * FROM hajoosztalyok h2 WHERE h1.agyukSzama < h2.agyukSzama);

MINUS, NOT IN és NOT EXISTS SELECT nev FROM hajo MINUS SELECT hajo FROM kimenetelek; SELECT nev FROM hajo WHERE nev NOT IN (SELECT hajo FROM kimenetelek); SELECT nev FROM hajo WHERE NOT EXISTS (SELECT * FROM kimenetelek WHERE nev = hajo);

Feladatok I. 1.Melyek azok az amerikai hajók, amelyek részt vettek 1942 utáni csatában? (Használjatok IN-t.) 2.Mi azon hajó neve, amelyik ABC sorrendben a legutolsó? 3.Adjátok meg a 'H' betűvel kezdődő hajók közül az ABC sorrendben legelsőt. 4.Adjátok meg azon hajók nevét, amelyekhez létezik olyan másik hajó, melyet korábban avattak fel. 5.Adjátok meg azon hajók nevét, amelyekhez két olyan hajó is létezik, melyeket korábban avattak fel.

Feladatok II. 6.Melyik az a hajó, amelyet a második legkorábban avattak fel? 7.Melyek azok a csaták, amelyekben nem vett részt japán hajó? (Használjatok NOT IN-t!) 8.Melyek azok a nemzetek, amelyeknek egy hajója sem süllyedt el? (Használjatok NOT EXISTS-et!) 9.Mely nemzeteknek süllyedt el az összes hajója? 10.Kik szeretnek minden gyümölcsöt? 11.Kik szeretik legalább azokat a gyümölcsöket, mint Ferenc?