SQL (Structured Query Language) on standardoitu kieli tietojen määrittelemiseksi ja käsittelemiseksi relaatiotietokannassa. Tietojen relaatiomallin mukaisesti tietokanta koetaan taulukkojoukkona, suhteet ovat esitetään taulukoissa olevilla arvoilla, ja data haetaan määrittelemällä tulostaulukko, joka voidaan johtaa yhdestä tai useammasta pohjapöydät. Kyselyt ovat komentokielen muodossa, jonka avulla voit valitse, lisää, päivitä, löydä ulos datan sijainnista ja niin edelleen.
Delphissä: TQuery
Jos aiot käyttää SQL-sovelluksia sovelluksissasi, tulet erittäin tutuksi TQuery komponentti. Delphi antaa sovelluksille mahdollisuuden käyttää SQL-syntaksia suoraan TQuery-komponentin kautta pääsyyn tietoihin Paradox- ja dBase-taulukoista (käyttäen paikallista SQL - ANSI-standardin SQL-osajoukko), paikallisen InterBase-palvelimen tietokannat ja etätietokannan tietokannat palvelimia.
Delphi tukee myös heterogeenisiä kyselyjä useampaa kuin yhtä palvelin- tai taulukotyyppiä vastaan (esimerkiksi tiedot Oracle-taulukosta ja Paradox-taulukosta) .TQueryllä on ominaisuus nimeltään
TQuery kapseloi yhden tai useamman SQL-käskyn, suorittaa ne ja tarjoaa menetelmiä, joilla voimme manipuloida tuloksia. Kyselyt voidaan jakaa kahteen luokkaan: ne, jotka tuottavat tulosjoukkoja (kuten a VALINTA lausunto), ja ne, jotka eivät (kuten PÄIVITTÄÄtai INSERT lausuma). Käytä TQueryä. Avaa suorittaaksesi kyselyn, joka tuottaa tulosjoukon; käytä TQueryä. ExecSQL suorittaa kyselyitä, jotka eivät tuota tulosjoukkoja.
SQL-lauseet voivat olla joko staattinen tai dynaaminen, eli ne voidaan asettaa suunnittelun aikana tai sisältää parametreja (TQuery. parametrien), jotka vaihtelevat ajoaikana. Parametrisoitujen kyselyiden käyttö on erittäin joustavaa, koska voit muuttaa käyttäjän näkemystä ja pääsyä tietoihin lennon aikana ajon aikana.
Kaikkien suoritettavien SQL-käskyjen on oltava valmiita, ennen kuin ne voidaan suorittaa. Valmistelun tulos on lausunnon suoritettava tai toiminnallinen muoto. SQL-käskyn valmistusmenetelmä ja sen toimintamuodon pysyvyys erottavat staattisen SQL: n dynaamisesta SQL: stä. Suunnitteluhetkellä kysely valmistellaan ja toteutetaan automaattisesti, kun asetat tiedustelu komponentin aktiivinen ominaisuus totta. Ajon aikana kysely valmistellaan valmistelevan kutsun avulla ja suoritetaan, kun sovellus kutsuu komponentin Open- tai ExecSQL-menetelmiä.
TQuery voi palauttaa kahden tyyppisiä tulosjoukkoja: "elää"Kuten TT-komponentissa (käyttäjät voivat muokata tietoja tietosäätimillä, ja kun puhelu viestiin tapahtuu, muutokset lähetetään tietokantaan)"Lue ainoastaan"vain näytötarkoituksiin. Jos haluat pyytää live-tulosjoukkoa, aseta kyselykomponentin RequestLive-ominaisuudeksi True ja ota huomioon, että SQL-käskyn on täytettävä tietyt vaatimukset (ei ORDER BY, SUM, AVG, jne.)
Kysely toimii monella tapaa hyvin kuin taulukkosuodatin, ja tietyllä tavalla kysely on jopa tehokkaampi kuin suodatin, koska sen avulla voit käyttää:
- useampi kuin yksi taulukko kerrallaan ("liittyä" SQL: ään)
- määritetty alajoukko rivejä ja sarakkeita sen alla olevista taulukoista, sen sijaan, että ne aina palauttaisivat kaikki
Yksinkertainen esimerkki
Katsotaanpa nyt jotain SQL: tä toiminnassa. Vaikka voimme käyttää ohjattua tietokantamuodostusta luomaan joitain SQL-esimerkkejä tähän esimerkkiin, teemme sen manuaalisesti, askel askeleelta:
1. Sijoita TQuery, TDataSource, TDBGrid, TEdit ja TButton-komponentti päälomakkeeseen.
2. Aseta TDataSource-komponentin DataSet-ominaisuudeksi Query1.
3. Aseta TDBGrid-komponentin DataSource-ominaisuudeksi DataSource1.
4. Aseta TQuery-komponentin DatabaseName -ominaisuudeksi DBDEMOS.
5. Kaksoisnapsauta TQueryn SQL-ominaisuutta, jotta SQL-käsky määritetään sille.
6. Jotta ruudukko näyttää tietoja suunnittelun aikana, muuta TQuery-komponentin Aktiivinen ominaisuus True: ksi.
Ruudukko näyttää työntekijän.db-taulukon tiedot kolmessa sarakkeessa (Etunimi, Sukunimi, Palkka), vaikka Employee.db: ssä on 7 kenttää, ja tulosjoukko on rajoitettu niihin tietueisiin, joissa Ensinimi alkaa 'R': llä.
7. Määritä nyt seuraava koodi Button1: n OnClick-tapahtumaan.
menettely TForm1.Button1Click (Lähettäjä: TObject); alkaa Query1.Close;{sulje kysely}// määritä uusi SQL-lauseke Query1.SQL.Clear; Kysely1.SQL.Lisä ('Valitse EmpNo, Etunimi, Sukunimi'); Query1.SQL.Add ('FROM Employee.db'); Query1.SQL.Add ('WHERE Palkka>' + Edit1.Text); Kysely1.RequestLive: = totta; Query1.Open; {avoin kysely + näyttödata}pää;
8. Suorita sovellus. Kun napsautat painiketta (niin kauan kuin Edit 1: ssä on kelvollinen valuutta-arvo), ruudukossa näkyy EmpNo, FirstName ja LastName -kentät kaikille tietueille, joiden palkka on suurempi kuin määritetty valuutta arvo.
Tässä esimerkissä loimme yksinkertaisen staattisen SQL-käskyn live-tulosjoukolla (emme ole muuttaneet mitään näytetyistä tietueista) vain näyttämistä varten.