Kui teie päringud ei toimi piisavalt hästi, võib mõningate SQL-põhilausete lisamine aidata tulemeid piiritleda. Järgmisena tutvustame mõningaid SQL-lausete tüüpe ja klausleid või osi, mida saate soovitud tulemite saamiseks redigeerida.
Märkus.: See artikkel ei kehti Accessi veebirakenduste kohta – need on Accessis loodavad, kuid veebis avaldatavad andmebaasid.
Selle artikli teemad
SELECT-lause loomine
SQL-i SELECT-lausel on kaks või kolm klauslit. SELECT-klausel annab andmebaasile teada, kust andmeid otsida, ja käsib sel tagastada kindla tulemi.
Märkus.: SELECT-laused lõpevad alati semikooloniga (;) viimase klausli lõpus või SQL-lause lõpus eraldi real.
Järgmine SELECT-lause käsib Accessil tuua teabe tabeli Kontaktid veergudest Meiliaadress ja Ettevõte, kui see leiab veerust Linn sõna "Seattle".
Ülaloleval päringul on kolm klauslit: SELECT, FROM ja WHERE.
1. SELECT-klausel: loetleb veerud, mis sisaldavad kasutatavaid andmeid, ja sisaldab tehtemärki (SELECT), millele järgnevad kaks identifikaatorit (Meiliaadress ja Ettevõte). Kui identifikaator sisaldab tühikuid või erimärke (nt "Meiliaadress"), ümbritsege identifikaator nurksulgudega.
2. FROM-klausel tuvastab lähtetabeli. Selles näites järgneb tehtemärgile (FROM) identifikaator (Kontaktid).
3. WHERE-klausel on valikuline klausel. Näites järgneb tehtemärgile (WHERE) avaldis (Linn="Seattle").
Valikupäringute kohta leiate lisateavet teemast Lihtsa valikupäringu loomine.
Alljärgnev on loend tavalisematest SQL-klauslitest.
SQL-klausel |
Toiming |
Kas see on nõutav ? |
SELECT |
Loetleb huvipakkuvaid andmeid sisaldavad väljad. |
Jah |
FROM |
Loetleb tabelid, mis sisaldavad SELECT-klauslis loetletud välju. |
Jah |
WHERE |
Määrab väljakriteeriumid, millele iga tulemitesse kaasatav kirje peab vastama. |
Ei |
ORDER BY |
Määrab tulemite sortimise järjestuse. |
Ei |
GROUP BY |
Loetleb kokkuvõttefunktsioone sisaldavas SQL-lauses väljad, mis pole SELECT-klauslis summeeritud. |
Ainult juhul, kui sellised väljad on olemas |
HAVING |
Määrab kokkuvõttefunktsioone sisaldavas SQL-lauses tingimused, mis rakendatakse SELECT-lauses summeeritud väljadele. |
Ei |
Iga SQL-klausel koosneb terminitest. Järgmisena tutvustame levinumate SQL-i terminite loendit.
SQL-i termin |
Definitsioon |
Näide |
identifikaator |
Nimi, mille abil tuvastatakse andmebaasiobjekt (nt veeru nimi). |
[Meiliaadress] ja Ettevõte |
tehtemärk |
Võtmesõna, mis tähistab toimingut või muudab seda. |
AS |
konstant |
Muutumatu väärtus (nt arv või väärtus NULL). |
42 |
avaldis |
Identifikaatorite, tehtemärkide, konstantide ja funktsioonide kombinatsioon, mille tulemiks on üksikväärtus. |
>= Tooted.[Ühiku hind] |
SELECT-klausli kohandamine
Kohanda |
Näide |
Ainult erinevate väärtuste kuvamine Kasutage SELECT-klauslis võtmesõna DISTINCT. |
Näiteks kui teie kliendid on mitmest erinevast harukontorist ja mõnel neist on sama telefoninumber ning te soovite kuvada kõik telefoninumbrid ainult ühe korra, võiks teie SELECT-klausel olla järgmine:
|
Identifikaatori andmelehevaates kuvamise viisi muutmine loetavuse parandamiseks Kasutage oma SELECT-klausli välja pseudonüümi koos tehtemärgiga AS (võtmesõna, mis tähistab toimingut või muudab seda). Välja pseudonüüm on nimi, mille määrate väljale, et tulemeid oleks hõlpsam lugeda. |
|
FROM-klausli kohandamine
Kohandamise eesmärk |
Näide |
Saate kasutada tabeli pseudonüümi või erinevat nime, mille olete SELECT-lauses tabelile määranud. Tabeli pseudonüüm on kasulik juhul, kui tabelinimi on pikk, eriti siis, kui teil on mitu erinevatest tabelitest pärit sama nimega välja. |
Andmete valimiseks kahelt väljalt (mõlema nimi on ID), millest üks on pärit tabelist tblKlient ja teine tabelist tblTellimus:
FROM-klauslis tabelipseudonüümide määratlemiseks kasutage tehtemärki AS:
Seejärel saate kasutada neid tabelipseudonüüme oma SELECT-klauslis järgmiselt:
|
Kahe andmeallika kirjepaaride ühendamiseks üheks tulemiks kasutage ühendusi. Samuti saate nende abil määrata, kas soovite kaasata sellised tabelikirjed, millel puudub seotud tabelis vaste. Ühendage tabelid nii, et päring kombineeriks tabelite üksused ja välistaks sellised üksused, millel pole teises tabelis vastavat kirjet. |
FROM-klausel võib välja näha selline:
|
Ühenduste kasutamine
Ühendusi on kahte tüüpi: sisemised ja välised ühendused. Sisemised ühendused on päringutes rohkem levinud. Kui käivitate sisemise ühendusega päringu, kuvatakse tulemis ainult need üksused, millel on mõlemas ühendatud tabelis ühine väärtus.
Välised ühendused määravad selle, kas kaasata andmed, millel puuduvad ühised väärtused. Välised ühendused on suunatud, mis tähendab, et saate määrata, kas kaasata kõik ühenduses määratud esimese tabeli kirjed (vasakpoolne ühendus) või ühenduse teise tabeli kirjed (parempoolne ühendus). Välisel ühendusel on järgmine SQL-süntaks:
FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2
Lisateavet ühenduste kasutamise kohta päringus leiate teemast Tabelite ja päringute ühendamine.
WHERE-klausli kohandamine
WHERE-klausel sisaldab kriteeriume, mille abil saate piiritleda päringu tagastatavate üksuste arvu. Tutvuge päringukriteeriumide näidete ja nende toimimisega.
Näide WHERE-põhiklausli kohandamisest on päringu tulemite piiramine. Oletagem, et soovite leida kliendi telefoninumbri ja mäletate tema perekonnanime üksnes Baglina. Selles näites talletatakse perekonnanimed väljal Perekonnanimi, seega oleks SQL-süntaks järgmine:
WHERE [LastName]='Bagel'
WHERE-klauslit saate kasutada ka selliste veergude andmeallikate kombineerimiseks, mis sisaldavad kattuvaid andmeid, kuid erinevaid andmetüüpe. See on kasulik, kuna eri andmetüüpidega väljade vahel ei saa ühendusi luua. Kasutage üht välja teise välja kriteeriumina koos võtmesõnaga LIKE . Näiteks kui soovite kasutada andmeid tabelitest Varad ja Töötajad, siis ainult siis, kui tabeli Varad väljal Varad oleva vara liigi arv on 3 tabeli Töötajad väljal Kogus, näeb WHERE-klausel välja järgmine:
WHERE field1 LIKE field2
NB!: WHERE-klauslis ei saa määrata kriteeriume sellise välja jaoks, mida kasutatakse kokkuvõttefunktsiooniga. Kasutage selle asemel HAVING-klauslit, et määrata kokkuvõtteväljade kriteeriumid.
Kohandamine ühendimärgi abil
Kasutage ühendimärki siis, kui soovite näha mitme sarnase valikupäringu ühendatud tulemivaadet. Näiteks kui teie andmebaasis on tabel Tooted ja tabel Teenused ja neis mõlemas on kolm välja: eripakkumine, toode või teenus, hind, garantii või tagatis. Kuigi tabelis Tooted talletatakse garantiiteavet ja tabelis Teenused tagatiseteavet, on põhiteave sama. Saate ühispäringu abil ühendada kahe tabeli kolm välja järgmiselt:
SELECT name, price, warranty, exclusive_offer
FROM Products UNION ALL SELECT name, price, guarantee, exclusive_offer FROM Services;
Päringu käivitamisel ühendatakse iga vastava väljakomplekti andmed üheks väljundiväljaks. Tulemitesse duplikaatridade kaasamiseks kasutage tehtemärki ALL.
Märkus.: SELECT-lauses peab olema sama arv väljundivälju, need peavad olema samas järjestuses ja sama või ühilduva andmetüübiga. Ühispäringu puhul on ühilduvad andmetüübid Number ja Tekst.
Ühispäringute kohta leiate lisateavet teemast Mitme päringu ühistulemi kuvamine ühispäringu abil.