von Attila Mülhauser Vor 7 Jahren
424
Mehr dazu
A gondolattérkép az Adatbázisok tárgy 3. előadásához készült.
Az itt látható példák az előadáson látottak alapján lettek felépítve.
A csoportfüggvények több sor esetén is csak egy soros eredményt adnak.
Forrás: előadásdia
Maximum két szinten ágyazhatók egymásba.
Forrás: előadásdia
A csoportfüggvények a NULL-t figyelmen kívül hagyják, ez az NVL nevű függvény segítségével azonban elkerülhető.
Forrás: előadásdia
A DISTINCT használatakor az azonos nevű mezőket nem veszi figyelembe.
Forrás: előadásdia
Visszaadja a lekérdezés által kiválasztott sorok számát
Forrás: előadásdia
Legkisebb/legnagyobb mező értékét adja vissza.
Forrás: előadásdia
Paraméterben szereplő értékek összegét adja vissza.
Forrás: előadásdia
Paraméterbe írt mezők átlagát kapjuk vissza.
Forrás: előadásdia
Csoportfüggvényt nem használunk WHERE klauzulában, ezen cél érdekében a HAVING opciót alkalmazzuk.
Forrás: előadásdia
3 lépés kell, hogy végbe menjen ezen klauzula használata során:
Forrás: előadásdia
A GROUP BY segítségével tudjuk csoportosítani a táblánk sorait.
Forrás: előadásdia
Az előző kettő kombinációja.
Forrás: előadásdia
CREATE VIEW Újnézet AS SELECT...
Forrás: előadásdia
Egy lekérdezés eredményét tárolhatjuk el egy új táblában.
CREATE TABLE Újtábla AS ( SELECT ...)
Forrás: előadásdia
Forrás: előadásdia
Példa
Ebben a példában az első SELECT egy másik, a zárójelben lévő SELECT-ből szedi az adatait.
Forrás: előadásdia
A lekérdezések eredményei relációk mellett lehetnek értékek is
Forrás: előadásdia
Fastruktúrájú adatokat helyezhetünk el relációs táblákban, majd ezt a hierarchiát hierarchikus lekérdezésekkel tudjuk rekonstruálni.
Pl.: családfa, cég hiearchiája...
Forrás: előadásdia
A "START WITH Főkategória = Alap"--pal jelölöm ki a fa gyökérpontját
A "CONNECT BY Főkategória = PRIOR Alkategória" --pedig a bejárás irányát jelöli.
Forrás: előadásdia
Cross join
Forrás: előadásdia
A Descartes szorzatban az első táblánk sorait összeszorozzuk a második tábla soraival.
Forrás: http://www.w3resource.com/sql/joins/cross-join.php , előadásdia
Outer Join
Forrás: előadásdia
Valamely táblában való egyezés esetén visszaadja az összes sort.
Forrás: https://www.w3schools.com/sql/sql_join.asp
Megkapjuk a jobb tábla teljes tartalmát, majd a bal táblával egyező sorokat egyaránt.
Forrás: https://www.w3schools.com/sql/sql_join.asp
Megkapjuk a bal tábla teljes tartalmát, majd a jobb táblával egyező sorokat egyaránt.
Forrás: https://www.w3schools.com/sql/sql_join.asp
Non equi-join
Forrás: előadásdia
Ez a fajta összekapcsolás összehasonlító operátorokat használ a >, <, >=, <= jelek helyettesítésére.
Forrás: http://www.w3resource.com/sql/joins/perform-a-non-equi-join.php
Equi-Join
Forrás: előadásdia
Annyiban különbözik a Using klauzulától, hogy itt nem csak azonos nevű oszlopok segítségével tudjuk elvégezni az összevonást
Forrás: előadásdia
Itt meghatározzuk, hogy a két táblázatból külön-külön mely oszlopok szerint hasonlítsa össze.
Forrás: előadásdia
Ez annyiban különbözik a természetes összekapcsolástól, hogy a két táblán kívül az összekapcsolásra használt oszlopot is mi határozzuk meg.
Forrás: előadásdia
Az ON klauzula helyett használhatjuk
Forrás: előadásdia
A természetes összekapcsolásnál csupán a két, összekapcsolni kívánt tábla meghatározása szükséges, ebből az adatbáziskezelő megvizsgálja a táblákban lévő mezőket, majd ezek szerint végzi el az összekapcsolást.
http://www.w3resource.com/sql/joins/natural-join.php
Fontos, hogy az azonos nevű oszlopokban azonos formátumú adatok legyenek
ON klauzula NEM használható természetes összekapcsolásban
Forrás: előadásdia
Legfontosabb: A NULL nem egyenlő a zérussal!
Jelentése: Nem ismert/értelmezett/hiányzó adat
Forrás: előadásdia
Saját példa
SELECT * FROM Hallgatók WHERE Neptun = NULL
-Üres eredményhalmazt kapunk
SELECT * FROM Hallgatók WHERE Neptun IS NULL
-Ez már helyes, mert az ÉRTÉKE a nulla=semis
Nyelvtanilag (majdnem) helyes mondatokat alkotunk lekérdezéskor
Forrás: előadásdia
Az SQL alapvetően egy túlságosan sok mindent megengedő ANSI+ISO szabvány
Forrás: előadásdia