150 likes | 234 Views
Lekérdezések SQL-ben. Relációs algebra A SELECT utasítás Összesítés és csoportosítás Speciális feltételek. Relációs algebra. A relációs adatbázisokon végzett műveletek matematikai alapjai
E N D
Lekérdezések SQL-ben Relációs algebra A SELECT utasítás Összesítéséscsoportosítás Speciálisfeltételek
Relációs algebra • A relációsadatbázisokonvégzettműveletekmatematikaialapjai • Halmazműveletek: kompatibilistáblákközthajthatókvégre– a táblákazonosszámúoszlopbólkellálljanak, és a megfelelőattribútumokértéktartományaegyezzen • Metszet– a INTERSECT b • Unió– a UNION b • Különbség– a EXCEPT b, ahol a, b sorokhalmazai. UNION =
Descartes-szorzat • Azegyiktáblamindensorátpárosítjuk a másiktáblamindensorával X =
Projekció, szelekció • Projekció: adottoszlopokatkiválasztunk a táblából • Jelölése: πattribútumlista(tábla) • Például: πB1,B3(T1) =>
Projekció, Szelekció • Adottfeltételszerintisorokatválasztunkki a táblából • Jelölése: σfeltétel(tábla) • Például: σB2=‘a’(T1) =>
Természetesösszekapcsolás • Kéttáblaközt a külsőkulcsokrévénlényegébenegyezőattribútumokkalteremtünkkapcsolatot a relációsmodellben • Például: Dolgozó(szem.szám, név, osztálykód) ésOsztály(osztálykód, osztálynév) –hogyanandánk meg egydolgozónevéhez, hogy mi annakazosztálynak a neve, aholődolgozik? • A kéttáblatermészetesösszekapcsolásábólkiolvashatólesz a válasz: T = πA U B(σR1.X=R2.X(T1x T2) ) ahol T1 az R1(A), és T2 az R2(B) sémák feletti táblák.
Természetesösszekapcsolás • Természetesösszekapcsoláskortehát a kéttábla Descartes-szorzatábólmegtartjukazonsorokat, aholazösszekapcsolásalapjáulszolgálóattribútumokegyeznek, majd a duplánszereplőoszlopokatprojekcióval “egyszeresítjük”. • Jelölésben: T = T1 * T2
A Select utasításáltalánosalakja SELECT [DISTINCT] megjelenítendőoszlopok FROMtáblá(k direktszorzata) [WHEREfeltétel] [GROUPBYcsoportosításiszempont] [HAVINGcsoportokszűrése] [ORDERBYrendezésiszempont];
Példa Dolgozó(id, név, fizetés, lakcím, osztály) 200 000 Ft-náltöbbetkeresőklistájánakelőállítása: SELECT név FROMDolgozó WHEREfizetés > 200000; 100 és 200 közti id-jűdolgozóknevénekéslakcíménekmegjelenítése: SELECTnév, lakcím FROMDolgozó WHERE id BETWEEN 100 AND 200;
REndezés ORDER BY attribútumASC/DESC Dolgozókösszesadatánaklistázásaösszegszerintnövekvőlistában: SELECT * FROMDolgozóORDERBYfizetésASC;
Összesítés • Összesítésmenete: valamilyenösszesítőfüggvénytalkalmazunkegyadottattribútumra, ÉS azezenattribútumonkívüliösszesmegjelenítendőoszlopszerintcsoportosítani is szükséges (illetvea HAVING kulcsszóutánfeltételt is szabhatunk a csoportokra) • Dolgozókfizetésénekösszege: • SELECT SUM(fizetés) FROMDolgozó;
Összesítés • Számoskülönbözőösszesítőfüggvénylétezik: • AVG(…) – átlag • COUNT(…) – sorokszáma • MIN(…) – legkisebbérték • MAX(…) – legnagyobbérték • SUM(…) – összeg • Dolgozókfizetésátlagaazegyesosztályokon: SELECTosztály, AVG(fizetés) FROMDolgozó GROUPBYosztály;
KülönlegesFeltételek Néhányolyanlogikaikifejezés, amitaz SQL-ben használnilehet a korábbanismertetettekenkívül. • Attribútumnemdefiniáltságánakvizsgálata attribIS NULL • Attribútumadottintervallumbaesésénekvizsgálata attribBETWEEN a AND b –igaz, ha a <= attrib <= b • Attribútumadotthalmazbaesésénekvizsgálata attribINhalmaz–példáulszületésiVárosIN (‘Szeged’, ‘Baja’, ‘Pécs’)
Különlegesfeltételek • Halmaznemürességénekvizsgálata EXISTShalmaz–igazat ad, ha a halmaznemüres, pl. EXISTS (SELECTvárosNévFROM VárosWHERElakosság > 5000) • Szövegmintánakmegfeleltetése–attribLIKEfeltétel % - tetszőlegeshosszúszöveggelilleszkedik _ - pontosanegykarakterrelilleszkedik SELECTnév, fizetésFROMdolgozóWHEREnévLIKE ‘% András’;
Feladatok Ország(országKód, név, terület, lakosság, hivatalosNyelv, pénznem, gdp_fő, földrészKód) Földrész(földrészKód, név) 7.1 Hozzuklétre a fentitáblákat. 7.2 Szúrjuk be a Fantasia nevűországotfiktívadatokkal. 7.3 Hányország van a Földön? 7.4 Listázzukkiazösszesolyanországnevétterületszerintnövekvősorrendben, ahol a hivatalosazangol. 7.5 Listázzukkiazösszes, francianyelvenbeszélőország GDP-inekátlagátföldrészkódonkéntcsoportosítva. 7.6 Adjuk meg EurópaésÁzsialakosainakösszlétszámátkétmódon is. 7.7 Számoljukkiazegyesföldrész(kódok)hoztartozónépsűrűséget.