adatbázis kezelés delphiben. sql lekérdezésekzeus.nyf.hu/~bajalinov/lev_visual/03/delphi...

21
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

Upload: truongmien

Post on 22-Mar-2019

240 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Adatbázis kezelés Delphiben. SQL lekérdezésekzeus.nyf.hu/~bajalinov/Lev_Visual/03/Delphi SQL.pdf · Adatbázis kezelés Delphiben. SQL lekérdezések StructuredQueryLanguage–adatbázisok

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

Page 2: Adatbázis kezelés Delphiben. SQL lekérdezésekzeus.nyf.hu/~bajalinov/Lev_Visual/03/Delphi SQL.pdf · Adatbázis kezelés Delphiben. SQL lekérdezések StructuredQueryLanguage–adatbázisok

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

Page 3: Adatbázis kezelés Delphiben. SQL lekérdezésekzeus.nyf.hu/~bajalinov/Lev_Visual/03/Delphi SQL.pdf · Adatbázis kezelés Delphiben. SQL lekérdezések StructuredQueryLanguage–adatbázisok

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

Page 4: Adatbázis kezelés Delphiben. SQL lekérdezésekzeus.nyf.hu/~bajalinov/Lev_Visual/03/Delphi SQL.pdf · Adatbázis kezelés Delphiben. SQL lekérdezések StructuredQueryLanguage–adatbázisok

SQL adatkezelő utasítások

Adatok olvasására az adatbázisból:

SELECT - adatlekérdezés

INSERT - adat létrehozása

UPDATE - adat változtatása

DELETE - adat törlése

Page 5: Adatbázis kezelés Delphiben. SQL lekérdezésekzeus.nyf.hu/~bajalinov/Lev_Visual/03/Delphi SQL.pdf · Adatbázis kezelés Delphiben. SQL lekérdezések StructuredQueryLanguage–adatbázisok

Példák

INSERT INTO szemely VALUES (‘Szabolcs',

‘Miskolc‘, 20213456);

UPDATE szemely SET nev=‘Katalin' WHERE ID=5;

DELETE FROM szemely WHERE ID=30;

Page 6: Adatbázis kezelés Delphiben. SQL lekérdezésekzeus.nyf.hu/~bajalinov/Lev_Visual/03/Delphi SQL.pdf · Adatbázis kezelés Delphiben. SQL lekérdezések StructuredQueryLanguage–adatbázisok

Szintaktika

SELECT <mező_neve> FROM <tábla_neve>

WHERE <feltételek>

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

Page 7: Adatbázis kezelés Delphiben. SQL lekérdezésekzeus.nyf.hu/~bajalinov/Lev_Visual/03/Delphi SQL.pdf · Adatbázis kezelés Delphiben. SQL lekérdezések StructuredQueryLanguage–adatbázisok

SzintaktikaBETWEEN...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 megfelelnek-e a megadott karaktermintának. Pl.:

SELECT * FROM tabla WHERE nev LIKE ‘Kata';

Page 8: Adatbázis kezelés Delphiben. SQL lekérdezésekzeus.nyf.hu/~bajalinov/Lev_Visual/03/Delphi SQL.pdf · Adatbázis kezelés Delphiben. SQL lekérdezések StructuredQueryLanguage–adatbázisok

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;

Page 9: Adatbázis kezelés Delphiben. SQL lekérdezésekzeus.nyf.hu/~bajalinov/Lev_Visual/03/Delphi SQL.pdf · Adatbázis kezelés Delphiben. SQL lekérdezések StructuredQueryLanguage–adatbázisok

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%';

Page 10: Adatbázis kezelés Delphiben. SQL lekérdezésekzeus.nyf.hu/~bajalinov/Lev_Visual/03/Delphi SQL.pdf · Adatbázis kezelés Delphiben. SQL lekérdezések StructuredQueryLanguage–adatbázisok

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');

Page 11: Adatbázis kezelés Delphiben. SQL lekérdezésekzeus.nyf.hu/~bajalinov/Lev_Visual/03/Delphi SQL.pdf · Adatbázis kezelés Delphiben. SQL lekérdezések StructuredQueryLanguage–adatbázisok

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;

Page 12: Adatbázis kezelés Delphiben. SQL lekérdezésekzeus.nyf.hu/~bajalinov/Lev_Visual/03/Delphi SQL.pdf · Adatbázis kezelés Delphiben. SQL lekérdezések StructuredQueryLanguage–adatbázisok

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);

Page 13: Adatbázis kezelés Delphiben. SQL lekérdezésekzeus.nyf.hu/~bajalinov/Lev_Visual/03/Delphi SQL.pdf · Adatbázis kezelés Delphiben. SQL lekérdezések StructuredQueryLanguage–adatbázisok

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

Page 14: Adatbázis kezelés Delphiben. SQL lekérdezésekzeus.nyf.hu/~bajalinov/Lev_Visual/03/Delphi SQL.pdf · Adatbázis kezelés Delphiben. SQL lekérdezések StructuredQueryLanguage–adatbázisok

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

Page 15: Adatbázis kezelés Delphiben. SQL lekérdezésekzeus.nyf.hu/~bajalinov/Lev_Visual/03/Delphi SQL.pdf · Adatbázis kezelés Delphiben. SQL lekérdezések StructuredQueryLanguage–adatbázisok

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

Page 16: Adatbázis kezelés Delphiben. SQL lekérdezésekzeus.nyf.hu/~bajalinov/Lev_Visual/03/Delphi SQL.pdf · Adatbázis kezelés Delphiben. SQL lekérdezések StructuredQueryLanguage–adatbázisok

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

Page 17: Adatbázis kezelés Delphiben. SQL lekérdezésekzeus.nyf.hu/~bajalinov/Lev_Visual/03/Delphi SQL.pdf · Adatbázis kezelés Delphiben. SQL lekérdezések StructuredQueryLanguage–adatbázisok

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;

Page 18: Adatbázis kezelés Delphiben. SQL lekérdezésekzeus.nyf.hu/~bajalinov/Lev_Visual/03/Delphi SQL.pdf · Adatbázis kezelés Delphiben. SQL lekérdezések StructuredQueryLanguage–adatbázisok

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;

Page 19: Adatbázis kezelés Delphiben. SQL lekérdezésekzeus.nyf.hu/~bajalinov/Lev_Visual/03/Delphi SQL.pdf · Adatbázis kezelés Delphiben. SQL lekérdezések StructuredQueryLanguage–adatbázisok

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

Page 20: Adatbázis kezelés Delphiben. SQL lekérdezésekzeus.nyf.hu/~bajalinov/Lev_Visual/03/Delphi SQL.pdf · Adatbázis kezelés Delphiben. SQL lekérdezések StructuredQueryLanguage–adatbázisok

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

Page 21: Adatbázis kezelés Delphiben. SQL lekérdezésekzeus.nyf.hu/~bajalinov/Lev_Visual/03/Delphi SQL.pdf · Adatbázis kezelés Delphiben. SQL lekérdezések StructuredQueryLanguage–adatbázisok

Link – SQL példák

http://hu.wikipedia.org/wiki/SQL_programozási_nyelv