Kui teie päringud ei tööta piisavalt hästi, aitab SQL põhilausete lisamine tulemitele keskenduda. Vaatame mõnda tüüpi SQL-lauseid ja klausleid või osi, mida saate soovitud tulemite saamiseks redigeerida.
Selle artikli teemad
SELECT-lause loomine
SQL-i SELECT-lausel on kaks või kolm klauslit. SELECT-klausel ütleb andmebaasile, kust andmeid otsida, ja palub andmebaasil tagastada kindel tulem.
Märkus.: SELECT-laused lõpevad alati semikooloniga (;) viimase klausli lõpus või SQL-lause lõpus eraldi real.
Järgmine select-lause palub Accessil hankida teavet tabeli Kontaktid veergudest Meiliaadress ja Ettevõte, täpsemalt sealt, kus ta 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:
|
|
Ühendamiste abil saate kahest andmeallikast pärinevad kirjepaarid ühendada üheks tulemiks või määrata, kas kaasata kummagi tabeli kirjed, kui seotud tabelis pole vastavat kirjet. Ühendage tabelid nii, et päring kombineeriks tabelite üksused ja välistaks üksused, kui teises tabelis pole 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. Sisemise ühendusega päringu käivitamisel 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älises ühendamises on järgmine SQL-süntaks:
FROM table1 [ LEFT | RIGHT ] JOIN table2ON 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_offerFROM ProductsUNION ALLSELECT 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.