Adatbázis kezelés Delphiben. SQL lekérdezések Structured Query Language – adatbázisok kezelésére szolgáló lekérdező nyelv Szabályok:
Utasítások tetszés szerint tördelhetők Utasítások végét pontosvessző zárja Kisbetű nagybetű használata egyaránt lehetséges Listában lévő elemeket vesszővel választjuk el Egymásba ágyazhatók az utasítások
SQL műveletek Matematikai: +, -, *, /, **, ^ Stringműveletek: +, *, ||, & Bináris műveletek: NOT, AND, OR Összehasonlítás: <, >, =, !=, <>, NOT= Predikátumok: IS, LIKE, BETWEEN…AND, IN, CHECK, WHERE, HAVING
SQL adatdefiníciós utasítások Az adatbázis szerkezetének megváltoztatására: CREATE - táblák létrehozása ALTER - táblák szerkezetének megváltoztatása DROP - táblák törlése RENAME - táblák átnevezése TRUNCATE - táblák csonkítása INSERT - új sorok beszúrása DELETE - utasítás sort vagy sorokat töröl
SQL adatkezelő utasítások Adatok olvasására az adatbázisból: SELECT INSERT UPDATE DELETE
-
adatlekérdezés adat létrehozása adat változtatása adat törlése
Példák INSERT INTO szemely VALUES (‘Szabolcs', ‘Miskolc‘, 20213456); UPDATE szemely SET nev=‘Katalin' WHERE ID=5; DELETE FROM szemely WHERE ID=30;
Szintaktika SELECT <mező_neve> FROM
WHERE ORDER BY <mező_nevek>; FROM - azt a relációt adja meg, amelyre a lekérdezés vonatkozik WHERE - feltétel, a logikai kifejezés igaz esetén, kiválasztja a rendszer a megfelelő rekordokat
Szintaktika BETWEEN...AND - operátor esetén a feltétel két határ által megadott intervallumban található. Pl.: SELECT * FROM tabla WHERE mez between 40 and 80;
LIKE - operátor azt ellenőrzi, hogy az értékek megadott karaktermintának. Pl.:
megfelelnek-e a
SELECT * FROM tabla WHERE nev LIKE ‘Kata';
Szintaktika ORDER BY - utasításrész a SELECT utasítás utolsó része, egy vagy több oszlop szerint rendezi az eredménytáblát.
SELECT * FROM szemely WHERE varos LIKE ‘Pécs' ORDER BY nev;
Példák SELECT tabla1.oszlop, tabla2.oszlop FROM tabla1, tabla2 WHERE tabla1.oszlop1=tabla2.oszlop2; SELECT * FROM szemely;
SELECT nev,alkotascim,datumk,tema FROM festmeny,festo WHERE festo.idf=festmeny.idf and nev LIKE 'Matisse%';
Példák SELECT idk,festo.idf,nev,alkotascim FROM festmeny,festo WHERE festmeny.idf=festo.idf and datumk<1900 and tema LIKE 'mitológikus kép' ORDER BY 4; SELECT * FROM festmeny WHERE tema IN ('enteriőr','csendélet');
Példák SELECT COUNT (*) FROM festo WHERE nemzetiseg LIKE
'francia';
SELECT alkotascim, datumk AS "készült",nev AS "festette" FROM festmeny,festo WHERE festo.idf=festmeny.idf and idk<20;
Példák SELECT * FROM festmeny WHERE alkotascim ~ 'puszta';
Beágyazott lekérdezés: SELECT nev,alkotascim,datumk FROM festo,festmeny WHERE festo.idf=festmeny.idf and datumk=(select MIN(datumk) from festmeny);
SQL utasítások Delphiben Delphi alkalmazásokban a TQuery komponens segítségével futtathatunk SQL utasításokat Fajtái: DDL : Data Definition Language – DB szerkezet módosítása DML : Data Manipulation Language – DB adatainak kezelése DCL : Data Control Language – egyéb DB kezelési feladatok
Végrehajtásukat a BDE irányítja
TQuery komponens Tulajdonságai: DataBaseName – adatbázis komponens vagy álnév DataSource –az adatforrás SQL – maga a forrás Active – tervezési időben látható eredmény
TQuery komponens használata Helyezzünk el egy TQuery komponenst az adatmodulon DataBaseName tulajdonságát állítsuk be Írjuk be az SQL utasítást Ha az eredményék ki akarjuk iratni, akkor irányítsunk rá egy DataSource komponenst Az adatmegjelenítési elemeket ehhez a DataSource-hoz kell majd kapcsolnunk
SQL megadása futási időben Dinamikus lekérdezés is generálható úgy, hogy a felhasználói igények alapján felépített lekérdezést képező SQL utasítást, string-ként a TQuery komponens SQL tulajdonságába tesszük. Pl.: Query1.SQL.Clear; //kitörli a meglévő utasítást
Query1.SQL.Add(‘Select * from tabla’); //hozzáfűz Query1.Open; // megnyitja
SQL megadása futási időben Ha a felhasználó által bevitt adatok alapján szeretnénk módosítani a lekérdezést: procedure TForm1.Button1Click(Sender: TObject); var s:string; begin s:= Edit1.Text; Query1.SQL.Clear; Query1.SQL.Add(‘Select * from tabla where a=’’’+s+’’’;’); Query1.Open; end;
SQL megadása futási időben Fájlból is betölthető a lekérdezés: Pl.: procedure TForm1.Button1Click(Sender: TObject); begin Query1.SQL.LoadFromFile(‘filenev.SQL’); Query1.SQL.Open; end;
Tábla tartalmának végigjárása DataModule.TáblaNév.DisableControls; //hozzáférés letiltás //kikapcsolja vizuális komponensek frissítését run-timeban
DataModule.TáblaNév.First;
//első elemre ugrás
While not DataModule.TáblaNév.Eof do begin ... // utasítások megadása DataModule.TáblaNév.Next; //következő elemre ugrás end; DataModule.TáblaNév.EnableControls; //hozzáférés engedélyezés
Táblához hozzáfűzés futási időben DataModule.TáblaNév.Append; //hozzáfűzés kezdete DataModule.TáblaNév.FieldByName(‘mezőnév’).AsTípus:=...; //pl. feltételben az adott mező adott típusként való vizsgálata
DataModule.TáblaNév.FieldByName(‘mezőnév’).Value:=...; //adott mező értéke szerint való vizsgálata DataModule.TáblaNév.Post; //utasítás végrehajtás
Link – SQL példák http://hu.wikipedia.org/wiki/SQL_programozási_nyelv