Jos kyselysi eivät toimi tarpeeksi ahkerasti, peruslausekkeiden lisääminen SQL voi auttaa keskittymään tuloksiin. Tarkastellaan joitakin SQL-lausetyyppejä ja lauseita tai osia, joita voit muokata, jotta saat haluamasi tulokset.
Huomautus: Tämä artikkeli ei koske Access-verkkosovelluksia eli tietokantaa, jonka voit suunnitella Accessilla ja julkaista verkossa.
Tämän artikkelin sisältö
Select-lausekkeen luominen
SQL-valintalausekkeessa on 2–3 lausetta. SELECT-lause kertoo tietokannalle, mistä tiedot etsitään, ja pyytää sitä palauttamaan tietyn tuloksen.
Huomautus: SELECT-lausekkeiden lopussa on aina puolipiste (;) joko viimeisen lauseen lopussa tai rivillä sql-lausekkeen lopussa.
Seuraava valintalauseke pyytää Accessia hakemaan tiedot Sähköpostiosoitteet- ja Yritys-sarakkeista Yhteystiedot-taulukosta, josta se löytää "Seattlen" Kaupunki-sarakkeesta.
Yllä olevassa kyselyssä on kolme lausetta SELECT, FROM ja WHERE.
1. SELECT-lause sisältää sarakkeet, jotka sisältävät tiedot, joita haluat käyttää, ja sen jälkeen on operaattori (SELECT) ja kaksi tunnistetta (Sähköpostiosoite ja Yritys). Jos tunnisteessa on välilyöntejä tai erikoismerkkejä (kuten "Sähköpostiosoite"), kirjoita tunniste hakasulkeisiin.
2. FROM-lause tunnistaa lähdetaulukon. Tässä esimerkissä on operaattori (FROM) ja sen jälkeen tunniste (Yhteystiedot).
3. WHERE-lauseke on valinnainen lauseke. Esimerkissä on operaattori (WHERE), jonka perässä on lauseke (City="Seattle").
Lisätietoja valintakyselyistä on artikkelissa Yksinkertaisen valintakyselyn luominen.
Seuraavassa on luettelo yleisistä SQL-lauseista:
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. Seuraavassa on luettelo joistakin yleisistä SQL-termeistä.
SQL-ehto |
Määritelmä |
Esimerkki |
tunniste |
Nimi, jolla tunnistat tietokantaobjektin, kuten sarakkeen nimen. |
[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 |
Jos haluat nähdä vain erilliset arvot. Käytä DISTINCT-avainsanaa SELECT-lauseessa. |
Jos asiakkaasi ovat esimerkiksi useista eri sivutoimipisteistä ja joillakin on sama puhelinnumero ja haluat nähdä puhelinnumeron luettelossa vain kerran, SELECT-lauseke on seuraava:
|
Jos haluat muuttaa tapaa, jolla tunniste näkyy taulukkonäkymässä, voit parantaa luettavuutta. Käytä AS-operaattoria (avainsanaa, joka edustaa toimintoa tai muokkaa toimintoa) SELECT-lauseen kenttätunnuksella. Kentän alias on nimi, jonka määrität kentälle tulosten lukemisen helpottamiseksi. |
|
FROM-lauseen mukauttaminen
Mukauttaminen |
Esimerkki |
Voit käyttää taulukon aliasta tai muuta nimeä, jonka määrität taulukolle valintalausekkeessa. Taulukon alias on hyödyllinen, jos taulukon nimen nimi on pitkä, etenkin jos sinulla on useita kenttiä, joilla on sama nimi eri taulukoista. |
Jos haluat valita tietoja kahdesta kentästä, joista molemmat ovat nimeltään TUNNUS, joista toinen tulee taulukosta tblCustomer ja toinen taulukosta tblOrder:
Määritä FROM-lauseen taulukon tunnukset AS-operaattorin avulla:
Tämän jälkeen voit käyttää näitä taulukon aliaksia SELECT-lauseessa seuraavasti:
|
Liitosten avulla voit yhdistää kahden tietolähteen tietuepareja yhdeksi tulokseksi tai määrittää, sisällytetäänkö tietueet kummasta tahansa taulukosta, jos liittyvässä taulukossa ei ole vastaavaa tietuetta. Yhdistä taulukot siten, että kysely yhdistää taulukoiden kohteet ja jättää pois kohteet, kun toisessa taulukossa ei ole vastaavaa tietuetta |
FROM-lauseke voi näyttää tältä:
|
Tietoja liitosten käyttämisestä
Liitoksia on kahdenlaisia, sisä- ja ulkoliitoksia. Sisäliitokset ovat yleisempiä kyselyissä. Kun suoritat kyselyn, jossa on sisäliitos, tulos näyttää vain ne kohteet, joissa on yhteinen arvo molemmissa yhdistetyissä taulukoissa.
Ulkoliitokset määrittävät, sisällytetäänkö tiedot, jos yhteistä arvoa ei ole. Ulkoliitokset ovat suuntaliitoksia, eli voit määrittää, sisällytetäänkö kaikki liitokseen määritetyn ensimmäisen taulukon (nimeltään vasen liitos) tietueet vai sisällytetäänkö kaikki liitokseen toisen taulukon tietueet (eli oikea liitos). Ulkoliitos sisältää seuraavan SQL-syntaksin:
FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2
Lisätietoja liitosten käyttämisestä kyselyssä on artikkelissa Taulukoiden ja kyselyjen yhdistäminen.
WHERE-lauseen mukauttaminen
WHERE-lause sisältää ehtoja, jotka auttavat rajoittamaan kyselyssä palautettavien kohteiden määrää. Katso esimerkkejä kyselyehdoista ja niiden toiminnasta.
Esimerkki WHERE-peruslausekkeen mukauttamisesta on kyselyn tulosten rajoittaminen. Oletetaan, että haluat paikantaa asiakkaan puhelinnumeron ja muistaa hänen sukunimensä vain Nimellä Bagel. Tässä esimerkissä sukunimet tallennetaan Sukunimi-kenttään, joten SQL-syntaksi on seuraava:
WHERE [LastName]='Bagel'
WHERE-lauseen avulla voit myös yhdistää tietolähteitä sarakkeisiin, joissa on toisiaan vastaavia tietoja, mutta eri tietotyyppejä. Tämä on kätevää, koska et voi luoda liitosta eri tietotyyppejä käyttävien kenttien välille. Käytä toista kenttää toisen kentän ehtona LIKE-avainsanan kanssa. Jos esimerkiksi haluat käyttää Resurssit-taulukon ja Työntekijät-taulukon tietoja, vain silloin, kun Resurssit-taulukon resurssityyppikentässä olevan resurssin tyypin arvo on 3 Työntekijät-taulukon Määrä-kentässä, WHERE-lausekkeesi näyttäisi tältä:
WHERE field1 LIKE field2
Tärkeää: Et voi määrittää ehtoja kentälle, jota käytetään where-lauseen koostefunktion kanssa. Sen sijaan koostettujen kenttien ehdot määritetään HAVING-lauseella.
Mukauttaminen UNION-operaattorin avulla
Käytä UNION-operaattoria, kun haluat nähdä useiden vastaavien valintakyselyjen tulosten yhdistetyn näkymän. Jos tietokannassa on esimerkiksi Tuotteet-taulukko ja Palvelut-taulukko ja molemmissa on kolme kenttää: yksinomainen tarjous tai tuote tai palvelu, hinta, takuu tai takuu. Vaikka Tuotteet-taulukko tallentaa takuutiedot ja Palvelut-taulukko tallentaa takuutiedot, perustiedot ovat samat. Yhdistämiskyselyn avulla voit yhdistää kahden taulukon kolme kenttää seuraavasti:
SELECT name, price, warranty, exclusive_offer
FROM Products UNION ALL SELECT name, price, guarantee, exclusive_offer FROM Services;
Kun suoritat kyselyn, kunkin vastaavan kenttäjoukon tiedot yhdistetään yhdeksi tuloskentäksi. Jos haluat sisällyttää tuloksiin rivien kaksoiskappaleet, käytä ALL-operaattoria.
Huomautus: Valitse-lausekkeessa on oltava sama määrä tuloskenttiä samassa järjestyksessä ja samoilla tai yhteensopivilla tietotyypeillä. Yhdistämiskyselyssä Luku- ja Teksti-tietotyypit ovat yhteensopivia.
Lisätietoja yhdistämiskyselyistä on artikkelissa Useiden kyselyjen yhdistetyn tuloksen tarkasteleminen yhdistämiskyselyn avulla.