Adatbázis rendszerek I Kovács László Az SQL nyelv elemei
SQL jelentősége Az SQL ez egyik legfontosabb alaptechnológia az informatikában. Az SQL fejlődése során egyre több funkciót integrál magába, globális adatkezelés felé halad (Vikram Vaswani) A legkeresettebb ismeretek egyike az IT álláshirdetésekben az SQL,amely stabilan tartja magát (mellette a C++, Java, PHP, UNIX váltakoznak) (CWJobs.UK) Kb. évi 10%-os piacnövekedés az adatbáziskezelőknél, kb. 8 billió $ 2005-ben képek: wikipedia (Gartner Group) Számos feladat specifikus SQL DBMS létezik a piacon
SQL jelentősége Meg kell tanulni SQL-ben gondolkodni! Az alap építőelemekből a szükséges elemeket a helyes sorrendben kell bevonni. Csak biztos alapra szabad építeni, a rejtett hibák csak később derülnek ki. Látszólag működik a rendszer, … de nem mindig helyesen vagy nem hatékonyan !! „Aki nem mestere, az hóhéra” (Nagymamám) zsiráf-mozaikok
SQL használata A SELECT parancs szinte végtelen kombinációs, bővítési lehetőséggel rendelkezik SELECT mezőlista FROM tábla , (SELECT …) WHERE mezőfeltétel AND (SELECT …)-feltétel GROUP BY csoport-kif. HAVING csoportfeltétel AND (SELECT..) UNION | INTERSECT | … (SELECT …) A SELECT parancs több alakban is megjelenhet besimul a környezetébe SELECT … FROM … SELECT … INTO … FROM … CURSOR … AS SELECT … ide kaméleon
SQL használata Az SQL több, mint a SELECT parancs - view - domain - snapshot - trigger - job - tárolt eljárás - tárolt függvény - felhasználó - profile - role - schema - database link - replication - cluster - lock ... interaktív program CLI-SQL E-SQL SQL több ezer oldalas SQL referenciák PL-SQL T-SQL Oracle SQL referencia: www-db.iit.uni-miskolc.hu/…
SQL használata Az SQL szabvány és az egyes SQL implementációk szoros kölcsönhatásban állnak egymással - ismerni kell a szabványt - ismerni kell a konkrét SQL felületet FROM T1 OUTER JOIN T2 ON f FROM T1 = (+) T2 WHERE f egyedi objektumok egyedi operátorok egyedi függvények egyedi kapcsolók egyedi paraméterek egyedi adattípusok eltérő operátorok hiányzó operátorok … WHERE CTOD(‘2003.02.10’)… WHERE TO_DATE(‘2003.02.10’,…) WHERE CONVERT(‘2003.02.10’,…) WHERE {2003.02.0}… matyusa baba egymásba ágyazott ANSI SQL kompatibilitás
SQL használata Könyvekben és on-line módon számos SQL oktató forrás áll rendelkezésre Aki keres, az talál www.w3schools.com/sql www.1keydata.com/sql/ www.sqlcourse.com www.geocities.com/SiliconValley /Vista/2207/sql1.html www.firstsql.com/tutor.htm www.sql-tutorial.net select name, count(aid) from author, ( ( select author from wrote, book where publication=pubid ) union all ( select author from wrote, article where publication=pubid ) ) ba where aid=author11 group by name,aid
kép Mészöly Géza (1844-1887): Homokbánya (1872)
SQL SELECT funkciói Táblák összekapcsolása Algebrai jele: r1 r2 illetve r1 feltétel r2 SELECT mlista FROM r1, r2,.. WHERE feltétel; Ha a feltétel elmarad Descartes szorzatot kapunk Kettőnél több tábla is összekapcsolható
SQL SELECT funkciói Táblák összekapcsolása SELECT mlista FROM r1 INNER JOIN r2 ON feltétel …; Illesztési és normál feltételek szétválasztása Ha több táblában is azonos elnevezésű mező van, akkor a kibővitett mezőnevet használjuk: tábla.mező Ha hosszú a táblanév alias nevet használhatunk: tábla alias - Tábla szerepkört is alias névvel jelöljük DOLGOZO (kod PK, nev, beosztas, fonok REF DOLGOZO, fizetes) SELECT f.nev, d.nev FROM dolgozo f INNER JOIN dolgozo d ON f.kod = d.fonok WHERE d.beosztas = ‘raktáros’
SQL SELECT funkciói Az outer-join megadása Algebrai jele: r1 +feltétel + r2 SELECT mlista FROM r1 LEFT | RIGTH | FULL OUTER JOIN r2 ON feltétel WHERE felt …; SELECT * FROM AUTO A RIGHT OUTER JOIN EMBER E ON A.TULAJ = E.IGSZ WHERE A.AR > 6000000; T1 +T1.A = T2.A T2 T1 T2 A B A C A B A C 1 C 3 L 1 C 1 T 2 G 1 T 2 G 3 U 5 P 3 U 3 L
SQL SELECT funkciói Az aggregáció megadása Algebrai jele: aggregációs-lista (r) SELECT aggregációs-lista FROM r; SUM(mez.kif) AVG(mez.kif) COUNT(mez.kif) MAX(mez.kif) MIN(mez.kif) SELECT COUNT(*) FROM AUTO;
SQL SELECT funkciói Az aggregáció és csoportképzés megadása Algebrai jele: csopképkifaggregációs-lista (r) SELECT aggregációs-lista FROM r GROUP BY csopképkif; SELECT TIPUS, AVG(AR) FROM AUTO GROUP BY TIPUS;
SQL SELECT funkciói Szűrés az elkészült csoportokból Algebrai jele: feltétel(cskifagg-lista (r)) SELECT agg-lista FROM tábla GROUP BY cskif HAVING feltétel; SELECT TIPUS FROM AUTO GROUP BY TIPUS HAVING AVG(AR) > 10000000; A csoportképzés előtti és utáni szelekció együttesen is szerepelhet: SELECT TIPUS FROM AUTO WHERE SZIN=”PIROS” GROUP BY TIPUS HAVING AVG(AR) > 10000000; WHERE HAVING
SQL SELECT funkciói Az eredmény rekordok rendezése SELECT mlista FROM tábla ORDER BY mezo1 mod1, mezo2 ...; ASC DESC Nem része a relációs algebrának A második mező szerinti szempont csak az első egyezősége esetén lényeges SELECT RSZ, TIPUS, AR FROM AUTO ORDER BY AR DESC, TIPUS; Lehet sorszámmal is hivatkozni a mezőkre SELECT RSZ, TIPUS, AR FROM AUTO ORDER BY 3 DESC, 2;
SQL SELECT funkciói Táblák halmaz műveletei Algebrai jele: r1 r2 , r1 r2 , r1 \ r2 SELECT … FROM r1 … UNION SELECT … FROM r2 …; SELECT … FROM r1 … UNION ALL SELECT … FROM r2 …; SELECT … FROM r1 … INTERSECT SELECT … FROM r2 …; SELECT … FROM r1 … MINUS SELECT … FROM r2 …; csak kompatíbilis szerkezetű táblák vonhatók össze a rendezés csak a legvégén szerepelhet egyszer SELECT nev FROM OKTATOK WHERE varos = ‘EGER’ UNION ALL SELECT nev FROM HALLGATOK WHERE varos = ‘EGER’ ORDER BY 1;
SQL SELECT funkciói Al-SELECT használata A szelekciós feltételben számított érték is szerepelhet A számított értéket az előállító SELECT paranccsal adjuk meg SELECT … FROM … WHERE … (SELECT …) GROUP BY … HAVING (SELECT…) A SELECT kifejezések többszörösen egymásba ágyazhatók SELECT nev FROM DOLGOZOK WHERE fizetes > (SELECT AVG(fiz) FROM DOLGOZOK);
SQL SELECT funkciói Speciális szelekciós operátorok kif LIKE minta sztring illeszkedése egy mintára (%,_) kif IS [NOT] NULL üres-e a kifejezés kif BETWEEN kif2 AND kif3 köztes érték vizsgálat EXISTS (al_SELECT) eredménytábla létezése kif IN lista | (al_SELECT) tartalmazás kif op ALL lista | (al_SELECT) minden kvantor kif op ANY lista | (al_SELECT) létezés kvantor
SQL VIEW objektum Származtatott táblák haszna: - parancs egyszerűsítés - egyszerűbb végrehajtás - védelemv CREATE VIEW vnév (mnév1, …) AS SELECT … ; CREATE VIEW BETEGSZAB AS SELECT nev, beosztas, reszleg FROM dolgozok WHERE status = 2; Csak az előállító SQL parancs tárolódik, az adattábla nem Hivatkozáskor áll elő a tartalom - aktuális - lassú lehet
kép Mészöly Géza: Balatoni halásztanya (1877)
A relációs adatmodell Egyedi elemek - VIEW a kétszeres aggregációban - DISTINCT - UNION ALL - self-join - CROSS JOIN - INNER JOIN - NATURAL JOIN .. USING - több táblás join - SNAPSHOT
kép Mészöly Géza: Chioggia (1883)