Opiskele sql-kieltä

JANI JÄRVINEN

lähes kaikki nykyiset tietokantaohjelmistot perustuvat relaatiomalliin. niiden käsittelyyn on luotu oma kielensä, structured query language, tutummin sql. miten sql oikein toimii?

Vaikka tietokantojen hallintaohjelmat ja sovelluskehitysvälineet käyvät yhä visuaalisemmiksi, tarvitaan käsittelyssä yhä tekstipohjaisia komentoja. Tärkein komentokieli on nimeltään sql. Kieli on niin keskeinen osa tietokantoja, että yleisesti puhutaan sql-tietokannoista.

Kielen tunteminen antaa paremmat eväät sekä tietokantasovellusten ohjelmointiin että tietokantojen ylläpitämiseen ja tietojen hakuun. Myös erilaisia raportointivälineitä käyttävälle on sql-taidoista paljon apua.

Sql mahdollistaa tietokannan tietojen haun (”hae kaikki tänä vuonna ostaneet asiakkaat”), tietojen muokkaamisen (”lisää tuote 29 varastoon 2”) sekä tietokannan ylläpidon kannalta merkittävät toimenpiteet.

Sql-kielen opiskelu kannattaa aloittaa varmistamalla, että relaatiotietokantojen tärkeimmät käsitteet ovat tuttuja.

Kaikki lähtee taulusta

Relaatiotietokannoissa kaikki tiedot tallennetaan tauluihin (table), jotka koostuvat riveistä ja kentistä (field) eli taulun sarakkeista. Asiakas-taulun kenttiä voisivat olla vaikkapa nimi, osoite ja puhelinnumero. Kullakin rivillä on yhden asiakkaan tiedot; sql-kielen termein puhutaan yhdestä asiakas-tietueesta (record). Tavallisesti taulun tietueiden määrää ei ole rajattu.

Sql-kielen tunnetuimmat komennot liittyvät tietojen hakuun. SELECT-lauseella hae­taan tietyt ehdot täyttäviä tietueita yhdestä tai useammasta taulusta. Samalla voidaan määritellä tulosten lajittelujärjestys. Asiakastietoja voitaisiin hakea vaikkapa postinumeron perusteella ja järjestää ne nimen mukaan. Listaus 1 kertoo, miltä tällainen SELECT-lause voisi näyttää (kuva 1).

Sql-terminologiassa tällaista lausetta nimitetään kyselyksi (query). Isoilla ja pienillä kirjaimilla ei ole merkitystä, mutta usein tapana on kirjoittaa avainsanat isoin kirjaimin ja muut pienellä. Myös rivitys on vapaata, joten huomio kannattaa kiinnittää helppolukuisuuteen.

Sql-kielen lauseet alkavat aina tietyllä avainsanalla, tässä sanalla SELECT. Tämän jälkeen kerrotaan tuloksena halutut kentät. FROM-sana kertoo sql-tietokannalle, mistä taulusta tietoja halutaan etsiä. Valinnainen WHERE-sana taas määrittelee ne ehdot, joiden on täytyttävä, jotta taulun rivi valittaisiin tulosjoukkoon. ORDER BY -lause kertoo, miten tulokset lajitellaan.

Yksi helppoa, kaksi jo vaikeampaa

Sql-kielen syntaksi on melko yksinkertainen, mutta halutun tuloksen aikaansaamiseksi joutuu toisinaan miettimään hetkisen. SELECT-lause on nopea kirjoittaa, mutta kun taulujen välille on määritelty relaatioita (viittauksia ja suhteita), muodostuvat lauseet jo mutkikkaammiksi.

Kuvassa 2 on esimerkki tauluista, joihin voidaan tallentaa asiakkaiden tilaustietoja. Asiak­kaat-taulusta on viittaus Tilaukset-tauluun, josta edelleen Tuotteet-tauluun. Relaatiotietokantojen ideana on tallentaa kukin tieto vain kertaalleen, ja sql-kieli tukee tätä periaatetta tukemalla niin sanottuja liitoksia (joins). Tietyn asiakkaan tilaukset voitaisiinkin hakea listauksen 2 mukaisella kyselyllä.

On tärkeää, että liitoksia varten täytyy tauluissa olla sopivia avainkenttiä. Listauksessa avaimina ovat Asiakkaat-taulun ID-kenttä ja Tilaukset-taulun Asiakas-kenttä. Avaimina kannattaa useimmiten käyttää kokonaislukuja (integer), sillä näin saavutetaan parempi suorituskyky.

Sql-kieli tukee myös yksinkertaista laskentaa. Esimerkiksi tilattu tuotemäärä voidaan kertoa yksikköhinnalla, jolloin saadaan tilauksen kokonaisarvo. Lennossa tapahtuvasta laskennasta on paljon apua, sillä tilauksen loppusummaa ei tarvitse tallentaa tietokantaan.

Lisää, poista, muokkaa

Kyselyiden tekeminen tietokantaan on hyödyllistä vasta kun tietokantaan on ensin syötetty tietoja. Sovellusohjelmissa tietojen käsittely tapahtuu usein graafisella lomakkeella ja muutamalla painonapilla, mutta taustalla nämä ohjelmat luovat sql-lauseita, jotka tietokantaohjelmisto sitten käsittelee.

Sql-kielen tiedon muokkaukseen tarkoitetut lauseet ovat nimeltään INSERT, UPDATE sekä DELETE. INSERT-lause mahdollistaa tietojen lisäämisen haluttuun tauluun yksi tietue kerrallaan. UPDATE- ja DELETE-lauseet taas mahdollistavat tietojen muokkaamisen ja poiston WHERE-ehtoihin perustuen. Nämä ehdot ovat samantyyppisiä kuin SELECT-lauseellakin.

Listaus 3 näyttää esimerkin INSERT-lauseesta. INTO-sana määrittelee kohteena olevan taulun, jonka jälkeen sulkuihin kirjoitetaan ne kentät, joihin tietoa halutaan lisätä. Oletuksena sql-tietokannat toimivat siten, että kenttien tiedot voivat olla tyhjiäkin. Valittujen kenttien arvot syötetään VALUES-avainsanan jälkeen.

UPDATE-lause (listaus 4) tarvitsee kohdetaulun, jonka tietoja ollaan muokkaamassa. SET-avainsanan jälkeen kerrotaan päivitettävät kentät ja niiden uudet arvot. WHERE-ehdolla päivitys voidaan määrätä vaikuttamaan vain tiettyihin riveihin. Jos ehto jätetään pois, koskee muutos kaikkia taulussa olevia tietueita.

DELETE-lause on vieläkin yksinkertaisempi. Sille kerrotaan haluttu taulu, josta tiedot poistetaan. Kannattaa olla tarkkana, ettei tuhoa taulun kaikkia tietoja kerralla. Näin käy, jos WHERE-ehtoa ei muista syöttää DELETE-lauseen loppuun.

Tietokannan ylläpitoa

Varsinkin tietokannan ylläpitäjät tarvitsevat myös mahdollisuuden määritellä tauluja, antaa käyttäjille käyttöoikeuksia sekä luoda vaikkapa hakuja nopeuttavia indeksejä tietokantaan.

Siinä missä tiedon hakuun ja muokkaamiseen liittyvät lauseet ovat pitkälti samanlaisia tietokantojen välillä, on tietokannan itsensä muokkaamisessa paljon eroja ohjelmistojen välillä. Lause joka toimii Microsoftin Sql Serverissä ei välttämättä toimi Oraclessa lainkaan, ja päinvastoin. Tietokannan dokumentaatio onkin syytä pitää lähettyvillä sql-kieltä opiskeltaessa.

Kaksi yleisintä lausetta alkavat CREATE- tai DROP-avainsanoilla. Edellisen avulla luodaan uusia tauluja (CREATE TABLE), indeksejä ja näkymiä (views), kun taas jälkimmäisellä nämä voidaan poistaa. Tarkkuutta vaaditaan tässäkin, sillä huolimaton DROP TABLE -komennon ajaminen voi johtaa isoon katastrofiin.

Ongelmatilanteiden välttämiseksi tietokannan ylläpitäjä voi rajoittaa käyttäjien oikeuksia. Tämä tehdään GRANT- ja REVOKE-lausein. GRANT-lauseella voidaan tietylle käyttäjälle tai käyttäjäryhmälle antaa esimerkiksi luku-, muttei poisto-oikeuksia tietyn taulun tietoihin.

Viimeinen tärkeä sql-lauseiden ryhmä liittyy transaktioiden (transaction) käsittelyyn. Transaktio on joukko tapahtumia, jotka joko onnistuvat tai epäonnistuvat kaikki yhdessä. Klassinen esimerkki on tilisiirto kahden pankkitilin välillä. Ensi lähtötililtä poistetaan siirrettävä summa, joka sitten lisätään kohdetilille. Transaktioiden käyttö mahdollistaa onnistumisen varmistamisen: tietokantavirheen sattuessa kummankaan tilin tietoja ei päivitetä.

Transaktion aloittaminen tapahtuu lauseella BEGIN WORK. Tämän jälkeen suoritetaan halutut operaatiot, esimerkiksi tiedon lisääminen ja poisto. COMMIT-lause kertoo tietokannalle, että tärkeät operaatiot on nyt suoritettu. Jos COMMIT onnistuu, tietokanta takaa, että muutokset on tallennettu pysyvästi. Vastakohta on ROLLBACK-komento.

Maksutonta kokeilua

Vaikka englannin kieltä muistuttava Structured Query Language on lähtöisin 1970-luvulta, sillä on runsaasti käyttöä. Tietokantoja ei käsitellä juuri muuten kuin sql:n avulla, vaikka suoran ohjelmakoodin suoritus ja xml-pohjaiset kyselykielet tekevät tuloaan.

Sql-kielen opiskelun voi aloittaa maksuttomien tuotteiden avulla. Oheisesta taulukosta löytyy eräitä sql:ää tukevia ohjelmistoja, joista useista löytyy joko kokeilu- tai kokonaan maksuton versio. Sql-kieleen tutustuminen kannattaa, vaikka käyttäisi pääasiassa graafisia välineitä. Jotkin asiat on tehokkainta suorittaa muutaman rivin mittaisella komennolla.


Sql-kieltä tukevia tietokanta­ohjelmistoja

• Borland Interbase
• IBM DB2
• Microsoft Access
• Microsoft Sql Server
• Mysql
• Oracle
• Pervasive Psql
• Postgresql
• Sybase Adaptive Server Enterprise

 

Tagit: -
Lähetä Tulosta Tilaa RSS-syöte
Takaisin ylös

Tietokone 5/2012 julkaisupäivä 16.5.2012

Katse näyttöön

Edessäsi ole oleva näyttö on kovin erilainen kuin ei-kovin-kauan-sitten yleisimmin käytetyt kuvaputkinäytöt. Eikä kehitys pysähdy. Toukokuun Tietokoneessa katsotaan näyttöjen tulevaisuuteen ja myös testataan terävät 27-tuumaiset näytöt. Ensituntumaa otetaan tulevan Windowsin palvelinversiosta. Vinkkejä tarjotaan muun muassa pc-hygienian ylläpitoon.

Takaisin ylös

Tietokone 4/2006

Lehden uusimmat numerot ovat vain tilaajien luettavissa. Vanhemmat numerot ovat vapaasti kaikkien luettavissa.

Voit myös ostaa Tietokoneen digilehden.

TTL ry
Pieni kirjapuoti
Takaisin ylös