Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Samankaltaiset tiedostot
Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

SQL - STRUCTURED QUERY LANGUAGE

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Written by Administrator Monday, 05 September :14 - Last Updated Thursday, 23 February :36

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki

SQLite selvitysraportti. Juha Veijonen, Ari Laukkanen, Matti Eronen. Maaliskuu 2010

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta

HELIA 1 (14) Outi Virkki Tiedonhallinta

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

HELIA 1 (14) Outi Virkki Tiedonhallinta

Kirjasto Relaatiotietokannat Kevät Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

TIETOKANTOJEN PERUSTEET MARKKU SUNI

SELVITYSRAPORTTI LABRA-VERKON MYSQL:n JA PHP:n KÄYTTÖÖNOTOSTA. Jarkko Kähkönen

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ryhmäkirjeen hyödyntäminen

SQL:N PERUSTEET MARKKU SUNI

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta]

Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT

CSE-A1200 Tietokannat

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Tietokannat PERUSMATERIAALI Microsoft Access 2007 Kieliversio: suomi Materiaaliversio 1.0 päivitetty

Tietokannat II -kurssin harjoitustyö

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO

Hakukyselyt: SELECT * FROM taulu WHERE sarake1 = Malli Nimi [WHERE sarake1 LIKE M% ] [WHERE BETWEEN ehto1 AND ehto2] [WHERE sarake1 IN/= (alikysely)]

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

TIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Liitokset - haut useaan tauluun

Harjoitustehtävä 1. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. SQL kysely

SELECT-lauseen perusmuoto

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja.

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

SYÖTTÖPOHJA LUKUJEN SYÖTTÖÖN ERI TARKOITUKSIIN

SQL-kielen perusteet. Tietokantojen perusteet

Maiju Mykkänen Susanna Sällinen

MySQL ja PostgreSQL Seminaarityö

SQL Buddy JAMK Labranet Wiki

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

INTINU13A6 Java sovellukset

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

HELIA 1 (11) Outi Virkki Tiedonhallinta

Relaatiomalli ja -tietokanta

T Testiraportti TR-3. ETL-työkalu

Yhdistäminen. Tietolähteen luominen. Word-taulukko. Joukkokirje, osoitetarrat Työvälineohjelmistot 1(5)

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

17 BUDJETOINTI. Asiakaskohtainen Budjetti Ylläpito-ohjelma. Dafo Versio 10 BUDJETOINTI. Käyttöohje. BudgCust Yleistä

4.1 Frekvenssijakauman muodostaminen tietokoneohjelmilla

Kyselyn yleisrakenne:

Access-kyselyt. Luetteloinnin kehittämispäivä Mia Kujala

Luento 2: Tiedostot ja tiedon varastointi

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Elisa Kassa - Tuotetietojen tuonti järjestelmään (Import products)

OpenOffice.org Base 3.1.0

LINUX-HARJOITUS, MYSQL

TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

HELIA 1 (11) Outi Virkki Tiedonhallinta

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Tietokantojen suunnittelu, relaatiokantojen perusteita

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Tietokantakurssit / TKTL

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, , H.Laine

CSE-A1200 Tietokannat

DOORSin Spreadsheet export/import

Tietokannat II -kurssin harjoitustyö

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-valintaehto. SQL-valintaehto. Opettajien nimet: Opiskelijoiden pääaineet

TIETOJEN TUONTI TIETOKANNASTA + PIVOT-TAULUKON JA OLAP-KUUTION TEKO

ASTERI-OHJELMIEN SQL-ERIKOISKURSSI LUENTOKALVOT

Salasanojen turvallinen tallentaminen KeePass ohjelmalla

HELIA 1 (13) Outi Virkki Tietokantasuunnittelu

Tietotekniikan laitos Käki-projekti TIETOKANTASUUNNITELMA. 1. Johdanto

OUTER JOIN se vanha kunnon kaveri

Oppilaan pikaopas. Project 2013 käyttöliittymä ja näkymät

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta

Kuva 7.2 vastaustaulu harjoitukseen 7.2

3. Taulujen määrittely ja muuttaminen

FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: Tuloksena on taululistassa lueteltujen taulujen rivien

Sisältö. 22. Taulukot. Yleistä. Yleistä

Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

DXL Library ja DXL-kielen olemus. Pekka Mäkinen SoftQA Oy http/

HELIA TIKO-05 1 (15) ICT03D Tieto ja tiedon varastointi Räty, Virkki

Webforum. Version 15.1 uudet ominaisuudet. Päivitetty:

Tietokanta (database)

Pika-aloitusopas. Sisältö: Projektin luominen Projektin muokkaaminen ja hallinnointi Projektin/arvioinnin tulosten tarkastelu

Transkriptio:

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ä. Taulun sarake voidaan määrätä niin, että sen arvot vastaavat saman tai toisen taulun saraketta, yleensä primääriavainta. id etunimi sukunimi työnimike esimies 1 Tuuli Metsäkana 10 NULL 2 Anna Malli 11 1 3 Vistor Aalto 12 2 4 Tiina Niminen 12 2 - - - - - id nimi selvennys 10 Rehtori Johtaa ja suunnittelee 11 Luennoitsija Luennoi, opettaa, selittää 12 Tutkimusapulainen Tekee mitä käsketään Taulukko 4: Henkilökuntataulun työnimike on vierasavain, joka viittaa työnimike-tauluun Esimerkissämme Vistor ja Tiina ovat molemmat tutkimusapulaisia. Voisimme kirjoittaa työnimikkeen ja selvennyksen suoraan henkilökunta-taulun alkioihin, mutta silloin joutuisimme kirjoittamaan työnimikkeen tiedot jokaiseen alkioon erikseen. Tehdään sen sijaan työnimike-sarakkeesta vierasavain: sarakkeeseen taltioidaan nyt numero, joka vastaa toisessa taulussa olevaa idsaraketta. Kun halutaan selvittää Vistorin työnimike, haetaan henkilökunta-taulusta Vistorin tietue ja luetaan työnimike = 10. Sitten haetaan työnimike-taulusta 9

sellaista alkioita, jonka id = 10. Todetaan, että löydetyn alkion nimi on tutkimusapulainen. Vastaavasti vierasavain voi viitata samaankin tauluun: esimies-sarakkeessa on luku, joka viittaa id-sarakkeeseen. Nähdään esimerkiksi, että Annan esimies = 1. Tietue, jossa id = 1, on Tuuli Metsäkana. Tuuli on siis Annan esimies. Haku vierasavaimella Hakurakenteeseen voidaan lisätä lause JOIN. Sen avulla hakukoneelle kerrotaan, mitkä kentät vastaavat toisiaan. Koska nyt käsitellään eri taulujen sarakkeita, on paras kirjoittaa jokaisen sarakkeen nimen eteen myös taulun nimi: table.column. Näin hakukone varmasti tietää, minkä taulun sarakkeesta puhutaan. SELECT henkilökunta.etunimi,henkilökunta.sukunimi FROM henkilökunta JOIN työnimike ON työnimike.id = henkilökunta.työnimike WHERE työnimike.nimi="tutkimusapulainen"; >> Vistor Aalto >> Tiina Niminen Samaan tauluun viitatessa tarvitaan alias JOIN table alias, jotta viittauksen alku- ja loppupää erottuvat toisistaan. SELECT * FROM henkilökunta JOIN henkilökunta pomo ON pomo.id = henkilökunta.esimies WHERE pomo.etunimi = "Tuuli"; >> 2 Anna Malli 11 1 1 Tuuli Metsäkana 10 Koska moni tietue voi viitata samaan kohteeseen, haku voi palauttaa joskus saman alkion monta kertaa. Haetaan esimerkiksi kaikki henkilöt, joilla on alaisia. SELECT pomo.etunimi,pomo.sukunimi FROM henkilökunta JOIN henkilökunta pomo ON pomo.id = henkilökunta.esimies; >> Tuuli Metsäkana >> Anna Malli >> Anna Malli Jos haluat, että kukin alkio voi esiintyä vain kerran, kirjoita SELECT DIS- TINCT. 10

JOIN-lauseita voi olla samassa käskyssä useita. Osaatko sanoa, mitä tämä komento hakee? 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="tik" AND tapahtumat.nimi="sitsit"; 11