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