SQL-kielen perusteet
SQL (Structured Query Language tai SQL Query Language) on ANSI/ISO-standardiin perustuva rakenteinen kyselykieli datan etsimiseen ja noutamiseen tietokannasta. Standardin laajentuessa SQL on laajentunut datan etsimisestä mm. datan lisäämiseen, poistamiseen ja muokkaamiseen, tietokannan rakenteen määrittelyyn, käyttöoikeuksien määrittämiseen ja tapahtumankäsittelyn hallintaan.
SQL-kieli on deklaratiivinen: kielellä kuvataan sitä, mikä on haluttu lopputulos (esimerkiksi mitä tietoa halutaan tietokannasta). Alla on yksinkertaisin esimerkki tietorakenteen sisällön noutamisesta SQL-kielellä:
Kysely kertoo ainoastaan, että taulusta taulu
halutaan hakea kaikki siinä olevat rivit ja sarakkeet. Tietokannanhallintajärjestelmän tehtäväksi jää päättää, millä algoritmilla kysely saadaan suoritettua parhaiten.
Vertaa tämä vastaavaa kysely ns. imperatiiviseen kieleen (esim. C#):
Imperatiivissa kielissä puolestaan kirjoittajan tehtäväksi jää miettimään ja toteuttamaan algoritmi, jonka perusteella tieto haetaan. SQL onkin deklaratiivisena kielenä sopiva tietokannanhallintajärjestelmien ohjaamiseen: sama SQL-kielen kysely voi toimia yhtä hyvin eri tietokannanhallintajärjestelmissä, eikä SQL-kielen oppimiseen tarvita syvää ohjelmoinnin taitoa taikka fyysisten mallien tuntemista.
SQL-kieli ja relaatiomalli
Relaatiomalli on SQL-standardin teoreettinen perusta. Relaatiomallin rakenteille, kuten relaatioille, attribuuteille, monikoille ja eheysrajoitteille (ks. Luku 3.1) on olemassa suorat vastineet SQL-standardissa. SQL:n sanotaan olevan relaationaalisesti täydellinen: se on ilmaisuvoimaltaan niin vahva, että kielen avulla voidaan toteuttaa relaatioalgebran mukaiset operaatiot.
SQL-standardi eroaa relaatiomallista joltain osin. Ensiksi, SQL-standardissa käytetään hieman käytännönläheisempiä käsitteitä kuvaamaan relaatiomallin rakenteita. Alla olevassa taulukossa on kuvattu relaatiomallissa käytetyt termit ja niiden suurpiirteinen vastaavuus SQL:ään.
Relaatiomalli | SQL |
---|---|
Relaatio (relation) | Taulu (table) |
Attribuutti (attribute) | Sarake (column) |
Monikko (tuple) | Rivi (row) |
Tämän lisäksi SQL-standardi osittain poikkeaa toiminnallisesti relaatiomallista. Esimerkiksi relaatiomalli vaatii, että relaation jokainen rivi on erilainen (Luku 3.1, Relaatiomallin ydinominaisuudet). SQL:ssä puolestaan taulun rivien ei tarvitse olla erilaisia, jos perusavainta ei määritetä.
Eri tietokannanhallintajärjestelmät toteuttavat lisäksi SQL-standardia omilla tavoillaan tuoden omia toiminnallisia ja syntaktisia lisämausteitaan, ja jotkut tuotteet jopa jättävät osia SQL-standardista toteuttamatta. Esimerkiksi SQLite:ssa viiteavainten tuoma viite-eheys (Luku 3.1) voi pystyä kytkemään pois päältä tietokantakohtaisesti. Toisena esimerkkinä, SurrealDB laajentaa SQL-kieltä sekoittamalla siihen graafitietokkannoille ominaista kyselykieltä. Eri tietokannanhallintajärjestelmien SQL-toteutuksia sanotaan SQL-murteiksi.
SQL-standardin mukaan SQL-kieli koostuu neljästä eri alikielestä:
- Datan hallintakieli (Data Management Language, DML)
- Rakenteen määrittämisen kieli (Data Definition Language, DDL)
- Valtuuttamisen kieli (Data Control Language, DCL)
- Tapahtumanhallintakieli (Transaction Control Language, TxCL)
Tavallisesti kaikkia neljää kieltä käytetään saman rajapinnan kautta, mutta esimerkiksi käyttöoikeuksien määrittäminen ja tapahtumanhallinta perustuvat vahvasti esitettyyn nelijakoon. Näitä osa-alueita käsitellään myöhemmissä luvuissa.
SQL-lauseet
SQL-lauseeksi kutsutaan SQL-avainsanoista, tietokantaobjektien nimistä ja muuttujien arvoista koostuvaa kokonaisuutta. Perussääntöjä SQL-lauseille ovat:
- Rivityksellä ei ole väliä, eli sama SQL-lause voi jakaa usealle riville.
- SQL-lauseen päättää aina puolipiste
;
. - Kirjainkoolla ei ole merkitystä:
SELECT
jaselect
tulkitaan samalla tavalla. - Taulujen, sarakkeiden, ja muiden tietokantaobjektien nimissä voidaan käyttää vain kirjaimia, numeroita ja alaviivaa (
_
). Välilyöntiä ei sallita, eikä nimi voi alkaa numerolla. - Taulujen, sarakkeiden ja muiden tietokantaobjektien nimet eivät saa olla SQL-kielessä käytettyjä avainsanoja.
Yleisiä SQL-avainsanoja ovat mm.
AS |
COPY |
FROM |
IN |
ON |
LIKE |
NOT |
MIN |
MAX |
NULL |
DROP |
INTO |
SELECT |
SUM |
LOCK |
MOVE |
BEGIN |
AND |
OR |
SET |
WHERE |
TRUE |
WITH |
FALSE |
GRANT |
REVOKE |
DELETE |
TO |
OUT |
USER |
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.