Užklausų kūrimas

Turinys

# Query Design

Užklausų projektavimo veiksenoje galima kurti ir taisyti duomenų bazės užklausas.

Jei norite tai atlikti…

Duomenų bazių programos lange spustelėkite mygtuką Užklausos, tuomet pasirinkite komandą Taisa → Taisyti.

Daugumoje duomenų bazių duomenims filtruoti, rikiuoti ir atvaizduoti kompiuteryje naudojamos užklausos. Rodiniais galima atlikti tą patį, tik serveryje. Jei duomenų bazė yra serveryje, kuriame galima kurti rodinius, rodiniais filtruoti duomenis serveryje būtų sparčiau.

Duomenų bazių programos lange spustelėjus mygtuką Lentelės ir pasirinkus komandą Kurti rodinį, atveriamas rodinio kūrimo langas, kuris yra labai panašus į čia aprašomą užklausų kūrimo langą.

Užklausų kūrimo lange parengtas maketas įrašomas kartu su užklausa, tačiau jo negalima įrašyti su rodiniu.

## Projektavimo veiksena

Užklausai sukurti duomenų bazių programos lange spustelėkite mygtuką Užklausos, tuomet spustelėkite komandą Kurti užklausą projektavimo veiksenoje.

The lower pane of the Design View is where you define the query. To define a query, specify the database field names to include and the criteria for displaying the fields. To rearrange the columns in the lower pane of the Design View, drag a column header to a new location, or select the column and press CommandCtrl+arrow key.

Viršutinėje užklausų kūrimo lango dalyje yra Užklausos projekto ir Projekto mygtukų juostos.

Jei norite išbandyti užklausą, dukart spustelėkite užklausos pavadinimą duomenų bazių programos lange. Rezultatas bus parodytas į duomenų šaltinio polangį panašioje lentelėje. Pastaba: bandymo rezultatų lentelė yra laikina.

### Klavišai užklausos projektavimo veiksenoje

Klavišas | Funkcija
--- | ---
F4 | Peržiūra
F5 | Vykdyti užklausą
F7 | Pridėti lentelę arba užklausą

## Lentelių ir užklausų parinkimas

Pirmą kartą atvėrus užklausos kūrimo langą, dialogo lange reikia pasirinkti lentelę arba užklausą, kurios pagrindu kursite naują užklausą.

Laukus į užklausą galima įtraukti dukart spustelėjus jų pavadinimus, o tempdami laukus sukursite sąryšius tarp jų.

Kuriant užklausą nebus galima taisyti parinktų lentelių.

### Lentelių šalinimas

Jei projektavimo veiksenoje norite pašalinti lentelę iš užklausos, dešiniuoju pelės klavišu spustelėkite lentelės polangio pavadinimo juostą ir iš kontekstinio meniu pasirinkite komandą Šalinti. Taip pat galima paspausti šalinimo klavišą.

### Lentelės perkėlimas ir dydžio keitimas

Lenteles užklausos kūrimo lange galima išdėstyti įvairiais būdais. Jei norite perkelti lentelę į kitą vietą, tempkite lentelės polangį už jo pavadinimo juostos. Lentelės polangio dydį pakeisite tempdami polangio kraštinę arba kampą tol, kol polangis bus norimo dydžio.

## Lentelių sąryšiai

Jei egzistuoja sąryšis tarp dviejų duomenų laukų iš skirtingų lentelių, tokį sąryšį galima naudoti užklausoje.

Tarkime, kad viename skaičiuoklės dokumente surašytos prekės ir jos identifikuojamos pagal prekės numerį. Kitame skaičiuoklės dokumente yra klientų ir kiekvieno kliento užsakytų prekių sąrašas, kuriame prekės nurodomos panaudojant tą patį prekės numerį iš pirmojo dokumento. Tuomet sakome, kad tarp dviejų prekės numerio duomenų laukų egzistuoja sąryšis. Jei norėtumėte sukurti užklausą, kuri pateiktų visų konkretaus kliento užsakytų prekių sąrašą, duomenis reikėtų surinkti iš dviejų dokumentų. Kad tai pavyktų, „LibreOffice“ programai reikia nurodyti, jog tarp dviejų skaičiuoklės dokumentų egzistuoja duomenų sąryšis.

Sąryšiui nurodyti nuspauskite pelės klavišą ties vieno iš laukų pavadinimu (pavyzdžiui, prekės numerio lauko klientų lentelėje) ir tempkite iki kitos lentelės lauko pavadinimo (prekės numerio lauko prekių lentelėje). Kai atleisite pelės klavišą, tarp dviejų lentelių polangių bus sukurta duomenų laukų jungiamoji linija. Atitinkama sąlyga (kad dviejų susietų laukų turinys turi sutapti) bus įrašyta ir į SQL užklausą.

Užklausas, į kurias įtraukti keli susiję dokumentai, kurti galima tik jei naudojate „LibreOffice“ kaip sąryšinės duomenų bazės sąsają.

Užklausose negalima naudoti lentelių iš skirtingų duomenų bazių. Užklausos, į kurias įtrauktos kelios lentelės, turi būti kuriamos toje pačioje duomenų bazėje.

### Sąryšio tipo nustatymas

Dukart spustelėjus liniją, jungiančią du susietus laukus, arba pasirinkus komandą Įterpimas → Naujas sąryšis, atveriamas jungties savybių dialogo langas, kuriame galima nurodyti sąryšio tipą.

Taip pat galima pakartotinai spausti klavišą Tab tol, kol bus pažymėta norima linija, tuomet klavišais Lyg2+F10 atverti kontekstinį meniu ir iš jo pasirinkti komandą Taisyti. Kai kurios duomenų bazės suderinamos tik su kai kuriais jungčių tipais.

### Sąryšių šalinimas

Jei norite pašalinti sąryšį tarp dviejų lentelių, spustelėkite atitinkamą liniją ir paspauskite klavišą Šalinti.

Sąryšį tai pat pašalinsite jungties savybių dialogo lango srityje Įtraukti laukai pašalinę atitinkamus įrašus. Dar galima pakartotinai spausti klavišą Tab tol, kol bus pažymėta norima linija, tuomet klavišais Lyg2+F10 atverti kontekstinį meniu ir iš jo pasirinkti komandą Šalinti.

## Užklausos aprašymas

Čia parenkamos sąlygos užklausai aprašyti. Kiekviename užklausos projektavimo lentelės stulpelyje aprašomas vienas duomenų laukas. Sąlygos vienoje eilutėje sujungiamos logine operacija IR.

### Laukų įterpimas į užklausą

Pirmiausia iš lentelių parinkite visus laukus, kuriuos norite įtraukti į užklausą. Tai galima atlikti arba pele nutempus lauko pavadinimą iš lentelės polangio į apatinę užklausų kūrimo lango dalį, arba dukart spustelėjus lauko pavadinimą lentelės polangyje. Tempiant lauką galima pasirinkti, kuriame stulpelyje jis bus įterptas. Lentelės polangyje dukart spustelėjus lauko pavadinimą, laukas įterpiamas į pirmą tuščią stulpelį.

### Laukų šalinimas iš užklausos

Jei norite pašalinti lauką iš užklausos, dešiniuoju pelės klavišu spustelėkite norimo lauko stulpelio antraštę ir iš kontekstinio meniu pasirinkite komandą Šalinti.

### Užklausos įrašymas

Užklausą įrašysite standartinėje mygtukų juostoje spustelėję mygtuką Įrašyti. Bus atvertas dialogo langas užklausos pavadinimui įvesti. Jei duomenų bazėje galima naudoti schemas, schemos pavadinimą taip pat nurodykite šiame lange.

#### Schema

Įveskite užklausai arba lentelės rodiniui priskirtos schemos pavadinimą.

#### Užklausos pavadinimas arba lentelės rodinio pavadinimas

Įveskite užklausos arba lentelės rodinio pavadinimą.

### Duomenų filtravimas

Užklausos duomenims filtruoti reikiamus kriterijus parinkite apatinėje užklausų kūrimo lango dalyje. Galimos tokios parinktys:

#### Laukas

Čia parinkite į užklausą įtraukiamo lauko pavadinimą. Visos parinktys, nustatytos kitose to paties stulpelio eilutėse, bus taikomos šiam laukui. Spustelėjus langelį pele, jame atsiras rodyklės mygtukas – juo išskleidžiamas meniu, iš kurio galima parinkti lauką. Įrašas „Lentelės pavadinimas.*“ žymi visus lentelės laukus, tad jį parinkus, žemiau nustatytos parinktys bus taikomos visiems lentelės laukams.

#### Alternatyva

Nurodomas alternatyvusis vardas. Alternatyvusis vardas bus rodomas užklausoje vietoje lauko pavadinimo. Šitaip galima aprašyti savitas stulpelių antraštes. Pavyzdžiui, jei norėtumėte, kad laukas, kurio pavadinimas yra „PrNr“, užklausoje būtų rodomas pavadinimu „PrekėsNr“, laukelyje Alternatyva įveskite „PrekėsNr“.

SQL sakinyje alternatyvusis vardas nurodomas štai taip:

SELECT stulpelis AS alternatyva FROM lentelė.

Pavyzdžiui:

    SELECT "PtNo" AS "PartNum" FROM "Parts"

#### Lentelė

Čia rodoma duomenų bazės lentelė, kurioje yra parinktasis duomenų laukas. Jei spustelėsite langelyje, pasirodys rodyklės mygtukas – iš juo išskleidžiamo sąrašo užklausai galima parinkti kitą duomenų bazės lentelę.

#### Rikiavimas

Spustelėjus šiame langelyje bus galima parinkti rikiavimo būdą: didėjančiai, mažėjančiai arba nerikiuoti. Tekstinės reikšmės rikiuojamos pagal abėcėlę, skaitinės – pagal skaičiaus vertę. Daugumoje duomenų bazių administratorius gali nustatyti rikiavimo parinktis duomenų bazės lygmenyje.

#### Matomas

Jei parinktis Matomas pažymėta, duomenų laukas bus rodomas užklausoje. Jei duomenų laukas reikalingas tik sąlygai suformuluoti ar skaičiavimams atlikti, jo rodyti nebūtina.

#### Kriterijus

Specifies a first criteria by which the content of the data field is to be filtered.

#### Arba

Kiekvienoje tokioje eilutėje galima įvesti papildomą filtravimo kriterijų. Jei viename stulpelyje yra daugiau nei vienas kriterijus, jie jungiami logine operacija ARBA.

Apatinėje užklausų kūrimo lango dalyje iš eilutės antraštės kontekstinio meniu galima įterpti ir funkcija aprašytą kriterijų.

### Funkcijos

Galimos funkcijos priklauso nuo naudojamos duomenų bazės.

Jei naudojate įtaisytąją HSQL duomenų bazę, išskleidžiamajame funkcijų meniu galima rinktis iš šių funkcijų:

Parinktis | SQL | Reikšmė
--- | --- | ---
Nėra funkcijos |  | Nebus vykdoma jokia funkcija.
Vidurkis | AVG | Apskaičiuojamas lauko reikšmių aritmetinis vidurkis.
Kiekis | COUNT | Apskaičiuojamas įrašų lentelėje skaičius. Tuščius laukus į šį skaičių galima įtraukti (a) arba neįtraukti (b). a) COUNT(*): jei kaip parametras nurodoma žvaigždutė, skaičiuojami visi lentelės įrašai. b) COUNT(stulpelis): jei kaip parametras nurodomas lauko pavadinimas, skaičiuojami tik tie įrašai, kuriuose nurodytas laukas turi reikšmę. Įrašai su reikšme „null“ (t .y. jokios tekstinės ar skaitinės reikšmės) skaičiuojant bus praleisti.
Maksimumas | MAX | Randamas lauko įrašas su didžiausia reikšme.
Minimumas | MIN | Randamas lauko įrašas su mažiausia reikšme.
Suma | SUM | Apskaičiuojama lauko reikšmių suma.
Grupė | GROUP BY | Užklausos duomenys grupuojami pagal parinktą lauką. Funkcijos bus taikomos nurodytoms grupėms. SQL sintaksėje ši parinktis atitinka sakinį GROUP BY. Pridėjus kriterijų, šis bus įterptas į įdėtinį SQL sakinį HAVING.

Funkcijų kreipinius galima rašyti tiesiogiai SQL sakinyje. Sintaksė tokia:

SELECT FUNKCIJA(stulpelis) FROM lentelė.

Pavyzdžiui, SQL sakinys su funkcija sumai apskaičiuoti atrodytų taip:

    SELECT SUM("Kaina") FROM "Prekės".

Visos aukščiau išvardintos funkcijos, išskyrus funkciją Grupė, vadinamos agreguojančiomis funkcijomis. Tai tokios funkcijos, kurios, atlikdamos skaičiavimus su duomenimis, sukuria tam tikrą rezultatų santrauką. Gali būti ir kitų funkcijų, kurių nėra šiame sąraše ir kurias galima naudoti rašant užklausas, tačiau tai priklauso nuo naudojamos duomenų bazės tipo ir programos „Base“ tvarkyklės, naudojamos prie tos duomenų bazės prisijungti.

Jei naudosite kitas, išskleidžiamajame sąraše nepaminėtas funkcijas, jas įveskite eilutėje Laukas.

Funkcijų kreipiniams galima priskirti alternatyvius vardus. Jei nenorite, kad užklausos eilutė būtų matoma stulpelio antraštėje, eilutėje Alternatyva įveskite norimą alternatyvųjį vardą.

Tokia funkcija SQL sakinyje būtų aprašoma taip:

SELECT FUNCTION() AS alternatyvusis_vardas FROM lentelė

Pavyzdys:

    SELECT COUNT(*) AS kiekis FROM "Prekės"

Vykdant tokią funkciją, užklausoje nebus galima pridėti papildomų stulpelių, išskyrus nurodytus kaip funkcijos „Grupė“ argumentus.

Pavyzdžiai

Toliau pateikiamame pavyzdyje užklausa vykdoma dviejose lentelėse: iš lentelės “Prekės“ gaunamas laukas „Prekės_nr“, o iš lentelės „Tiekėjai“ – laukas „Tiekėjo_pavadinimas“. Be to, abiejose lentelėse yra bendras laukas „Tiekėjo_nr“.

Šiais žingsniais sukursime užklausą, kuria rasime visus tiekėjus, tiekiančius daugiau nei tris prekes.

1. Užklausos kūrimo lange pridėkite lenteles „Prekės“ ir „Tiekėjai“.

2. Jei tokio sąryšio dar nėra, susiekite abiejų lentelių laukus „Tiekėjo_nr“.

3. Dukart spustelėkite lauko „Prekės_nr“ pavadinimą lentelėje „Prekės“. Pridėtajam laukui iškleiskite funkcijų sąrašą ir parinkite funkciją „Kiekis“.

4. Įveskite kriterijų „>3“ ir panaikinkite žymėjimą langelyje „Matomas“.

5. Lentelėje „Tiekėjai“ dukart spustelėkite lauką „Tiekėjo_pavadinimas“ ir parinkite jam funkciją „Grupė“.

6. Įvykdykite užklausą.

Tarę, kad lentelėje „Prekės“ yra laukai „Kaina“ (vienos prekės kaina) ir „Tiekėjo_nr“ (prekės tiekėjo numeris), panaudodami užklausą apskaičiuosime vidutinę tiekėjo tiekiamų prekių kainą:

1. Užklausos kūrimo lange pridėkite lentelę „Prekės“.

2. Dukart spustelėkite laukus „Kaina“ ir „Tiekėjo_nr“.

3. Laukui „Kaina“ parinkite funkciją „Vidurkis“.

4. Langelyje „Alternatyva“ galima įvesti alternatyvųjį vardą, pvz., „Vidurkis“.

5. Laukui „Tiekėjo_nr“ parinkite funkciją „Grupė“.

6. Įvykdykite užklausą.

Galimos tokios kontekstinio meniu komandos:

### Funkcijos

Parodoma arba paslepiama funkcijų parinkimo eilutė.

### Lentelės pavadinimas

Parodoma arba paslepiama lentelės pavadinimo eilutė.

### Alternatyvusis vardas

Parodoma arba paslepiama alternatyviojo vardo eilutė.

### Skirtingos reikšmės

Jei ši parinktis pažymėta, užklausos rezultatas yra tik skirtingos reikšmės. Ši parinktis naudojama, kai viename duomenų bazės stulpelyje yra pasikartojančių reikšmių. Jei parinktis Skirtingos reikšmės pažymėta, užklausos rezultate bus tik viena reikšmė (DISTINCT), jei ne – užklausa parodys visas pasikartojančias reikšmes (ALL).

Pavyzdžiui, jei adresų duomenų bazėje yra keletas įrašų su pavarde „Jonaitis“, pažymėjus parinktį Skirtingos reikšmės užklausos rezultate toks įrašas bus rodomas tik kartą.

Jei užklausoje naudojama keletas laukų, visų jų kombinacija turi būti unikali, kad reikšmės būtų laikomos skirtingomis. Tarkime, kad adresų duomenų bazėje yra vienas įrašas „Jonaitis, Vilnius“ ir du įrašai „Jonaitis, Kaunas“. Jei pažymėta parinktis Skirtingos reikšmės, vykdant užklausą bus ieškoma unikalių pavardės ir miesto laukų reikšmių kombinacijų, tad rezultatas bus vienas įrašas „Jonaitis, Vilnius“ ir vienas įrašas „Jonaitis, Kaunas“.

SQL kalboje ši parinktis atitinka parametrą DISTINCT.

### Riba

Apribojamas didžiausias užklausa randamų įrašų skaičius.

Jei ribos reikšmė nurodyta, užklausos rezultate bus ne daugiau negu nurodytas skaičius eilučių. Jei ne, bus pateikiamos visos eilutės, atitinkančios užklausos kriterijus.

### Filtravimo sąlygų formulavimas

Formuluojant filtravimo sąlygas galima naudoti įvairius operatorius ir komandas. Be sąryšinių operatorių, galima naudoti specialias SQL komandas, kuriomis paieška vykdoma duomenų bazės laukų turinyje. Jei tokias komandas panaudosite „LibreOffice“ sintaksėje, jos vidiniu analizatoriumi bus automatiškai konvertuojamos į atitinkamas SQL sintaksės komandas. SQL komandas galima įvesti ir tiesiogiai, apeinant vidinį analizatorių. Toliau lentelėje išvardinti galimi operatoriai ir komandos:

Operatorius | Reikšmė | Sąlyga tenkinama, jei…
--- | --- | ---
= | lygu | …lauko turinys yra identiškas nurodytam reiškiniui. Operatorius = nebus rodomas užklausos laukuose. Jei įvesite reikšmę be jokio operatoriaus, bus tariama, kad naudojamas operatorius =.
<> | nelygu | …lauko turinys neatitinka nurodyto reiškinio.
> | daugiau | …lauko turinio reikšmė yra didesnė už nurodyto reiškinio reikšmę.
< | mažiau | …lauko turinio reikšmė yra mažesnė už nurodyto reiškinio reikšmę.
>= | daugiau arba lygu | …lauko turinio reikšmė yra didesnė arba lygi nurodyto reiškinio reikšmei.
<= | mažiau arba lygu | …lauko turinio reikšmė yra mažesnė arba lygi nurodyto reiškinio reikšmei.

„LibreOffice“ komanda | SQL komanda | Reikšmė | Sąlyga tenkinama, jei…
--- | --- | --- | ---
IS EMPTY | IS NULL | neturi reikšmės | …lauke nėra jokių duomenų. Jei ieškoma trijų būsenų loginiuose laukuose (reikšmės „Taip“ arba „Ne“), šia komanda randami neapibrėžtosios būsenos laukai (nei „Taip“, nei „Ne“).
IS NOT EMPTY | IS NOT NULL | yra ne tuščias | …laukas yra ne tuščias, t. y. turi duomenų.
LIKE vietaženklis (*) bet kokiam skaičiui rašmenų vietaženklis (?) lygiai vienam rašmeniui | LIKE vietaženklis (%) bet kokiam skaičiui rašmenų vietaženklis (_) lygiai vienam rašmeniui | yra lauko elementas | …duomenų lauke yra nurodytas reiškinys. Vietaženkliu „*“ nurodoma, ar reiškinys „x“ turi būti lauko turinio pradžioje (x*), ar pabaigoje (*x), ar viduryje (*x*). Kaip vietaženklį galima naudoti arba ženklą „%“ (SQL užklausose), arba failų sistemose įprastą ženklą „*“ („LibreOffice“ sąsajoje). Vietaženkliai „*“ ir „%“ žymi bet kokį skaičių rašmenų. Klaustukas „?“ („LibreOffice“ sąsajoje) arba pabraukimo brūkšnys „_“ (SQL užklausose) žymi lygiai vieną rašmenį.
NOT LIKE | NOT LIKE | nėra lauko elementas | …duomenų lauke nėra nurodyto reiškinio.
BETWEEN x AND y | BETWEEN x AND y | patenka į intervalą [x,y] | …duomenų lauke esanti reikšmė patenka į intervalą nuo x iki y.
NOT BETWEEN x AND y | NOT BETWEEN x AND y | nepatenka į intervalą [x,y] | …duomenų lauke esanti reikšmė nepatenka į intervalą nuo x iki y.
IN (a; b; c...) Pastaba: kabliataškiai reikšmių sąrašuose naudojami kaip skirtukai! | IN (a, b, c...) | lauke yra reiškiniai a, b, c… | …duomenų lauke yra vienas iš nurodytų reiškinių a, b, c… Galima nurodyti kiek norima reiškinių, o užklausos rezultatams rasti naudojama loginė operacija ARBA. Reiškiniai a, b, c… gali būti skaičiai arba kitokie rašmenys.
NOT IN (a; b; c...) | NOT IN (a, b, c...) | lauke nėra reiškinių a, b, c… | …duomenų lauke nėra nė vieno iš nurodytų reiškinių a, b, c…
= TRUE | = TRUE | reikšmė yra TRUE (tiesa) | …lauko reikšmė yra loginė reikšmė TRUE (tiesa).
= FALSE | = FALSE | reikšmė yra FALSE (melas) | …lauko reikšmė yra loginė reikšmė FALSE (melas).

### Pavyzdžiai

='Ats.' | Užklausos rezultatas yra visi laukai, kurių turinys yra „Ats.“
<'2001-01-10' | Užklausa randami visi laukai su data, ankstesne nei 2001 m. sausio 10 d.
LIKE 'sto?as' | Galimi užklausos rezultatai yra laukai su turiniu „stogas“ ir „stovas“.
LIKE 'S*' | Užklausa randami laukai, kurių turinys prasideda raide „S“, pavyzdžiui, „Sostinė“.
BETWEEN 10 AND 20 | Užklausos rezultatas yra laukai, kurių reikšmės yra tarp 10 ir 20. Laukai gali būti tekstiniai arba skaitiniai.
IN (1; 3; 5; 7) | Užklausa randami laukai su reikšmėmis 1, 3, 5, 7. Jei, pavyzdžiui, duomenų lauke yra įrašytas prekės numeris, galima sukurti užklausą, kuri rastų prekę su tam tikru numeriu.
NOT IN ('Parduota') | Užklausa randami visi įrašai, kuriuose nėra lauko su turiniu „Parduota“.

Operatoriaus LIKE kaitos seka: {escape 'kaitos_seka'}

Pavyzdys:

    SELECT * FROM Item WHERE ItemName LIKE 'The *%' {escape '*'}

Pavyzdyje pateiktos užklausos rezultatai bus visi įrašai, kuriuose lauko „PrekėsPavad“ turinys prasideda tekstu „Naujas *“. Tokiu būdu užklausomis galima ieškoti tokių rašmenų, kurie įprastu atveju būtų laikomi vietaženkliais: *, ?, _, % ar taško.

Operatoriaus OUTER JOIN kaitos seka: {oj outer-join-sakinys}

Pavyzdys:

    SELECT Article.* FROM {oj item LEFT OUTER JOIN orders ON item.no=orders.ANR}

### Užklausos teksto laukams

Rašant užklausą teksto laukams, ieškomą reiškinį reikia rašyti tarp viengubų kabučių. Ar svarbus raidžių lygis, priklauso nuo naudojamos duomenų bazės. Operatorius LIKE paprastai turi būti rašomas didžiosiomis raidėmis, nors ir ne visose duomenų bazėse to griežtai reikalaujama.

### Užklausos datos laukams

Datos laukai žymimi #Date#, kad aiškiai būtų matomas jų tipas. Datos, laiko bei datos ir laiko konstantos, naudojamos sąlygose, gali atitikti „SQL Escape“ sintaksę arba numatytąją SQL2 sintaksę.

Datos tipo elementas | „SQL Escape“ sintaksė #1 – galimai nebenaudojama | SQL Escape sintaksė #2 | SQL2 sintaksė
--- | --- | --- | ---
Data | {D'YYYY-MM-DD'} | {d 'YYYY-MM-DD'} | 'YYYY-MM-DD'
Laikas | {D'HH:MM:SS'} | {t 'HH:MI:SS[.SS]'} | 'HH:MI:SS[.SS]'
Data ir laikas | {D'YYYY-MM-DD HH:MM:SS'} | {ts 'YYYY-MM-DD HH:MI:SS[.SS]'} | 'YYYY-MM-DD HH:MI:SS[.SS]'

Pavyzdys:

    SELECT {d '1999-12-31'} FROM world.years

Pavyzdys:

    SELECT * FROM mytable WHERE years='1999-12-31'

Visus datos reiškinius reikia rašyti viengubose kabutėse. Tikslesnės informacijos reikėtų ieškoti naudojamos duomenų bazės žinynuose.

### Užklausos loginių reikšmių laukams

Rašydami užklausas loginių reikšmių laukams (tokiems, kurių reikšmės yra arba „Taip“, arba „Ne“), dBASE lentelėse naudokite tokią sintaksę:

Būsena | Užklausos kriterijus | Pavyzdys
--- | --- | ---
Taip | dBASE lentelėms: nelygus jokiai nurodytai reikšmei | =1; užklausos rezultatas yra visi įrašai, kuriuose loginio lauko reikšmė yra „Taip“ arba „Įgalinta“ (pažymėta juodai)
Ne | . | =0; užklausos rezultatas yra visi įrašai, kuriuose loginio lauko reikšmė yra „Ne“ arba „Išjungta“ (nepažymėta)
Tuščia | IS NULL | IS NULL; užklausos rezultatas yra visi įrašai, kuriuose loginis laukas neturi reikšmės „Taip“ arba „Ne“ (pažymėta pilkai)

Sintaksė priklauso nuo naudojamos duomenų bazės. Taip pat atminkite, kad loginius laukus galima aprašyti dvejopai: dviejų arba trijų būsenų.

### Parametrizuotos užklausos

Parametrizuotų užklausų vykdymo metu naudotojas gali įvesti tam tikras reikšmes. Šios reikšmės naudojamos kaip kriterijai rodytiniems įrašams atrinkti. Kiekviena tokia reikšmė susiejama su parametro vardu – šis rodomas raginime naudotojui įvesti reikšmę.

Ir projektavimo, ir SQL veiksenoje prieš parametrų vardus rašomas dvitaškis. Parametro vardą galima įrašyti visur, kur tik turėtų būti kokia nors reikšmė. Jei užklausoje ta pati reikšmė reikalinga keletą kartų, galima naudoti tą patį parametro vardą.

In the simplest case, where the user enters a value which is matched for equality, the parameter name with its preceding colon is simply entered in the Criterion row. In SQL mode this should be typed as WHERE "Field" = :Parameter_name

Parametrų varduose negali būti tarpų ir šių rašmenų: `!"$%^*()+={}[]@'~#<>?/,. Parametrų vardai negali sutapti su duomenų laukų pavadinimais ar SQL komandomis, tačiau gali būti tokie patys, kaip alternatyvieji vardai.

A useful construction for selecting records based on parts of a text field's content is to add a hidden column with "LIKE '%' || :Part_of_field || '%'" as the criterion. This will select records with an exact match. If a case-insensitive test is wanted, one solution is to use LOWER (Field_Name) as the field and LIKE LOWER ( '%' || :Part_of_field || '%' ) as the criterion. Note that the spaces in the criterion are important; if they are left out the SQL parser interprets the entire criterion as a string to be matched. In SQL mode this should be typed as LOWER ( "Field_Name" ) LIKE LOWER ( '%' || :Part_of_field || '%' ).

Parametrizuotas užklausas galima naudoti kaip įdėtinių formų duomenų šaltinius – tokiu būdu naudotojas galės apriboti rodomus įrašus.

### Parametrų įvedimas

Parametrų įvedimo dialogo lange naudotojo prašoma įvesti parametrų reikšmes. Įveskite reikšmę kiekvienam užklausos parametrui ir spustelėkite mygtuką Gerai arba paspauskite įvedimo klavišą.

Įvesti galima bet kokius rašmenis, kurie SQL kalboje leidžiami atitinkamam kriterijui. Leistinų rašmenų aibė gali priklausyti nuo naudojamos duomenų bazės.

Reikšmėse galima naudoti SQL pakaitos simbolius „%“ (bet kokia rašmenų seka) arba „_“ (bet koks vienas rašmuo).

## SQL veiksena

SQL (angl. Structured Query Language) – tai struktūruotoji užklausų kalba, kuria aprašomos komandos sąryšinėms duomenų bazėms taisyti ir administruoti.

Rašant užklausas „LibreOffice“ programoje nebūtina mokėti SQL kalbos, nes SQL komandų tiesiogiai galima ir nerinkti. Jei kursite užklausą projektavimo veiksenoje, „LibreOffice“ automatiškai sukurs reikiamos sintaksės SQL komandas. Jei mygtuku Rodyti arba slėpti projektavimo langą įjungsite SQL veikseną, joje bus rodomos jau sukurtos užklausos SQL komandos.

Užklausą formuluoti galima ir tiesiogiai SQL veiksenoje, tačiau atminkite, kad tiksli sintaksė gali skirtis priklausomai nuo naudojamos duomenų bazės.

Tiesiogiai renkant SQL komandas, galima užrašyti tokias užklausas, kurių nepavyktų sukurti naudojantis grafine projektavimo veiksenoje sąsaja. Tokias užklausas reikia vykdyti vietinės SQL kalbos veiksenoje.

SQL veiksenoje spustelėjus mygtuką Vykdyti SQL komandą tiesiogiai galima užrašyti užklausą, kuri nebus apdorojama „LibreOffice“ programoje, o siunčiama tiesiai į duomenų bazę.

Paremkite mus!