SQL (Structured Query Language) yra standartizuota kalba, skirta apibrėžti ir valdyti duomenis reliacinėje duomenų bazėje. Pagal reliacinį duomenų modelį duomenų bazė suvokiama kaip lentelių rinkinys, santykiai yra pateikiamos reikšmėmis lentelėse, o duomenys gaunami nurodant rezultatų lentelę, kurią galima gauti iš vienos ar daugiau bazinės lentelės. Užklausos pateikiamos komandų kalba, leidžiančia jums pasirinkti, įterpti, atnaujinti, rasti iš duomenų vietos ir tt
Delfuose: „TQuery“
Jei ketinate naudoti SQL savo programose, labai gerai susipažinsite su TQuery komponentas. „Delphi“ leidžia jūsų programoms tiesiogiai naudoti SQL sintaksę, naudojant „TQuery“ komponentą, norint pasiekti duomenis iš „Paradox“ ir „dBase“ lentelių. (naudojant vietinį SQL - ANSI standarto SQL poaibis), duomenų bazės vietiniame „InterBase“ serveryje ir duomenų bazės nuotolinėje duomenų bazėje serveriai.
„Delphi“ taip pat palaiko nevienalytes užklausas, susijusias su daugiau nei vienu serverio ar lentelės tipu (pavyzdžiui, duomenys iš „Oracle“ lentelės ir „Paradox“ lentelės) .TQuery turi savybę, vadinamą
„TQuery“ sukaupia vieną ar kelis SQL teiginius, juos vykdo ir pateikia metodus, kuriais galime manipuliuoti rezultatais. Užklausas galima suskirstyti į dvi kategorijas: tas, kurios sukuria rezultatų rinkinius (pvz., A PASIRINKTI pareiškimas), o tie, kurie to nedaro (pvz., ATNAUJINTIarba ĮDĖTI pareiškimas). Naudokite „TQuery“. Atidaryti norint įvykdyti užklausą, kuri sukuria rezultatų rinkinį; naudoti „TQuery“. „ExecSQL“ užklausoms, kurios nesudaro rezultatų rinkinių, vykdyti.
SQL teiginiai gali būti bet kurie statinis arba dinamiškas, tai yra, jie gali būti nustatyti projektavimo metu arba apimti parametrus (TQuery. Paramos), kurie skiriasi vykdymo metu. Parametrizuotų užklausų naudojimas yra labai lankstus, nes paleidimo metu galite pakeisti vartotojo požiūrį į duomenis ir prieigą prie jų.
Visi vykdomieji SQL teiginiai turi būti paruošti prieš juos įgyvendinant. Parengimo rezultatas yra vykdoma arba operatyvi pareiškimo forma. SQL teiginio parengimo metodas ir jo operatyvios formos išlikimas atskiria statinį SQL nuo dinaminio SQL. Projektavimo metu užklausa parengiama ir vykdoma automatiškai, kai nustatote užklausa komponento aktyvioji nuosavybė tikra. Vykdymo metu parengiama užklausa su raginimu pasiruošti ir vykdoma, kai programa iškviečia komponento „Open“ arba „ExecSQL“ metodus.
„TQuery“ gali grąžinti dviejų rūšių rezultatų rinkinius: "gyventi„kaip ir naudojant„ TTable “komponentą (vartotojai gali redaguoti duomenis naudodamiesi duomenų valdikliais, o kai skambinama į„ Post “, pakeitimai siunčiami į duomenų bazę)“Tik skaitymui"tik rodymo tikslais. Norėdami pateikti užklausą dėl tiesioginio rezultatų rinkinio, nustatykite užklausos komponento „RequestLive“ ypatybę ties „True“ ir atminkite, kad SQL sakinys turi atitikti kai kuriuos specifinius reikalavimus (ne „ORDER BY“, „SUM“, „AVG“ ir kt.)
Užklausa įvairiais būdais elgiasi kaip lentelės filtras, o kai kuriais atvejais užklausa yra dar galingesnė nei filtras, nes ji leidžia pasiekti:
- daugiau nei viena lentelė vienu metu (prisijungti prie SQL)
- nurodytas eilučių ir stulpelių pogrupis iš lentelės (-ių), užuot visuomet pateikęs visas
Paprastas pavyzdys
Dabar pažiūrėkime, kaip veikia SQL. Nors kai kuriuos šio pavyzdžio SQL pavyzdžius galėtume naudoti duomenų bazės formų vedikliu, mes tai padarysime rankiniu būdu, žingsnis po žingsnio:
1. Padėkite „TQuery“, „TDataSource“, „TDBGrid“, „TEdit“ ir „TButton“ komponentą pagrindinėje formoje.
2. „TDataSource“ komponento „DataSet“ ypatybę nustatykite į „Query1“.
3. Nustatykite „TDBGrid“ komponento „DataSource“ nuosavybę į „DataSource1“.
4. Nustatykite „TQuery“ komponento „DatabaseName“ ypatybę į „DBDEMOS“.
5. Dukart spustelėkite „TQuery“ SQL nuosavybę, kad jai būtų galima priskirti SQL.
6. Norėdami, kad tinklelyje būtų rodomi duomenys projektavimo metu, pakeiskite „TQuery“ komponento aktyviąją savybę į „True“.
Tinklelyje rodomi duomenys iš „Employee.db“ lentelės trimis stulpeliais (vardas, pavardė, atlyginimas), net jei „Employee.db“ turi 7 laukus, o rezultatų rinkinys ribojamas tais įrašais, kuriuose prasideda „FirstName“ su „R“.
7. Dabar priskirkite šį kodą „OnClick“ įvykiui „Button1“.
procedūra TForm1.Button1Click (Siuntėjas: TObject); prasideda Užklausa1.Uždaryti;{uždaryti užklausą}// priskirti naują SQL išraišką Query1.SQL.Clear; Query1.SQL.Add ('Pasirinkite EmpNo, FirstName, LastName'); Query1.SQL.Add ('FROM Employee.db'); Query1.SQL.Add ('WHERE alga>' + Edit1.Text); Query1.RequestLive: = tiesa; Užklausa1.Atidaryti; {atidaryti užklausą + rodyti duomenis}galas;
8. Paleiskite savo programą. Spustelėjus mygtuką (tol, kol „Edit 1“ yra galiojanti valiutos vertė), tinklelyje pasirodys Visų įrašų, kuriuose Atlyginimas yra didesnis už nurodytą valiutą, laukai „EmpNo“, „Vardas ir pavardė“ vertės.
Šiame pavyzdyje mes sukūrėme paprastą statinį SQL teiginį su tiesioginių rezultatų rinkiniu (mes nepakeitėme nė vieno rodomo įrašo) tik pateikimo tikslais.