Upload
jeroen
View
59
Download
2
Embed Size (px)
DESCRIPTION
Delphi programozás alapjai. Nagyváradi Anett [email protected] http://morpheus.pte.hu/~anettn PTE PMMK MIT. 5. ELŐADÁS. Adatbázis kezelés Delphiben SQL lekérdezések. SQL. Structured Query Language – adatbázisok kezelésére szolgáló lekérdező nyelv Szabályok: - PowerPoint PPT Presentation
Citation preview
Delphi programozás Delphi programozás alapjaialapjai
Nagyváradi AnettNagyváradi [email protected]@morpheus.pte.hu
http://morpheus.pte.hu/~anettnhttp://morpheus.pte.hu/~anettn
PTE PMMK MITPTE PMMK MIT
5. ELŐADÁS5. ELŐADÁS
Adatbázis kezelés DelphibenAdatbázis kezelés Delphiben
SQL lekérdezésekSQL lekérdezések
SQLSQL
Structured Query LanguageStructured Query Language – – adatbázisok kezelésére szolgáló adatbázisok kezelésére szolgáló lekérdező nyelvlekérdező nyelv
Szabályok:Szabályok:Utasítások tetszés szerint tördelhetőkUtasítások tetszés szerint tördelhetőkUtasítások végét pontosvessző zárjaUtasítások végét pontosvessző zárjaKisbetű nagybetű használata egyaránt Kisbetű nagybetű használata egyaránt
lehetségeslehetségesListában lévő elemeket vesszővel választjuk elListában lévő elemeket vesszővel választjuk elEgymásba ágyazhatók az utasításokEgymásba ágyazhatók az utasítások
SQL műveletekSQL műveletek
Matematikai: +,-,*,/, **, ^Matematikai: +,-,*,/, **, ^
Stringműveletek: +,*,||,&Stringműveletek: +,*,||,&
Bináris műveletek: NOT,AND,ORBináris műveletek: NOT,AND,OR
Összehasonlítás: <,>,=,!=, <>,NOT=Összehasonlítás: <,>,=,!=, <>,NOT=
Predikátumok: IS,LIKE,BETWEEN…Predikátumok: IS,LIKE,BETWEEN…AND,IN,AND,IN,
CHECK,WHERE,HAVINGCHECK,WHERE,HAVING
SQL adatdefiníciós SQL adatdefiníciós utasításokutasítások
Az adatbázis szerkezetének Az adatbázis szerkezetének megváltoztatására: megváltoztatására:
CREATE CREATE - táblák létrehozása- táblák létrehozása
ALTER ALTER - táblák szerkezetének - táblák szerkezetének megváltoztatása megváltoztatása
DROP DROP - táblák törlése- táblák törlése
RENAME RENAME - táblák átnevezése- táblák átnevezése
TRUNCATE TRUNCATE - táblák csonkítása- táblák csonkítása
INSERT INSERT - új sorok beszúrása- új sorok beszúrása
DELETE DELETE -utasítás sort vagy sorokat töröl -utasítás sort vagy sorokat töröl
SQL adatkezelő SQL adatkezelő utasításokutasítások
Adatok olvasására az adatbázisból: Adatok olvasására az adatbázisból:
SELECT - adatlekérdezésSELECT - adatlekérdezés
INSERT - adat létrehozásaINSERT - adat létrehozása
UPDATE - adat változtatásaUPDATE - adat változtatása
DELETE - adat törléseDELETE - adat törlése
PéldákPéldák
INSERT INTO szemely VALUES (‘Szabolcs', INSERT INTO szemely VALUES (‘Szabolcs', ‘Miskolc‘, 20213456); ‘Miskolc‘, 20213456);
UPDATE szemely SET nev=‘Katalin' WHERE ID=5;UPDATE szemely SET nev=‘Katalin' WHERE ID=5;
DELETE FROM szemely WHERE ID=30DELETE FROM szemely WHERE ID=30;;
SzintaktikaSzintaktika
SELECT oszlop neve FROM tábla neve SELECT oszlop neve FROM tábla neve WHERE feltételek WHERE feltételek ORDER ORDER BY oszlop nevek;BY oszlop nevek;
FROM - azt a relációt adja meg, amelyre a FROM - azt a relációt adja meg, amelyre a lekérdezés vonatkozik lekérdezés vonatkozik
WHERE - feltétel, a logikai kifejezés igaz WHERE - feltétel, a logikai kifejezés igaz esetén, esetén, kiválasztja a rendszer a megfelelő kiválasztja a rendszer a megfelelő rekordokatrekordokat
SzintaktikaSzintaktika
BETWEEN...AND - operátor esetén a feltétel két BETWEEN...AND - operátor esetén a feltétel két határ által megadott intervallumban határ által megadott intervallumban találhatótalálható
SELECT * FROM tabla WHERE mez between 40 and 80;SELECT * FROM tabla WHERE mez between 40 and 80;
LIKE - operátor azt ellenőrzi, hogy az értékek LIKE - operátor azt ellenőrzi, hogy az értékek
megfelelnek-e a megadott karaktermintánakmegfelelnek-e a megadott karaktermintának
SELECT * FROM tabla WHERE nev LIKE ‘Kata'; SELECT * FROM tabla WHERE nev LIKE ‘Kata';
SzintaktikaSzintaktika
ORDER BY - utasításrész a SELECT utasítás ORDER BY - utasításrész a SELECT utasítás utolsó utolsó része, egy vagy több oszlop része, egy vagy több oszlop szerint rendezi szerint rendezi az eredménytáblát.az eredménytáblát.
SELECT * FROM szemely SELECT * FROM szemely
WHERE varos LIKE ‘Pécs' WHERE varos LIKE ‘Pécs'
ORDER BY nev;ORDER BY nev;
PéldákPéldák
SELECT tabla1.oszlop, tabla2.oszlop SELECT tabla1.oszlop, tabla2.oszlop FROM tabla1, tabla2 WHERE FROM tabla1, tabla2 WHERE tabla1.oszlop1=tabla2.oszlop2; tabla1.oszlop1=tabla2.oszlop2;
SELECT * FROM szemely; SELECT * FROM szemely;
SELECT nev,alkotascim,datumk,tema SELECT nev,alkotascim,datumk,tema FROM festmeny,festo WHERE FROM festmeny,festo WHERE festo.idf=festmeny.idffesto.idf=festmeny.idf and nev LIKE and nev LIKE 'Matisse%'; 'Matisse%';
PéldákPéldák
SELECT idk,festo.idf,nev,alkotascim SELECT idk,festo.idf,nev,alkotascim FROM festmeny,festo FROM festmeny,festo WHERE festmeny.idf=festo.idf and WHERE festmeny.idf=festo.idf and datumk<1900 and tema LIKE datumk<1900 and tema LIKE 'mitológikus kép' 'mitológikus kép'
ORDER BY 4;ORDER BY 4;
SELECT * FROM festmeny WHERE tema IN SELECT * FROM festmeny WHERE tema IN ('enteriőr','csendélet');('enteriőr','csendélet');
PéldákPéldák
SELECT COUNT (*) SELECT COUNT (*)
FROM festo FROM festo
WHERE nemzetiseg LIKE 'francia';WHERE nemzetiseg LIKE 'francia';
SELECT alkotascim, datumk AS SELECT alkotascim, datumk AS "készült",nev AS "festette" "készült",nev AS "festette"
FROM festmeny,festo FROM festmeny,festo
WHERE festo.idf=festmeny.idf and WHERE festo.idf=festmeny.idf and idk<20;idk<20;
PéldákPéldák
SELECT * FROM festmeny SELECT * FROM festmeny WHERE alkotascim ~ 'puszta';WHERE alkotascim ~ 'puszta';
Beágyazott lekérdezés:Beágyazott lekérdezés:
SELECT nev,alkotascim,datumk SELECT nev,alkotascim,datumk FROM festo,festmeny FROM festo,festmeny WHERE festo.idf=festmeny.idf and WHERE festo.idf=festmeny.idf and datumk=(selectdatumk=(select MIN(datumk) from MIN(datumk) from festmeny);festmeny);
SQL utasítások SQL utasítások DelphibenDelphiben
Delphi alkalmazásokban a Delphi alkalmazásokban a TQueryTQuery komponens segítségével futtathatunk komponens segítségével futtathatunk SQL utasításokatSQL utasításokat
Fajtái:Fajtái:DDL : Data Definition Language – DB DDL : Data Definition Language – DB
szerkezet szerkezet módosításamódosításaDML : Data Manipulation Language – DB DML : Data Manipulation Language – DB
adatainak adatainak kezelésekezeléseDCL : Data Control Language – egyéb DB DCL : Data Control Language – egyéb DB
kezelési kezelési feladatokfeladatok
Végrehajtásukat a BDE irányítjaVégrehajtásukat a BDE irányítja
TQuery komponensTQuery komponens
Tulajdonságai:Tulajdonságai:DataBaseName – adatbázis komponens vagy DataBaseName – adatbázis komponens vagy
álnéválnévDataSource – paraméteres lekérdezéseknél, DataSource – paraméteres lekérdezéseknél,
az az adatforrás, ahonnét a paraméterek az az adatforrás, ahonnét a paraméterek értéke szármatikértéke szármatik
SQL – maga a forrásSQL – maga a forrásActive – tervezési Active – tervezési
időben látható időben látható
eredményeredmény
TQuery komponens TQuery komponens használatahasználata
Helyezzünk el egy TQuery komponenst az Helyezzünk el egy TQuery komponenst az adatmodulonadatmodulon
DataBaseName tulajdonságát állítsuk be DataBaseName tulajdonságát állítsuk be Írjuk be az SQL utasítástÍrjuk be az SQL utasítást Ha az eredményék ki akarjuk iratni, akkor Ha az eredményék ki akarjuk iratni, akkor
irányítsunk rá egy DataSource irányítsunk rá egy DataSource komponenstkomponenst
Az adatmegjelenítési elemeket ehhez a Az adatmegjelenítési elemeket ehhez a DataSource-hoz kell majd kapcsolnunkDataSource-hoz kell majd kapcsolnunk
SQL megadása futási SQL megadása futási időbenidőben
Dinamikus lekérdezés is generálható úgy, hogy a Dinamikus lekérdezés is generálható úgy, hogy a felhasználói igények alapján felépített lekérdezést felhasználói igények alapján felépített lekérdezést képező SQL utasítást, képező SQL utasítást, string-kéntstring-ként a a TQueryTQuery
komponens komponens SQLSQL tulajdonságába tesszük. tulajdonságába tesszük.
Pl.:Pl.:
Query1.SQL.Clear;Query1.SQL.Clear; //kitörli a meglévő utasítást//kitörli a meglévő utasítást
Query1.SQL.Add(‘Select * from tabla’);Query1.SQL.Add(‘Select * from tabla’); //hozzáfűz//hozzáfűz
Query1.Open;Query1.Open; // megnyitja // megnyitja
SQL megadása futási SQL megadása futási időbenidőben
Ha a felhasználó által bevitt adatok alapján Ha a felhasználó által bevitt adatok alapján szeretnénk módosítani a lekérdezést:szeretnénk módosítani a lekérdezést:
procedureprocedure TForm1.Button1Click(Sender: TObject); TForm1.Button1Click(Sender: TObject);
varvar s:string; s:string;
beginbegin
s:= Edit1.Text;s:= Edit1.Text;
Query1.SQL.Clear; Query1.SQL.Clear;
Query1.SQL.Add(‘Select * from tabla where a=’’’+s+’’’;’); Query1.SQL.Add(‘Select * from tabla where a=’’’+s+’’’;’);
Query1.Open;Query1.Open;
endend;;
SQL megadása futási SQL megadása futási időbenidőben
Fájlból is betölthető a lekérdezés:Fájlból is betölthető a lekérdezés:
Pl.:Pl.:procedureprocedure TForm1.Button1Click(Sender: TObject); TForm1.Button1Click(Sender: TObject);
beginbegin
Query1.SQL.LoadFromFile(‘filenev.SQL’);Query1.SQL.LoadFromFile(‘filenev.SQL’);
Query1.SQL.Open;Query1.SQL.Open;
endend;;
Tábla tartalmának Tábla tartalmának végigjárásavégigjárása
DataModule.TáblaNév.DisableControls;DataModule.TáblaNév.DisableControls; //hozzáférés letiltás//hozzáférés letiltás
DataModule.TáblaNév.First;DataModule.TáblaNév.First; //első elemre ugrás//első elemre ugrás
While notWhile not DataModule.TáblaNév.Eof DataModule.TáblaNév.Eof do do
beginbegin
...... // utasítások megadása// utasítások megadása
DataModule.TáblaNév.Next;DataModule.TáblaNév.Next; //következő elemre ugrás//következő elemre ugrás
endend;;
DataModule.TáblaNév.EnableControls;DataModule.TáblaNév.EnableControls; //hozzáférés engedélyezés//hozzáférés engedélyezés
Táblához hozzáfűzés Táblához hozzáfűzés futási időbenfutási időben
DataModule.TáblaNév.Append;DataModule.TáblaNév.Append;
//hozzáfűzés kezdete//hozzáfűzés kezdete
DataModule.TáblaNév.FieldByName(‘mezőnév’).AsTípus:=...;DataModule.TáblaNév.FieldByName(‘mezőnév’).AsTípus:=...; //pl. feltételben az adott mező adott típusként //pl. feltételben az adott mező adott típusként
való vizsgálatavaló vizsgálata
DataModule.TáblaNév.FieldByName(‘mezőnév’).Value:=...;DataModule.TáblaNév.FieldByName(‘mezőnév’).Value:=...; //adott mező értéke szerint való vizsgálata//adott mező értéke szerint való vizsgálata
DataModule.TáblaNév.Post; DataModule.TáblaNév.Post;
//utasítás végrehajtás//utasítás végrehajtás
Link – SQL példákLink – SQL példák
http://hu.wikipedia.org/wiki/http://hu.wikipedia.org/wiki/SQL_programozási_nyelvSQL_programozási_nyelv