Huomautus: Microsoft haluaa tarjota sinulle ajantasaisinta ohjesisältöä mahdollisimman nopeasti omalla kielelläsi. Tämä sivu on käännetty automaation avulla, ja siinä saattaa olla kielioppivirheitä tai epätarkkuuksia. Tarkoitus on, että sisällöstä on sinulle hyötyä. Kertoisitko sivun alareunassa olevan toiminnon avulla, oliko tiedoista hyötyä? Tästä pääset helposti artikkelin englanninkieliseen versioon.
Jos kyselyt eivät toimi riittävän hyvin, voit tarkentaa tuloksia lisäämällä joitakin SQL-peruslauseita. Artikkelissa kerrotaan muutamista SQL-lauseista ja niiden lausekkeista tai osista, joita voit muokata.
Huomautus: Tämä artikkeli ei koske Access-verkkosovelluksia eli tietokantaa, jonka voit suunnitella Accessilla ja julkaista verkossa.
Tämän artikkelin sisältö
SELECT-lauseen luominen
SQL-valintalauseet koostuvat kahdesta tai kolmesta osasta. SELECT-lause kertoo tietokannalle, mistä tietoa etsitään, ja pyytää palauttamaan tietyn tuloksen.
Huomautus: SELECT-lauseet päättyvät aina puolipisteseen (;). Puolipiste merkitään joko viimeisen lausekkeen loppuun tai omalle rivilleen SQL-lauseen loppuun.
Esimerkin valintalause pyytää Accessiä hakemaan tietoa sähköpostiosoitteen ja yrityksen sarakkeista sekä yhteystietojen taulukosta, erityisesti Kaupunki-sarakkeesta, jossa lukee "Seattle".
Edellisessä kyselyssä on kolme lausetta: SELECT, FROM ja WHERE.
1. SELECT-lauseke luettelee sarakkeet, joissa haluamasi tiedot ovat, ja sisältää operaattorin (SELECT), jonka perässä on kaksi tunnistetta (sähköpostiosoite ja yritys). Jos tunnisteessa on välilyöntejä tai erikoismerkkejä, kirjoita tunniste hakasulkeisiin.
2. FROM-lausekkeella tunnistetaan lähdetaulukko. Tässä esimerkissä operaattoria (FROM) seuraa tunniste (Yhteystiedot).
3. WHERE-lauseke on valinnainen lauseke. Esimerkissä on operaattori (WHERE) ja sen perässä lauseke (Kaupunki="Seattle").
Lisätietoja on artikkelissa hakukyselyjä yksinkertaisen kyselyn luominen.
Oheisessa luettelossa mainitaan yleisimmät SQL-lauseet.
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 |
Jokainen SQL-lause koostuu ehdoista. Ohessa luetellaan yleisimmät SQL-ehdot.
SQL-ehto | Määritelmä | Esimerkki |
---|---|---|
tunniste |
Sarakkeen nimi tai muu nimi, jota käytetään tietokantaobjektin tunnistukseen. |
[Sähköpostiosoite] ja yritys |
operaattori |
Avainsana, joka edustaa toimintoa tai tarkentaa sitä. |
AS |
vakio |
Muuttumaton arvo, kuten luku tai NULL. |
42 |
ilmaus |
Tunnisteiden, operaattoreiden, vakioiden ja funktioiden yhdistelmä, joka tuottaa yhden arvon. |
>= Tuotteet.[Yksikköhinta] |
SELECT-lauseen mukauttaminen
Mukauttaminen | Esimerkki |
---|---|
Pelkkien DISTINCT-arvojen näyttö. Käytä DISTINCT-avainsanaa SELECT-lauseessa. |
Jos esimerkiksi asiakkaasi toimivat useissa eri haarakonttoreissa, joillakin on sama puhelinnumero ja haluat näyttää puhelinnumeron tuloksissa vain kerran, SELECT-lause muodostetaan seuraavasti:
|
Luettavuutta voidaan parantaa muuttamalla tunnisteen näyttötapaa taulukkonäkymässä. Käytä SELECT-lauseessa AS-operaattoria (avainsana, joka edustaa toimintoa tai muokkaa toimintoa) sekä kentän aliasta. Kentän aliaksella tarkoitetaan nimeä, joka määritetään kyselyn kentälle, jotta kyselyn tulosta olisi helpompi lukea. |
|
FROM-lauseen mukauttaminen
Mukauttaminen | Esimerkki |
---|---|
Voit käyttää taulukon tunnusta tai eri nimeä, jonka kohdistat taulukkoon valintalauseessa. Taulukon tunnuksesta on apua pitkien taulukon nimien kanssa erityisesti, kun useilla eri taulukoista saaduilla kentillä on sama nimi. |
Tietojen valinta kahdesta ID-nimisestä kentästä, joista toinen on peräisin taulukosta tblAsiakas ja toinen taulukosta tblTilaus:
Käytä AS-operaattoria taulukon tunnuksien määrittämiseen FROM-lauseessa:
Tämän jälkeen SELECT-lauseessa voi käyttää näitä taulukoiden tunnuksia seuraavasti:
|
Käytä liitoksia, kun haluat yhdistää tietuepareja kahdesta tietolähteestä yhteen tulokseen tai määrittää, sisällytetäänkö toisen taulukon tietueet, jos liittyvässä taulukossa ei ole vastaavaa tietuetta. Liitä taulukot niin, että kysely yhdistää molempien taulukoiden kohteet ja sulkee pois kohteet, jos toisessa taulukossa ei ole vastaavaa tietuetta |
FROM-lause voi näyttää tältä:
|
Lisätietoja liitosten käytöstä
Liitostyyppejä on kaksi: sisäliitos ja ulkoliitos. Sisäliitokset ovat yleisimpiä kyselyissä. Kun sisäliitoksen sisältävä kysely suoritetaan, tuloksessa näkyvät vain ne kohteet, joiden kummassakin liitetyssä taulukossa on yhteinen arvo.
Ulkoliitokset määrittävät, sisällytetäänkö tiedot, joissa ei ole yhteisiä arvoja. Ulkoliitoksissa määritetään suunta. Voit siis määrittää, sisällytetäänkö liitokseen ensimmäisen taulukon kaikki tietueet (vasen liitos) tai toisen taulukon kaikki tietueet (oikea liitos). Ulkoliitoksen SQL-syntaksi:
FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2
Saat näkyviin lisätietoja liitosten kyselyn taulukoiden ja kyselyjenavulla.
WHERE-lauseen mukauttaminen
WHERE-lause sisältää ehdot, jotka auttavat rajaamaan kyselyn tuottamien kohteiden määrää. Lisätietoja ehdoista ja niiden toiminnasta on artikkelissa Esimerkkejä kyselyjen ehdoista.
WHERE-peruslausetta voidaan mukauttaa esimerkiksi rajaamalla kyselyn tuloksia. Kun esimerkiksi haluat etsiä asiakkaan puhelinnumeron, mutta muistat ainoastaan tämän sukunimen Bagel. Tässä esimerkissä sukinimet on tallennettu Sukunimi-kenttään. SQL-syntaksi on siis
WHERE [LastName]='Bagel'
WHERE-lausetta käytetään myös silloin, jos halutaan yhdistää sellaisten sarakkeiden tietolähteet, joiden tiedot ovat samat, mutta tyypit eivät. Tämä on kätevää, koska liitosta ei voi luoda kenttien välille, jos niiden tietotyypit ovat erilaiset. Käytä yhtä kenttää toisen kentän ehtona LIKE-avainsanalla. Esimerkissä on WHERE-lause tapauksessa, jossa etsitään tietoja Kalusto- ja Työntekijät-taulukoista vain, kun Kalusto-taulukon kalustotyypin kentän arvo on 3 Työntekijät-taulukon Määrä-kentässä.
WHERE field1 LIKE field2
Tärkeää: Et voi määrittää ehtoja kentälle, jota käytetään koostefunktion kanssa WHERE-lauseessa. Koontikenttien ehdot määritetään sen sijaan HAVING-lauseella.
Mukauttaminen UNION-operaattorilla
Käytä UNION-operaattoria, kun haluat nähdä usean samankaltaisen valintakyselyn tulokset yhdistetyssä näkymässä. Jos tietokannassasi on esimerkiksi Tuotteet- ja Palvelut-taulukot ja kummassakin on kolme kenttää: tuote tai palvelu yksinoikeudella, hinta ja takuu. Vaikka Tuotteet-taulukko tallentaa tuotetakuutiedot ja Palvelut-taulukko palvelutakuutiedot, niiden tiedot vastaavat perustaltaan toisiaan. Nämä kummankin taulukon kolme kenttää voidaan yhdistää esimerkiksi seuraavanlaisella yhdistämiskyselyllä:
SELECT name, price, warranty, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee, exclusive_offer
FROM Services;
Kun suoritat kyselyn, toisiaan vastaavien kenttien tiedot yhdistetään samaan tuloskenttään. Käytä ALL-operaattoria, jos haluat näyttää tuloksissa toistuvat rivit.
Huomautus: Yhdistettävissä SELECT-komennoissa on oltava yhtä monta tuloskenttää, tuloskenttien on oltava samassa järjestyksessä ja niillä on oltava sama tai yhteensopiva tietotyyppi. Yhdistämiskyselyssä Luku- ja Teksti-tietotyypit ovat yhteensopivia.
Lisätietoja yhdistämiskyselyistä on artikkelissa Useiden kyselyjen yhdistetyn tuloksen tarkasteleminen yhdistämiskyselyn avulla.