23.1.2017

05 SQL-kielen perusteet

SQL - Structured Query Language





SQL





SQL-kielen historiaa






Tässä materiaalissa esiintyvät SQL-käskyt





DDL ja DML






SQL ohjelmoinnissa





Peruskyselyt


SELECT-kyselyn eri muodot:



SELECT-kysely





SELECT-kyselyn esitystapa ja rakenne


SELECT-kyselyn yleinen muoto:

SELECT c1 [, c2, ... cn] -- valitut sarakkeet

FROM t1 [, t2, ... tm] -- valitut taulut

WHERE [e1] -- kyselyn ehto

GROUP BY [cx] -- ryhmittelyehto

HAVING [e2] -- ryhmittelyn hakuehto

ORDER BY [cy] -- lajitteluehto

-- Kommentit alkavat yleensä kahdella viivalla

/* Monirivinen kommentti onnistuu useissa
tuotteissa näin (mm. MySQL, Oracle, SQL Server) */



GROUP BY / HAVING -huomioita







Puolipiste SQL-kyselyn lopussa ei kuulu standardiin





SQL-kyselyn rivittäminen


SELECT *
FROM henkilo
WHERE sukunimi  = 'Rantala';

-- tai:

SELECT * FROM henkilo WHERE sukunimi  = 'Rantala';

Kirjainkoko SQL-kyselyissä



SELECT * FROM henkilo;

-- tai:

Select * from henkilo;

SELECT * FROM henkilo;

-- ei ole välttämättä sama kuin:

SELECT * FROM Henkilo;
SELECT * FROM henkilo WHERE sukunimi  = 'Rantala';

-- voi palauttaa eri tuloksia kuin

SELECT * FROM henkilo WHERE sukunimi  = 'rantala';


SELECT-perusesimerkkejä


  1. Hae kaikki henkilöt, jotka ovat syntyneet v. 1975:
SELECT *
FROM henkilo
WHERE syntvuosi  = 1975;

  1. DISTINCT suodatttaa/poistaa moninkertaiset esiintymät:

SELECT DISTINCT myyja
FROM tuote;

  1. SELECT-kysely voi sisältää laskentaa sarakkeilla ja sarakkeelle voidaan antaa aliasnimi AS-sidesanalla:
SELECT hinta, hinta * 1.23 AS HintaSisALV, TuoteNimi
FROM tuote;

SELECT / Lajittelu



  1. Haetaan kaikki tuotetiedot, lajittelu nimen mukaan

SELECT *
FROM tuote
ORDER BY TuoteNimi;

  1. Lajittelee ensisijaisesti sukunimen, toissijaisesti etunimen mukaan
    Kolmantena lajitteluperusteena palkka (suurin palkka ensin):

SELECT etunimi, sukunimi, kunta, tutkinto, palkka
FROM henkilo
ORDER BY sukunimi, etunimi, palkka DESC;

Rivien valinta: WHERE-ehto




WHERE-esimerkkejä



SELECT tuote_nimi, hinta
FROM tuote
WHERE hinta BETWEEN 100 AND 1000;



SELECT htun, enimi, snimi
FROM henkilo
WHERE htun > 2134 AND htun < 2884;



SELECT tuote_nimi FROM tuote
WHERE tuote_ryhma LIKE '%levy';


SELECT tuote_nimi, hinta FROM tuote
WHERE tuote_ryhma NOT IN ('tulostimet' , 'skannerit');




NULL-arvot





NULL-arvot



WHERE sarake IS [NOT] NULL;

SELECT tuote_nimi, hinta
FROM tuote
WHERE tuote_nimi IS NOT NULL;











Luku on kooste Ari Hovin kirjasta, Jouni Huotarin materiaalista ja Ari Rantalan täydennyksistä.