SQL-kielestä
SELECT
Tietojen hakeminen
SELECT-komennolla haetaan taulun tai taulujen tietoja.
SELECT kentät FROM taulu
Esimerkiksi:
SELECT etunimi, sukunimi, kotikunta FROM opiskelijat
| etunimi | sukunimi | kotikunta |
|---|---|---|
| aku | ankka | ankkalinna |
| roope | ankka | ankkalinna |
| mikki | hiiri | ankkalinna |
| milla | magia | noitavuori |
Jos halutaan hakea tietty kenttä kerran tuloksista käytetään DISTINCT määrettä.
SELECT DISTINCT kotikunta FROM opiskelijat
| kotikunta |
|---|
| ankkalinna |
| noitavuori |
Tulosjoukkoa voi järjestää yhden tai useamman kentän avulla ORDER BY (desc|asc) määreen avulla.
SELECT * FROM opiskelijat ORDER BY sukunimi, etunimi
Tietojen rajaaminen
Yleensä ei haluta kaikkia tietoja vaan rajataan tuloksia hakuehtojen perusteella.
SELECT * FROM opiskelijat WHERE etunimi="aku"
| vertailu | syntaksi |
|---|---|
| yhtä suuri kuin | = |
| eri suuri kuin | <> |
| pienempi kuin | < |
| suurempi kuin | > |
| LIKE (teksti) | LIKE '%linna%' |
Useita ehtoja voi yhdistää AND ja OR -operaattorien kanssa.
Funktiot
Funktioiden avulla voidaan hakea tuloksista esimerkiksi suurin, pienin, keskiarvo tai lukumäärä. Funktiolla saataville kentille kannattaa käyttää aliasta jotta tulos helpommin ymmärrettävissä.
Yleisimmät funktiot
| toiminto | esimerkki |
|---|---|
| lukumäärä | SELECT COUNT(opiskelijaID) AS lkm FROM opiskelijat |
| suurin | SELECT MAX(ika) AS vanhin FROM opiskelijat |
| summa | SUM |
| keskiarvo | AVG |
| merkkijonon pituus | LENGTH |
| jakojäännös | % |
JOIN
Kun haetaan kahdesta tai useammasta taulusta tietoja tarvitaan JOIN-kyselyä.
| tyyppi | kuvaus |
|---|---|
| INNER JOIN | haetaan kahden taulun yhteisiä tietoja |
| LEFT JOIN | haetaan kaikki vasemman puolen tiedot ja ne oikeasta taulusta jotka yhteisiä. |
Esimerkki: kaikki asiakkaiden tilaukset
SELECT asiakas.nimi, tilaus.summa FROM asiakas INNER JOIN tilaus ON asiakas.asiakasID=tilaus.asiakasID
GROUP BY
Ryhmittelemällä GROUP BY -operaattorin avulla saadaan haettua esimerkiksi tietyn yrityksen asiakasmäärä. GROUP BY liittyy yleensä kyselyyn jossa käytetään funktioita.
Esimerkki
SELECT asiakas.nimi, sum(tilaus.summa) FROM asiakas INNER JOIN tilaus ON asiakas.asiakasID=tilaus.asiakasID GROUP BY asiakas.nimi
Alikysely
Alikyselyä tarvitaan kun esimerkiksi halutaan esimerkiksi hyödyntää saman taulun sisältöä kyselyssä.
Esimerkki: haetaan tuote jossa hinta taulun pienin hinta:
SELECT nimi FROM tuotteet WHERE hinta = (SELECT MIN(hinta) FROM tuotteet)
INSERT
INSERT-kysely lisää uuden tietueen, mikäli taululla on autoincrement pääavain niin sitä ei tarvitse lisätä kenttien joukkoon.
INSERT INTO asiakas (nimi, puhelin) VALUES ('testi', '040-1231234')
UPDATE
UPDATE-kysely päivittää kenttien tietoja, oleellista muistaa WHERE-ehto!
UPDATE asiakas SET nimi='testi2', puhelin='050-1231234' WHERE asiakasID=10
DELETE
DELETE-kysely poistaa tietueen, oleellista muistaa WHERE-ehto!
DELETE FROM asiakas WHERE asiakasID=10