340 likes | 591 Views
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.
E N D
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ő nyelvaz adatbázisból lekérdezés útján történőinformációnyerés • Adatdefiníciós nyelvadatbá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,osztalyFROM 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 tanuloWHERE (evfolyam=’’12’’) AND (osztaly=‘’B’’)
Lekérdező utasítások Összehasonlító operátorok: • BETWEEN x AND yA 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-szorzatA 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őkFROM 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 tantargyON ( 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 tantargyON ( 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ásA 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ételSELECT evfolyam,osztaly,COUNT(tanulokod) AS‘’letszam’’ FROM tanulo GROUP BY evfolyam, osztaly; HAVING COUNT(tanulokod)>20;
Lekérdező utasítások • RendezésA lekérdezés eredmény relációjának rendezésére ORDER BY záradékkalSELECT 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éklistaINSERT 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ásA 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*fizetWHERE fizet<10000;
Adatmanipulációs nyelv • TörlésTö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ásaCREATE 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éseDROP 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évADD (attrib1 adattip1 (méret1)….ALTER TABLE dolgozo ADD fizetes INTEGER;
Adatdefiníciós nyelv • Meglévő attribútum törléseALTER TABLE (táblanév)DROP (oszlopnév);ALTER TABLE tanuloDROP szemelyiszam;
Adatdefiníciós nyelv • Attribútum módosítása:ALTER TABLE táblanévMODIFY (attrib1 újadattipus1(újméret1)…ALTER TABLE tanuloMODIFY 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 • 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ásaREVOKE jogosultságON táblanév FROM felhasználóREVOKE delete ON tanuloFROM tanulok