Az SQL nyelv alapjai
Az SQL nyelv jellemzői Az SQL a Structured Query Language (Struktúrált Lekérdező Nyelv) rövidítése, amely adatbázis-kezelő rendszerek szabványos lekérdező nyelve. Nem algoritmikus nyelv, nem tartalmaz elágazást, ciklust,nem alkalmas rekurzív feladatok végrehajtására. Halmazorientált nyelv, melynek műveletei egy adatbázis különböző objektumain hajthatók végre.
Az SQL nyelv jellemzői Az SQL egy beépülő nyelv, mely más programozási nyelvekkel együtt, abba beépülve használható. (pl.:a felhasználói felület DELPHI, lekérdezés SQL) Az SQL nyelvben minden parancs egy kulcsszóval kezdődik, és pontosvesszővel fejeződik be. A parancsok egymásba ágyazhatók.
Az SQL nyelv alkotóelemei Adatlekérdező nyelv az adatbázisból lekérdezés útján történő információnyerés Adatdefiníciós nyelv adatbázisok és adattáblák létrehozása, törlése, szerkesztése, módosítása Adatmanipulációs nyelv az adattáblák karbantartása Adatvezérlő nyelv jogosultságok és tranzakciók kezelése
Lekérdező utasítások Cél: az adatbázisból történő információnyerés Az utasítás általános szerkezete: SELECT (attribútumok) FROM (táblanév) WHERE(feltétel)
Lekérdező utasítások A lekérdező utasítás teljes felépítése: SELECT [DISTINCT|ALL] *|attr1,attr2,… FROM tábla1,[INNER JOIN|LEFT JOIN|RIGHT JOIN tábla3 ON feltétel] [WHERE feltétel] [GROUP BY oszlopnév1, oszlopnév2,…] [HAVIG feltétel] [ORDER BY oszlopnév1 | oszlopszám1, …..][ASC|DESC]
Lekérdező utasítások Egy tábla összes rekordjának megjelenítése: SELECT * FROM táblanév; (A * helyettesíthető a mezőnevek felsorolásával és viszont) Azonos rekordok ismétlésének kihagyása: SELECT DISTINCT* FROM táblanév;
Lekérdező utasítások Projekció (vetítés) Az eredmény táblában csak a felsorolt mezők adatait jeleníti meg. SELECT [DISTINCT] attrib1,attrib2 FROM táblanév; SELECT DISTINCT nev,evfolyam,osztaly FROM tanulo;
Lekérdező utasítások Kiterjesztés A lekérdezésben szereplő mezők felhasználásával újabb mezőket hozunk létre. SELECT nev,pontszam1+pontszam2 FROM tanulo;
Lekérdező utasítások Szelekció (Adott feltételnek megfelelő adatok megjelenítése, melyet a WHERE záradék után adunk meg) SELECT atributum1,attributum2,…. FROM táblanév WHERE feltétel; SELECT * FROM tanulo WHERE (evfolyam=’’12’’) AND (osztaly=‘’B’’)
Lekérdező utasítások Összehasonlító operátorok: BETWEEN x AND y A BETWEEN kifejezésben keresett értéknek x és y értékek közé kell esnie IN (a,b,c..) a zárójelben egy halmazt adunk meg, a keresett kifejezés e halmaz eleme kell legyen.) LIKE karakteres mezők összehasonlítására használható. A mintában a *,%,_? helyettesítő karakterek használhatók. SELECT *FROM tanulo WHERE nev LIKE ‘’S%’’;
Lekérdező utasítások Descartes-szorzat A relációk közötti szorzás műveletet valósítja meg, tehát a lehetséges variációkat állítja elő. SELECT tablanev1.mezők,tablanev2.mezők FROM tablanev1,tablanev2; SELECT tanulo.*,tantargy.* FROM tanulo, tantargy;
Lekérdező utasítások Összekapcsolás: Több adattáblán elhelyezkedő információk egy táblára gyűjtésére használható. Belső összekapcsolás: SELECT tanulo.*, tantargy.* FROM tanulo INNER JOIN tantargy ON ( tanulo.tantargykod = tantargy.tantargykod); (csak mindkét táblában szereplő mezőadatok esetén) Külső összekapcsolás: SELECT tanulo.*, tantargy.* FROM tanulo LEFT (RIGHT) JOIN tantargy ON ( tanulo.tantargykod = tantargy.tantargykod); (a tanuló tábla összes rekordja akkor is, ha nincs megfelelő a tantargy táblában)
Lekérdező utasítások Csoportosítás A rekordokat egy adott mező értékei szerint csoportokra bontjuk. (Legtöbbször az adott mező azonos értékei alapján, pl. evfolyam=‘’12’’, osztaly=’’B’’) Ezután a csoportokon műveleteket hajthatunk végre, az eredményt újabb mezőben tárolhatjuk. SELECT attribútum1, attribútum2 [SUM,MAX,MIN,COUNT,AVG](attribútum3) FROM táblanév GROUP BY attrib4,attrib5; SELECT evfolyam,osztaly,COUNT(tanulokod) AS‘’letszam’’ FROM tanulo GROUP BY evfolyam, osztaly;
Lekérdező utasítások A csoportosítás esetén használható függvények: COUNT megadja a tábla sorainak számát SUM megadja a paraméterben szereplő oszlop adatainak összegét AVG megadja a paraméterben szereplő oszlop adatainak átlagát MIN megadja a paraméterben szereplő numerikus adatok közül a legkisebbet MAX megadja a paraméterben szereplő numerikus adatok közül a legnagyobbat
Lekérdező utasítások Lekérdezés csoportosítással létrejött táblában (csoportfeltételek megadása) WHERE helyett HAVING SELECT attribútum1, attribútum2 [SUM,MAX,MIN,COUNT,AVG](attribútum3) FROM táblanév GROUP BY attrib4,attrib5; HAVING csoportfeltétel SELECT evfolyam,osztaly,COUNT(tanulokod) AS‘’letszam’’ FROM tanulo GROUP BY evfolyam, osztaly; HAVING COUNT(tanulokod)>20;
Lekérdező utasítások Rendezés A lekérdezés eredmény relációjának rendezésére ORDER BY záradékkal SELECT attribútum1, attribútum2 FROM reláció ORDER BY attribútum1[ASC,DESC], attribútum2[ASC,DESC]; SELECT * FROM tanulo ORDER BY nev desc;
Adattípusok Az adattípusok (rendszerenként eltérők lehetnek): CHAR(n) n hosszúságú karaktersorozat VARCHAR(n) legfeljebb n hosszúságú karaktersorozat INTEGER egész szám (röviden INT) REAL valós (lebegőpontos) szám, másnéven FLOAT DECIMAL(n[,d]) n jegyű decimális szám, ebből d tizedesjegy DATE dátum (év, hó, nap) TIME idő (óra, perc, másodperc) Az adattípushoz "DEFAULT érték" megadásával alapértelmezett érték definiálható. Ha ilyet nem adunk meg, az alapértelmezett érték NULL.
Adatmanipulációs nyelv Az adattáblák karbantartásának műveletei: Új rekord beszúrása a táblába INSERT INTO táblanév(attribútumlista) VALUES(értéklista INSERT INTO tanulo (kod,nev,evf,oszt) VALUES(009,”Nagy János”,”12”,”b”); Használhatjuk a NULL értéket Az új rekord az utolsó után tárolódik
Adatmanipulációs nyelv Módosítás A tábla meghatározott mezőinek módosítása: UPDATE táblanév SET (attr1=adat1,attr2=adat2) [WHERE feltétel] UPDATE dolgozo SET fizet=1.1*fizet WHERE fizet<10000;
Adatmanipulációs nyelv Törlés Törli a tábla feltételnek megfelelő sorait (feltétel megadása nélkül mindent) DELETE FROM táblanév [WHERE feltétel] DELETE FROM tanulo WHERE evfolyam=‘’12’’;
Adatdefiníciós nyelv Adatdefiníciós műveletek: Adatbázisok létrehozása Adattáblák létrehozása, módosítása, törlése Lekérdezésekben létrejövő táblák készítése, törlése Indexállományok kezelése
Adatdefiníciós nyelv Adatbázis létrehozása: CREATE DATABASE (adatbázis neve); CREATE DATABASE termekek;
Adatdefiníciós nyelv Adattábla létrehozása CREATE TABLE táblanév (attribnev1 adattip1 (méret1) [NOT NULL] (attribnev2 adattip2 (méret2) [NOT NULL]; CREATE TABLE tanulo (kod INTEGER,nev CHAR(16),evf(CHAR3), oszt(1),pont(INTEGER));
Adatdefiníciós nyelv Adattábla törlése DROP TABLE (táblanév); DROP TABLE tanulo;
Adatdefiníciós nyelv Adattábla szerkezetének módosítása Attribútum hozzáadása: ALTER TABLE táblanév ADD (attrib1 adattip1 (méret1)…. ALTER TABLE dolgozo ADD fizetes INTEGER;
Adatdefiníciós nyelv Meglévő attribútum törlése ALTER TABLE (táblanév) DROP (oszlopnév); ALTER TABLE tanulo DROP szemelyiszam;
Adatdefiníciós nyelv Attribútum módosítása: ALTER TABLE táblanév MODIFY (attrib1 újadattipus1(újméret1)… ALTER TABLE tanulo MODIFY osztondij number(7); Az attribútumok módosítása sok hibát okozhat, nagy figyelem szükséges!!!!!!!
Adatdefiníciós nyelv Indexelés CREATE [UNIQUE] INDEX indexnév A lekérdezések végrehajtásának ideje csökkenthető Mezőadatok ismétlődése ellenőrizhető CREATE [UNIQUE] INDEX indexnév ON táblanév (attrib1,attrib2….); CREATE INDEX ind_tanulonev ON tanulo (nev);
Adatvezérlő nyelv Felhaszálói jogosultságok megadása: GRANT jogosultság ON tánlanév TO felhasználó [WITH GRANT OPTION] Jogosultságok: ALL, SELECT, INSERT, UPDATE(attrib), DELETE, ALTER, INDEX, WITH GRANT OPTION (a jogok továbbadhatók)
Adatvezérlő nyelv Jogosultságok visszavonása REVOKE jogosultság ON táblanév FROM felhasználó REVOKE delete ON tanulo FROM tanulok