Az SQL nyelv alapjai
Jan 13, 2016
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ő 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:1. BETWEEN x AND y
A BETWEEN kifejezésben keresett értéknek x és y értékek közé kell esnie
2. IN (a,b,c..) a zárójelben egy halmazt adunk meg, a keresett kifejezés e halmaz eleme kell legyen.)
3. 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étel
SELECT 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é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ú karaktersorozatVARCHAR(n) legfeljebb n hosszúságú karaktersorozatINTEGER egész szám (röviden INT)REAL valós (lebegőpontos) szám, másnéven FLOATDECIMAL(n[,d]) n jegyű decimális szám, ebből d tizedesjegyDATE 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ábaINSERT 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éketAz ú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ése
ALTER 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évON 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ágON táblanév FROM felhasználó
REVOKE delete ON tanuloFROM tanulok