Kirjaudu sisään Microsoft-tilillä
Kirjaudu sisään tai luo tili.
Hei,
Käytä toista tiliä.
Sinulla on useita tilejä
Valitse tili, jolla haluat kirjautua sisään.
Accessin SQL: peruskäsitteet, sanasto ja syntaksi

Tietojen hakemiseen tietokannasta käytetään SQL-kieltä (Structured Query Language). SQL on tietokonekieli, joka muistuttaa läheisesti englantia mutta jota tietokoneohjelmat ymmärtävät. Jokainen suorittamasi kysely suoritetaan SQL-kielellä.

Kun ymmärrät SQL:n toimintaa, voit luoda parempia kyselyitä. Se auttaa myös ymmärtämään, miten voit korjata kyselyä, jos se ei palauta haluamiasi tuloksia.

Tämä artikkeli kuuluu Access SQL:ää käsittelevään artikkelisarjaan. Tässä artikkelissa kuvataan SQL:n peruskäyttö tietojen valitsemiseen ja käytetään esimerkkejä SQL-syntaksin esittämiseen.

Artikkelin sisältö

Mikä SQL on?

SQL on tietokonekieli faktajoukkojen ja niiden välisten suhteiden käsittelyyn. Relaatiotietokantaohjelmat, kuten Microsoft Office Access, käsittelevät tietoja SQL:n avulla. Toisin kuin monia tietokonekieliä, SQL:ää ei ole edes vasta-alkajan vaikea lukea ja ymmärtää. Kuten useat tietokonekielet, SQL on kansainvälinen standardi, jonka ovat tunnustaneet eri standardointielimet, kuten ISO ja ANSI.

SQL:n avulla kuvaillaan tietojoukkoja, joiden avulla voit vastata kysymyksiin. Kun käytät SQL:ää, sinun on käytettävä oikeaa syntaksia. Syntaksi on sääntöjoukko, jonka perusteella kielen elementtejä yhdistetään oikein. SQL-syntaksi perustuu englannin kielen syntaksiin ja käyttää monia samoja elementtejä kuin Visual Basic for Applications (VBA) -syntaksi.

Esimerkiksi yksinkertainen SQL-lause, joka hakee nimiluettelon yhteystiedoista, joissa etunimenä on Mary, voi näyttää esimerkiksi tältä:

SELECT Last_Name
FROM Contacts
WHERE First_Name = 'Mary';

Huomautus: SQL:ää ei käytetä vain tietojen muokkaamiseen vaan myös tietokantaobjektien kuten taulukoiden rakenteen luomiseen ja muuttamiseen. Tietokantaobjektien luomiseen ja muuttamiseen tarkoitettua SQL:n osaa kutsutaan DDL:ksi (data definition language). Tässä artikkelissa ei käsitellä DDL:ää. Lisätietoja on artikkelissa Taulukoiden tai indeksien luominen tai muokkaaminen määrityskyselyn avulla.

SELECT-lausekkeet

SQL:n SELECT-lausekkeella kuvaillaan tietojoukko. SELECT-komento sisältää täydellisen kuvauksen tietojoukosta, jonka haluat hakea tietokannasta. Tämä sisältää seuraavat:

  • Mitkä taulukot sisältävät halutut tiedot.

  • Miten muissa lähteissä olevat tiedot liittyvät näihin tietoihin.

  • Mistä kentistä tai millä laskutoimituksilla tiedot saadaan.

  • Ehdot, jotka tiedoilta edellytetään, jotta ne otetaan mukaan tuloksiin.

  • Tieto siitä, lajitellaanko tiedot vai ei.

SQL-lauseet

Kuten virkkeissä, myös SQL-lauseissa on lausekkeita. Kukin lauseke suorittaa SQL-lauseen jonkin toiminnon. SELECT-lause edellyttää tiettyjä lausekkeita. Seuraavassa taulukossa on lueteltu yleisimmät SQL-lausekkeet.

SQL-lause

Kuvaus

Pakollinen

SELECT

Määrittää kentät, joissa on halutut tiedot.

Kyllä

FROM

Määrittää taulukot, joissa on SELECT-lauseessa mainitut kentät.

Kyllä

WHERE

Määrittää kenttätason ehdot, jotka kunkin tulokseen sisällytettävän tietueen on täytettävä.

Ei

ORDER BY

Määrittää tulosten lajittelutavan.

Ei

GROUP BY

Määrittää koostefunktioita sisältävässä SQL-komennossa kentät, joista SELECT-lause ei tee yhteenvetoa.

Vain jos tällaisia kenttiä on.

HAVING

Määrittää koostefunktioita sisältävässä SQL-lauseessa ehdot, jotka liittyvät kenttiin, joista SELECT-lause tekee yhteenvedon.

Ei

SQL-ehdot

Kukin SQL-lause koostuu ehdoista, joita voi verrata puheen osiin. Seuraavassa taulukossa esitellään SQL-ehtojen tyypit.

SQL-ehto

Puheen verrattava osa

Määritelmä

Esimerkki

tunniste

substantiivi

Nimi, jonka avulla tunnistetaan tietokantaobjekti, kuten kentän nimi.

Asiakkaat.[Puhelinnumero]

operaattori

verbi tai adverbi

Avainsana, joka edustaa toimintoa tai tarkentaa sitä.

AS

vakio

substantiivi

Muuttumaton arvo, kuten luku tai NULL.

42

ilmaus

adjektiivi

Tunnisteiden, operaattoreiden, vakioiden ja funktioiden yhdistelmä, joka tuottaa yhden arvon.

>= Tuotteet.[Yksikköhinta]

Sivun alkuun

Tavallisia SQL-lausekkeita: SELECT, FROM ja WHERE

SQL-lauseen yleinen muoto:

SELECT field_1
FROM table_1
WHERE criterion_1
;

Huomautukset: 

  • Access jättää huomioimatta SQL-lauseen rivinvaihdot. SQL-lause kannattaa kuitenkin kirjoittaa yhdelle riville, koska se helpottaa lauseen lukemista itsesi ja muidenkin kannalta.

  • Jokainen SELECT-lauseke päättyy puolipisteeseen (;). Puolipiste voi olla joko viimeisen lauseen lopussa tai omalla rivillään SQL-lausekkeen lopussa.

Esimerkki Accessissa

Seuraavassa kuvataan, miltä yksinkertaisen valintakyselyn SQL-lause voi näyttää Accessissa:

SQL-objektivälilehti, jossa näkyy SELECT-komento

1. SELECT-lauseke

2. FROM-lauseke

3. WHERE-lauseke

Tämä SQL-esimerkkilause tarkoittaa ”Valitse tiedot, jotka on tallennettu kenttiin nimeltä E-mail Address ja Company taulusta nimeltä Contacts, ja erityisesti ne tietueet, joissa City-kentän arvo on Seattle.”

Katsotaan esimerkkiä lauseke kerrallaan, jotta näet, miten SQL-syntaksi toimii.

SELECT-lauseke

SELECT [E-mail Address], Company

Tämä on SELECT-lauseke. Se koostuu operaattorista (SELECT), jonka perässä on kaksi tunnistetta ([E-mail Address] ja Company).

Jos tunniste sisältää välilyöntejä tai erikoismerkkejä (kuten ”E-mail Address”), se on kirjoitettava hakasulkeisiin.

SELECT-lausekkeessa ei tarvitse määrittää, mitkä taulukot sisältävät kentät, eikä siinä voida määrittää ehtoja, jotka tietojen on täytettävä, jotta ne otetaan mukaan tuloksiin.

SELECT-lauseke on SELECT-lauseessa aina ennen FROM-lauseketta.

FROM-lauseke

FROM Contacts

Tämä on FROM-lauseke. Se koostuu operaattorista (FROM), jonka perässä on tunniste (Contacts).

FROM-lausekkeessa ei luetella valittavia kenttiä.

WHERE-lauseke

WHERE City="Seattle"

Tämä on WHERE-lauseke. Se koostuu operaattorista (WHERE), jonka perässä on lauseke (City=”Seattle”).

Huomautus: Toisin kuin SELECT- ja FROM-lausekkeet, WHERE-lauseke ei ole SELECT-lauseen pakollinen osa.

Voit suorittaa useita SQL:n mahdollistamia toimintoja käyttämällä SELECT-, FROM- ja WHERE-lausekkeita. Lisätietoja näiden lausekkeiden käyttämisestä on näissä lisäartikkeleissa:

Sivun alkuun

Tulosten lajittelu: ORDER BY

Kuten Microsoft Excelissä, myös Accessissa voit lajitella kyselytulokset taulukkonäkymässä. ORDER BY -lausekkeella voit lisäksi määrittää kyselyssä sen, kuinka haluat lajitella tulokset, kun kysely suoritetaan. Jos käytät ORDER BY -lauseketta, se sijoitetaan SQL-lauseen viimeiseksi lausekkeeksi.

ORDER BY -lauseke luettelon kentistä, joiden perusteella haluat lajittelun tehdä. Kentät kirjoitetaan siihen järjestykseen, jossa lajittelu halutaan tehdä.

Oletetaan, että haluat lajitella tulokset ensin Company-kentän mukaan laskevassa järjestyksessä ja sen jälkeen E-mail Address -kentän mukaan nousevassa järjestyksessä, jos Company-kentän tietyllä arvolla on useita tuloksia. ORDER BY -lausekkeesi näyttäisi silloin seuraavankaltaiselta:

ORDER BY Company DESC, [E-mail Address]

Huomautus: Oletusarvon mukaan Access lajittelee arvot nousevaan järjestykseen (A–Z, pienimmästä suurimpaan). Käytä DESC-avainsanaa, jos haluat sen sijaan lajitella arvot laskevassa järjestyksessä.

Saat lisätietoja ORDER BY -lausekkeesta ohjeaiheesta ORDER BY -lauseke.

Sivun alkuun

Yhteenvedettyjen tietojen käsittely: GROUP BY ja HAVING

Joskus tarvitaan yhteenvetotietoja, kuten kuukauden kokonaismyynti tai varaston kalliimmat nimikkeet. Voit tehdä tämän käyttämällä KOOSTE-funktio-kenttää SELECT-lausekkeessa. Jos haluat esimerkiksi kyselyn, joka näyttää kunkin yrityksen sähköpostiosoitteiden yhteenlasketun määrän, SELECT-lausekkeesi voisi näyttää tältä:

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

Koostefunktioita on käytettävissä kentän tietotyypin tai käytettävän lauseen mukaan. Lisätietoja käytettävissä olevista koostefunktioita on artikkelissa SQL-koostefunktiot.

Koostefunktiosta pois jätettävien kenttien määrittäminen: GROUP BY -lauseke

Kun käytät koostefunktioita, sinun on yleensä luotava myös GROUP BY -lauseke. GROUP BY -lausekkeessa luetellaan kaikki kentät, joita ei oteta mukaan koostefunktioon. Jos käytät koostefunktiota kyselyn kaikille kentille, sinun ei tarvitse luoda GROUP BY -lauseketta.

GROUP BY -lauseke kirjoitetaan heti WHERE-lausekkeen perään tai FROM-lausekkeen perään, jos WHERE-lauseketta ei ole. GROUP BY -lausekkeessa luetellaan kentät samalla tavalla kuin ne ovat SELECT-lausekkeessa.

Jatketaan käyttäen edellistä esimerkkiä. Jos SELECT-lausekkeessasi käytetään koostefunktiota [E-mail Address] -kenttään mutta ei Company-kenttään, GROUP BY -lausekkeesi muistuttaisi seuraavaa:

GROUP BY Company

Saat lisätietoja GROUP BY -lausekkeesta ohjeaiheesta GROUP BY -lauseke.

Koostearvojen rajoittaminen käyttämällä ryhmän ehtoja: WHERE-lauseke

Jos haluat rajoittaa tuloksia ehtojen avulla, mutta kenttää, johon haluat käyttää ehtoja, käytetään koostefunktiossa, et voi käyttää WHERE-lauseketta. Sen sijaan sinun pitää käyttää HAVING-lauseketta. HAVING-lauseke toimii kuten WHERE-lauseke, mutta sitä käytetään kootuille tiedoille.

Oletetaan, että käytät AVG-funktiota (joka laskee keskiarvon) SELECT-lausekkeen ensimmäisessä kentässä:

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

Jos haluat, että kysely rajoittaa tuloksia kyseisen COUNT-funktion arvon perusteella, et voi käyttää ehtoja tälle kentälle WHERE-lausekkeessa. Kirjoita ehdot sen sijaan HAVING-lausekkeeseen. Jos esimerkiksi haluat kyselyn palauttavan rivejä, jos yritykselle on määritetty enemmän kuin yksi sähköpostiosoite, HAVING-lauseke voisi näyttää seuraavalta:

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

Huomautus: Kyselyssä voi olla WHERE-lauseke ja HAVING-lauseke. Tällöin ehdot kentille, joita ei käytetä koostefunktiossa, sijoitetaan WHERE-lausekkeeseen, ja koostefunktiossa käytetyt kentät sijoitetaan HAVING-lausekkeeseen.

Saat lisätietoja HAVING-lausekkeesta ohjeaiheesta HAVING-lauseke.

Sivun alkuun

Kyselytulosten yhdistäminen: UNION

Jos haluat tarkastella kaikkia useiden samanlaisten SELECT-kyselyiden palauttamia tietoja yhdistettynä joukkona, käytä UNION-operaattoria.

UNION-operaattorin avulla voit yhdistää kaksi SELECT-lausetta yhdeksi lausekkeeksi. Yhdistettävien SELECT-lausekkeiden tuloskenttien määrän on oltava samassa järjestyksessä ja tietotyyppien on oltava samat tai yhteensopivat. Kun suoritat kyselyn, kunkin vastaavan kenttäjoukon tiedot yhdistetään yhdeksi tuloskentäksi, jotta kyselyn tuloste sisältää saman määrän kenttiä kuin kussakin valintalausekkeessa.

Huomautus: Yhdistämiskyselyssä Luku- ja Teksti-tietotyypit ovat yhteensopivia.

Kun käytät UNION-operaattoria, voit ALL-avainsanan avulla määrittää, tuleeko kyselytuloksissa olla rivien mahdollisia kaksoiskappaleita.

Kaksi SELECT-lausetta yhdistävän yhdistämiskyselyn SQL-perussyntaksi on seuraava:

SELECT field_1
FROM table_1
UNION [ALL]
SELECT field_a
FROM table_a
;

Oletetaan esimerkiksi, että sinulla on Products- ja Services-nimiset taulukot. Kummassakin taulukossa on kentät, joissa on tuotteen tai palvelun nimi, hinta, takuuaika ja tieto tuotteen tai palvelun tarjoamisesta yksinoikeudella. Vaikka Products-taulukko tallentaa tuotetakuutiedot ja Services-taulukko tallentaa palvelutakuutiedot, niiden tiedot vastaavat perustaltaan toisiaan (sisältyykö tiettyyn tuotteeseen tai palveluun laatulupaus vai ei). Nämä kummankin taulukon neljä kenttää voidaan yhdistää esimerkiksi seuraavanlaisella yhdistämiskyselyllä:

SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services
;

Saat lisätietoja SELECT-lauseiden yhdistämisestä UNION-operaattorilla artikkelista Useiden valintakyselyiden tulosten yhdistäminen yhdistämiskyselyn avulla.

Sivun alkuun

Tarvitsetko lisäohjeita?

Haluatko lisää vaihtoehtoja?

Tutustu tilausetuihin, selaa harjoituskursseja, opi suojaamaan laitteesi ja paljon muuta.

Osallistumalla yhteisöihin voit kysyä kysymyksiä ja vastata niihin, antaa palautetta sekä kuulla lisää asiantuntijoilta, joilla on runsaasti tietoa.

Oliko näistä tiedoista hyötyä?

Kuinka tyytyväinen olet käännöksen laatuun?
Mikä vaikutti kokemukseesi?
Kun valitset Lähetä, palautettasi käytetään Microsoftin tuotteiden ja palveluiden parantamiseen. IT-järjestelmänvalvojasi voi kerätä nämä tiedot. Tietosuojatiedot.

Kiitos palautteesta!

×