Access SQL: põhilised mõisted, sõnavara ja süntaks
Applies ToMicrosoft 365 rakendus Access Access 2024 Access 2021 Access 2019 Access 2016

Andmebaasist andmete toomiseks tuleb kasutada SQL-keelt (Structured Query Language). SQL on arvutikeel, mis sarnaneb inglise keelega ja mida mõistavad andmebaasiprogrammid. Iga päring, mille käivitate, kasutab vaikimisi SQL-keelt.

SQL-keele toimimise mõistmine aitab teil luua paremaid päringuid ja hõlbustab nende päringute parandamist, mis ei tagasta soovitud andmeid.

See on üks Access SQL-i puudutavatest artiklitest. Selles artiklis kirjeldatakse SQL-i põhikasutust andmete valimiseks ja tuuakse näiteid SQL-süntaksi illustreerimiseks.

Selle artikli teemad

Mis on SQL?

SQL on faktikogumite ja nende omavaheliste seostega töötamiseks mõeldud arvutikeel. Relatsioonandmebaaside programmid (nt Microsoft Office Access) kasutavad SQL-keelt andmetega töötamiseks. Isegi algajal pole SQL-keelt (erinevalt paljudest arvutikeeltest) kuigi raske mõista. Sarnaselt paljude arvutikeeltega on SQL mitme standardimisorgani, nagu ISO ja ANSI poolt tunnustatud rahvusvaheline standard.

SQL-keele abil kirjeldatakse andmekogumeid, mille abil saate vastata küsimustele. SQL-i kasutamisel peate kasutama õiget süntaksit. Süntaks on komplekt reegleid, mida tuleb keele elementide kombineerimisel järgida. SQL-i süntaks põhineb inglise keele süntaksil ja kasutab mitmeid VBA (Visual Basic for Applications) süntaksiga sarnaseid elemente.

Näiteks lihtne SQL-lause, mis toob kõigi nende kontaktisikute perekonnanimed, kelle eesnimi on Mary, võiks olla umbes järgmine:

SELECT Last_NameFROM ContactsWHERE First_Name = 'Mary';

Märkus.: SQL-i kasutatakse lisaks andmete töötlemisele ka andmebaasiobjektide (nt tabelite) kujunduse muutmiseks. SQL-i osa, mida kasutatakse andmebaasiobjektide muutmiseks, nimetatakse andmekirjelduskeeleks (DDL). Selles teemas DDL-i ei käsitleta. Lisateavet leiate artiklist Tabelite ja registrite loomine ja muutmine andmekirjelduspäringu abil.

SELECT-laused

Andmekogumi kirjeldamiseks SQL-i abil kasutatakse SELECT-lauset. SELECT-lause sisaldab andmebaasist päritava andmekogumi täielikku kirjeldust. Need on muuhulgas järgmised:

  • millistes tabelites andmed paiknevad;

  • millised on seosed erinevatest allikatest pärinevate andmete vahel;

  • millistelt väljadelt või milliste arvutustega andmed saadakse;

  • kriteeriumid, millele kaasatavad andmed peavad vastama;

  • kas ja kuidas tulemeid sortida.

SQL-klauslid

SQL-lause sisaldab klausleid. Iga klausel täidab SQL-lauses kindlat funktsiooni. Mõni klausel on SELECT-lauses kohustuslik. Järgmises tabelis on loetletud levinumad SQL-klauslid.

SQL-klausel

Toiming

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

SQL-i terminid

Iga SQL-klauses koosneb terminitest, mida võib võrrelda sõnaliigiga. Järgmises tabelis loetletakse SQL-i terminite tüübid.

SQL-i termin

Võrreldav sõnaliik

Definitsioon

Näide

identifikaator

nimisõna

Nimi, mille abil tuvastatakse andmebaasiobjekt (nt välja nimi).

Kliendid.[Telefoninumber]

tehtemärk

tegu- või määrsõna

Võtmesõna, mis tähistab toimingut või muudab seda.

AS

konstant

nimisõna

Muutumatu väärtus (nt arv või väärtus NULL).

42

avaldis

omadussõna

Identifikaatorite, tehtemärkide, konstantide ja funktsioonide kombinatsioon, mille tulemiks on üksikväärtus.

>= Tooted.[Ühiku hind]

Lehe algusse

SQL-i põhiklauslid: SELECT, FROM ja WHERE

SQL-lause üldkuju on järgmine:

SELECT field_1FROM table_1WHERE criterion_1;

Märkused: 

  • Access ignoreerib SQL-lauses olevaid reapiire. Sellegipoolest on kasulik nii enda kui ka teiste huvides kirjutada SQL-lause loetavuse parandamiseks iga klausel eraldi reale.

  • SELECT-lause lõpeb alati semikooloniga (;). Semikoolon võib olla lause viimase klausli lõpus või omaette real.

Accessi näide

Järgnev näide illustreerib, milline võiks lihtsa valikupäringu SQL-lause Accessis välja näha.

SQL-objektivahekaart, kus on kuvatud SELECT-lause

1. SELECT-klausel

2. FROM-klausel

3. WHERE-klausel

Järgmist SQL-lauset tuleb lugeda nii: „Vali tabeli Kontaktid väljadel Meiliaadress ja Ettevõte talletatavad andmed, täpsemalt öeldes need kirjed, kus väljal Linn on väärtus Seattle“.

Analüüsime seda näidet klauslite kaupa, et näha, kuidas SQL-süntaks töötab.

SELECT-klausel

SELECT [E-mail Address], Company

See on klausel SELECT. See koosneb tehtemärgist (SELECT) ja sellele järgnevast kahest identifikaatorist (Meiliaadress ja Ettevõte).

Kui identifikaator sisaldab tühikuid või erimärke (nt „Meiliaadress“), tuleb see ümbritseda nurksulgudega.

SELECT-klausel ei pea määratlema, millistes tabelites väljad asuvad ja see ei saa määratleda andmete kaasamise tingimusi.

SELECT-lauses peab SELECT-klausel alati eelnema FROM-klauslile.

FROM-klausel

FROM Contacts

See on FROM-klausel. See koosneb tehtemärgist (FROM) ja sellele järgnevast identifikaatorist (Kontaktid).

FROM-klausel ei loetle valitavaid välju.

WHERE-klausel

WHERE City="Seattle"

See on WHERE-klausel. See koosneb tehtemärgist (WHERE) ja sellele järgnevast avaldisest (Linn="Seattle").

Märkus.: Erinevalt SELECT- ja FROM-klauslitest pole WHERE-klausel SELECT-lauses nõutav.

Klauslite SELECT, FROM ja WHERE kombineerimisel saate teha paljusid SQL-i abil võimalikke toiminguid. Lisateavet nende klauslite kasutamise kohta leiate järgmistest artiklitest:

Lehe algusse

Tulemite sortimine: ORDER BY

Sarnaselt Microsoft Exceliga võimaldab Access päringu tulemeid andmelehel sortida. Ent tulemite sortimisviisi saab määrata ka päringu käigus, kasutades selleks klauslit ORDER BY. Klausel ORDER BY on SQL-lause viimane klausel.

Klausliga ORDER BY saate sortimisel kasutatavad väljad loetleda järjestuses, mille alusel soovite sortimistoiminguid rakendada.

Oletagem näiteks, et soovite tulemid sortida esmalt välja Ettevõte järgi laskuvas järjestuses ja (kui leidub kirjeid, millel on välja Ettevõte väärtus sama) seejärel välja Meiliaadress väärtuste järgi tõusvas järjestuses. Teie klausel ORDER BY võiks välja näha umbes järgmine:

ORDER BY Company DESC, [E-mail Address]

Märkus.: Vaikimisi sordib Access väärtused tõusvas järjestuses (A–Z, väikseimast suurimani). Laskuvas järjestuses sortimiseks kasutage võtmesõna DESC.

Lisateavet klausli ORDER BY kohta leiate teemast Klausel ORDER BY.

Lehe algusse

Töötamine summeeritud andmetega: GROUP BY ja HAVING

Mõnikord on tarvis töötada summeeritud andmetega, näiteks kuu kogumüügiga või lao kõige kallimate kaupadega. Selleks tuleb SELECT-klausli väljale rakendada kokkuvõttefunktsioon. Kui näiteks soovite, et päring näitaks teile iga ettevõtte kohta salvestatud meiliaadresside arvu, võiks teie SELECT-klausel välja näha järgmine:

SELECT COUNT([E-mail Address]), Company

Saadaolevad kokkuvõttefunktsioonid sõltuvad väljal olevate andmete tüübist või avaldisest, mida soovite kasutada. Lisateavet kokkuvõttefunktsioonide kohta leiate artiklist SQL-i kokkuvõttefunktsioonid.

Väljade määratlemine, mida kokkuvõttefunktsioonis ei kasutata: klausel GROUP BY

Kui kasutate kokkuvõttefunktsioone, tuleb enamasti luua ka klausel GROUP BY. GROUP BY loetleb kõik väljad, millele kokkuvõttefunktsioone ei rakendata. Kui rakendate kokkuvõttefunktsioonid kõigile päringu väljadele, pole vaja klauslit GROUP BY luua.

Klausel GROUP BY järgneb vahetult klauslile WHERE või selle puudumisel vahetult klauslile FROM. Klausel GROUP BY loetleb väljad klauslis SELECT kuvamise järjestuses.

Jätkates eelmise näitega, siis näiteks kui SELECT-klausel rakendab kokkuvõttefunktsiooni väljale Meiliaadress, aga mitte väljale Ettevõte, peaks teie klausel GROUP BY olema umbes järgmine:

GROUP BY Company

Lisateavet klausli GROUP BY kohta leiate teemast Klausel GROUP BY.

Kokkuvõtteväärtuste piiramine rühmitamiskriteeriumiga: klausel HAVING

Kui soovite piirata tulemeid kriteeriumide abil, aga välja, millele te neid rakendada soovite, kasutab kokkuvõttefunktsioon, ei saa te klauslit WHERE kasutada. Selle asemel tuleb kasutada klauslit HAVING. Klausli HAVING tööpõhimõte sarnaneb klausliga WHERE, kuid seda kasutatakse liitandmete korral.

Oletagem, et kasutate SELECT-klausli esimese välja jaoks funktsiooni AVG (mis arvutab keskmise väärtuse).

SELECT COUNT([E-mail Address]), Company

Kui soovite piirata tulemeid vastavalt COUNT-funktsiooni väärtusele, ei saa te seda kriteeriumit kasutada WHERE-klauslis. Selle asemel tuleb kriteerium kirjutada klausliga HAVING. Näiteks kui soovite, et päring tooks read ainult siis, kui ettevõttega on seotud mitu meiliaadressi, võiks teie HAVING-klausel välja näha umbes järgmine:

HAVING COUNT([E-mail Address])>1

Märkus.: Päringul võib olla nii WHERE- kui ka HAVING-klausel – nende väljade kriteeriumid, mida kokkuvõttefunktsioonis ei kasutata, esitatakse WHERE-klauslis ja kokkuvõttefunktsioonis kasutatavate väljade kriteeriumid esitatakse HAVING-klauslis.

Lisateavet HAVING-klausli kohta leiate artiklist Klausel HAVING.

Lehe algusse

Päringutulemite ühendamine: UNION

Kui soovite mitme sarnase valikpäringu tulemeid ühtse hulgana läbi vaadata, saate seda teha tehtemärgi UNION abil.

UNION võimaldab ühendada kaks SELECT-lauset üheks lauseks. Kombineeritavatel SELECT-lausetel peab olema võrdne arv väljundvälju ja need peavad olema samas järjekorras ja sisaldama sama või sarnast tüüpi andmeid. Kuna päringu käivitamisel ühendatakse kummagi tulemi andmed ühel väljundväljal, on päringu väljundil sama arv välju kui igal valikpäringul.

Märkus.: Ühispäringu jaoks on andmetüübid Number ja Tekst ühilduvad.

Tehtemärgi UNION kasutamisel saate võtmesõna ALL abil määrata, kas päringutulemisse tuleks kaasata ka duplikaatread.

Kahte SELECT-lauset ühendava ühispäringu SQL-süntaksi baaskuju on järgmine:

SELECT field_1FROM table_1UNION [ALL]SELECT field_aFROM table_a;

Oletagem näiteks, et teil on tabel nimega Tooted (Products) ja tabel nimega Teenused (Services). Mõlemas tabelis on väljad, mis sisaldavad toote või teenuse nime, hinda, garantiitingimusi ja saadavust ning teavet selle kohta, kas toodet või teenust pakutakse eksklusiivselt. Kuigi toodete tabelis on garantiitingimused ja teenuste tabelis on teave garantiiteenuse kohta, on põhiteave sama (kas tootel või teenusel on kvaliteeditagatis). Nende nelja välja liitmine mõlemast tabelist toimub järgmise ühispäringu abil:

SELECT name, price, warranty_available, exclusive_offerFROM ProductsUNION ALLSELECT name, price, guarantee_available, exclusive_offerFROM Services;

Lisateavet mitme SELECT-lause ühendamise kohta tehtemärgi UNION abil leiate artiklist Mitme valikpäringu ühendamine üheks ühispäringuks.

Lehe algusse

Kas vajate veel abi?

Kas soovite rohkem valikuvariante?

Siin saate tutvuda tellimusega kaasnevate eelistega, sirvida koolituskursusi, õppida seadet kaitsma ja teha veel palju muud.

Kogukonnad aitavad teil küsimusi esitada ja neile vastuseid saada, anda tagasisidet ja saada nõu rikkalike teadmistega asjatundjatelt.