Tietokannat SQL-peruskomentojen pikaopas CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); INSERT INTO table VALUES(val1,val2,... ); Lisää tauluun uuden tietueen. INSERT INTO opiskelijat VALUES(968625, Iina, Koillinen ); SELECT col1,col2,... FROM tablename WHERE... ; Hakee annetut ehdot täyttäviä tietueita. SELECT etunimi,sukunimi FROM opiskelijat WHERE opnumero=968625; DELETE FROM table WHERE... ; Kuten SELECT, poistaa haetut tietueet. DELETE FROM opiskelijat WHERE opnumero=968625; DROP TABLE table; Poistaa annetun taulun ja kaikki siinä olevat tietueet! DROP TABLE opiskelijat; Hyödyllinen resurssi SQL-komentojen opetteluun: http://www.w3schools.com/sql/sql_quickref.asp 1
Tietokanta Tietokanta on tietorakenne, johon varastoidaan tietoa järjestettyinä tietueina. Tietokannat ovat tärkeä osa esimerkiksi liiketoiminnan, Internet-palvelujen ja monien jäsenrekisterien hallinnointia. Tietokanta on usein tehokkain tapa varastoida ja käsitellä automaattisesti suuria määriä keskenään samankaltaisista alkioista koostuvaa dataa. Tällä kurssilla käsitellyt tietokannat ovat SQL-relaatiotietokantoja. Tällainen tietokanta koostuu tauluista ja tietueista. Taululla on sarakkeita, jotka vastaavat jotakin tietotyyppiä, kuten opiskelijan etunimeä tai opiskelijanumeroa. Tietue on taulun rivi: se kuvaa kokonaisuutta, kuten opiskelijaa, jolla on omat arvot kussakin sarakkeessa. Taulut siis määrittelevät tietokannan rakenteen, tietueet sisällön. Tietokannan tauluja voi usein tulkita samalla tavalla kuin hyvin järjestettyä Excel-taulukkoa. Ilmeisin ero on, että Excelin kaltaisessa taulukkolaskentaohjelmassa tietojen järjestys on käyttäjän varassa - oikeassa tietokannassa esimerkiksi taulukon ulkopuolelta ei voi valita summittaisesti tyhjää ruutua ja kirjoittaa muistiinpanoja. Tietokanta on Exceliä tehokkaampi ja soveltuu paremmin tietokoneohjelmien ja palveluiden käyttöön. Excel lienee kätevämpi ihmiskäyttäjän toimistotyössä. opnumero etunimi sukunimi koulutusohjelma 801811 Tatu Haavisto TIK 719193 Konstantin Pieninkeroinen ARK 341704 Heli Rautjärvi EST Taulukko 1: Opiskelijatietokannan taulu opiskelijat 2
SQLite Browser -ohje Tällä kurssilla tietokantoja ohjataan SQLite Database Browser 2.0 b1 -ohjelmalla (SQLite Browser). Ohjelma on pakattu harjoitustehtäväkansioon, alikansioon sqlitebrowser. Sitä ei tarvitse asentaa, vaan ohjelman saa käyntiin suoraan ajamalla tiedoston SQLite Database Browser 2.0 b1.exe. Kun käynnistät SQLite Browserin, avaa ensimmäiseksi käsiteltävä tietokantatiedosto työkaluriviltä (Open an existing database file). SQLite Browserilla voi myös luoda uusia tietokantoja (Create a new database file). 3
Kun avaat tietokannan, ohjelma näyttää oletuksena ensimmäistä välilehteä, Database Structure. Tässä tilassa voit selata tietokantarakennetta, eli tietokannan tauluja: Minkä nimisiä tauluja tietokannassa on ja mitä sarakkeita tauluissa on. Tämä siis kertoo missä muodossa tiedot on esitetty. Kuvan tietokannassa on kaksi taulua: opiskelijat ja tapahtumat. 4
Toisella välilehdellä, Browse Data, voit katsella tietokannan sisältöä, eli kussakin taulussa olevia tietueita. Voit vaihtaa katseltavaa taulua välilehden yläosassa Table-valikosta. Tässä näkymässä voit myös lisätä, muokata ja poistaa tietueita. Tällä kurssilla tietokantamuutokset tehdään kuitenkin pääasiassa manuaalisesti kolmannessa välilehdessä. 5
Kolmannen välilehden, Execute SQL, kautta pääset syöttämään komentoja SQL-kielellä. SQL eli Structured Query Language on tietokantojen käsittelyyn tarkoitettu ohjelmointikieli, josta kerrotaan enemmän seuraavassa luvussa. Kirjoita haluamasi komento SQL string-kenttään ja paina Execute query. Data returned-kenttä näyttää tiedot, jotka komennolla löydettiin (jos teit hakukomennon). Jos komennossa on virheitä, virheilmoitukset tulevat Error message-kenttään. 6
SQL SQL, Structured Query Language, on ohjelmointikieli, jota käytetään hallinnoimaan tietokantoja. SQL:llä ei ole käytännöllistä, tai edes mahdollista, ratkaista yleisiä ohjelmointiongelmia. Peruskomentoja SQL:ssä ovat taulujen ja tietueiden lisääminen, haku ja poisto. Taulu Uuden taulun luominen tapahtuu komennolla CREATE TABLE table(col1 type1,col2 type2,... );. Luodaan esimerkkinä uusi taulu henkilökunta : CREATE TABLE henkilökunta (id INTEGER PRIMARY KEY, etunimi TEXT, sukunimi TEXT, työnimike TEXT, ikä INTEGER, huomautukset TEXT ); id etunimi sukunimi työnimike ikä huomautukset Taulukko 2: Uusi henkilökuntataulu Kokonaisen taulun voi poistaa komennolla DROP TABLE table;. Ole varovainen, sillä taulun poistaminen tuhoaa kaikki tauluun säilötyt tietueet. Mitään varmistuskysymyksiä SQL:ssä ei ole - kun komento on annettu, se suoritetaan. Tietue Tauluun lisätään uusi tietue komennolla INSERT INTO table VALUES(value1, value2,... );. Lisätään henkilökuntatauluun esimerkillinen luennoitsija: INSERT INTO henkilökunta VALUES(1,"Anna","Malli","Luennoitsija",35,"Esimerkillinen"); 7
Jos halutaan antaa arvo vain osaan kentistä, täytyy komennossa erikseen luetella, mihin sarakkeisiin tietoa ollaan laittamassa: INSERT INTO henkilökunta (etunimi,sukunimi,työnimike,ikä) VALUES("Vistor","Aalto","Tutkimusapulainen",20); id etunimi sukunimi työnimike ikä huomautukset 1 Anna Malli Luennoitsija 35 Esimerkillinen 2 Vistor Aalto Tutkimusapulainen 20 NULL Taulukko 3: Lisäysten jälkeen taulu näyttää tältä Tyhjäksi jätetyn kentän arvoksi tulee NULL eli tyhjä. Poikkeuksena on primääriavainkenttä, esimerkissämme id. Se on kenttä, johon tietokanta valitsee itse uniikin arvon, ellei sitä erikseen ole annettu. Avaimista kerrotaan myöhemmässä luvussa enemmän. Haku Tietokannasta hakeminen tehdään komennolla SELECT col1,col2,... FROM table WHERE conditions... ; Esimerkiksi seuraava komento hakisi kaikki tiedot henkilökuntataulusta: SELECT * FROM henkilökunta; >> 1 Anna Malli Luennoitsija 35 Esimerkillinen >> 2 Vistor Aalto Tutkimusapulainen 20 NULL SELECT FROM -lauseen ehdollisuuteen käyvät useimmat tavalliset operaattorit kuten =,< ja >. Luonnollisesti ehtoja voi myös yhdistellä AND ja OR -rakenteilla. Muista, että tekstivertailussa täytyy käyttää lainausmerkkejä. SELECT sukunimi,etunimi FROM henkilökunta WHERE ikä<25; >> Aalto Vistor SELECT sukunimi,etunimi FROM henkilökunta WHERE etunimi="anna"; >> Malli Anna SELECT * FROM henkilökunta WHERE sukunimi=työnimike; 8
Hakukomennon perään voi liittää myös ORDER BY column käskyn, jolloin rivit palautuvat tietyn sarakkeen mukaan järjestettyinä. Poistokomento on hyvin samankaltainen kuin haku: DELETE FROM table WHERE conditions... ;. Muista aina olla varovainen poistoja kirjoittaessasi! Avain Tietokantataulussa primääriavain on tietotyyppi, joka on varmasti uniikki kaikilla taulun tietueilla. Esimerkiksi opiskelijanumero voisi toimia opiskelijataulun primääriavaimena. Usein tietokantataululla on kuitenkin primääriavaimena oma sisäinen id, joka ei tarkoita tietokannan ulkopuolella mitään. Avaimien avulla voidaan toteuttaa relaatioita tietueiden välillä. id etunimi sukunimi työnimike huomautukset 1 Anna Malli 10 Esimerkillinen 2 Vistor Aalto 11 NULL - Tiina Teekkari 11 NULL - - - - - Taulukko 4: Henkilökuntataulun työnimike on vierasavain, joka viittaa työnimike-tauluun id nimi selvennys 10 Luennoitsija Luennoi, opettaa, selittää 11 Tutkimusapulainen Tekee mitä käsketään JOIN-lauseita voi olla samassa käskyssä useita: SELECT DISTINCT etunimi,sukunimi FROM opiskelijat JOIN koulutusohjelmat ON opiskelijat.koulutusohjelma=koulutusohjelmat.id JOIN tapahtumailmo ON opiskelijat.opnro=tapahtumailmo.opnro JOIN tapahtumat ON tapahtumailmo.tapahtuma=tapahtumat.id WHERE koulutusohjelmat.tunnus="ark" AND tapahtumat.nimi="sitsit"; Mitä tämä komento hakee? 9