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



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

SELECT-lauseen perusmuoto

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

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

Liitokset - haut useaan tauluun

SQL - STRUCTURED QUERY LANGUAGE

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

Kyselyn yleisrakenne:

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

Koostefunktiot. Viisi standardifunktiota: Esim. montako henkilöä on henkilo-taulussa:

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

OUTER JOIN se vanha kunnon kaveri

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

CSE-A1200 Tietokannat

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

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

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

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

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

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

KOOSTEFUNKTIOT. Viisi standardifunktiota: Esim. montako henkilöä on henkilo-taulussa:

Kyselyt: Lähtökohtana joukko lukuja Laskukaava kertoo miten luvuista lasketaan tulos soveltamalla laskentaoperaatioita

Kirjoita jokaiseen erilliseen vastauspaperiin kurssin nimi, tenttipäivä, oma nimesi (selkeästi), opiskelijanumerosi ja nimikirjoituksesi

Relaatioalgebra. Kyselyt:

HELIA 1 (14) Outi Virkki Tiedonhallinta

joukko operaatioita, joilla relaatioista voidaan muodostaa uusia relaatioita joukko opin perusoperaatiot yhdiste, erotus, ristitulo, leikkaus

CSE-A1200 Tietokannat

Kuva 7.2 vastaustaulu harjoitukseen 7.2

SQL:N PERUSTEET MARKKU SUNI

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Relaatioalgebra. Relaatioalgebra. Relaatioalgebra. Relaatioalgebra - erotus (set difference) Kyselyt:

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

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

Helsingin yliopisto/ tktl DO Tietokantojen perusteet, s 2000 Relaatioalgebra Harri Laine 1. Relaatioalgebra

CS-A1150 Tietokannat CS-A1150 Tietokannat / 39

HELIA 1 (11) Outi Virkki Tiedonhallinta

Tällä viikolla. Kotitehtävien tarkistus Upotettu SQL Indeksi-harjoitus täydennetään pelifirman tietokantamallia SQL-tehtäviä

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

2. Haet työntekijöiden tiedot etunimen mukaan nousevasti järjestettyinä. (ORDER BY) SELECT * FROM employees ORDER BY firstname ASC;

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2000 SQL- osa Harri Laine 1. SQL-valintaehto. SQL-valintaehto.

VINKKI: Katso Kentät Muistioon -painikkeella, mikä on taulukon nimen oikea kirjoitusasu.

Helsingin yliopisto/ tktl D Tietokantojen perusteet, s 2000 Relaatioalgebra. Harri Laine 1. Relaatioalgebra.

CS-A1150 Tietokannat CS-A1150 Tietokannat / 34

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

Esimerkki. pankkien talletus- ja lainatietokanta: Yhdiste, leikkaus, erotus ym. Leikkaus (intersect) Yhdiste (Union) Erotus (except/minus) Leikkaus

Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, tentin päiväys, oma nimesi, syntymäaikasi ja nimikirjoituksesi.

CS-A1150 Tietokannat CS-A1150 Tietokannat / 34

Yhdiste, leikkaus, erotus ym.

Relaation tyhjyyden testaaminen

Relaatiomalli ja -tietokanta

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

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

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

4.1 Yleistä SQL:stä 4.2 SQL-lauseet 4.3 DML: datan hallinta 4.4 DDL: rakenteen määrittäminen 4.5 DCL: valtuuttaminen 4.6 TxCL: tapahtumanhallinta

HELIA 1 (17) Outi Virkki Tiedonhallinta

HAAGA-HELIA heti09 1 (27) ICT05 Tiedonhallinta ja tietokannat O.Virkki Relaatiomalli

HAAGA-HELIA TIKO-05 1 (19) ICT23a Tietokannan suunnittelu ja toteutus O.Virkki

Alkioiden x ja y muodostama järjestetty pari on jono (x, y), jossa x on ensimmäisenä ja y toisena jäsenenä.

HELIA SQL-harjoituksia 1(1) atk72d Versiopvm:

HELIA 1 (15) Outi Virkki Tiedonhallinta

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

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

Vain valitut kentät: SELECT Päivämäärä, Laskutusnimi, [ale mk], Loppusumma FROM Laskuotsikot

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

TIETOKANNAT JOHDANTO

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2007 SQL:n perusteet. Harri Laine 1. SQL tietokantakieli. SQL tietokantakieli

Makrojen mystinen maailma lyhyt oppimäärä

Tietomallit. Näkökulmat tietoon. Näkökulmat tietoon. Mitä malleja olisi tarjolla? Abstraktiotasot tiedon käsittelyssä

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

Tietokannat II -kurssin harjoitustyö

2. Käsiteanalyysi ja relaatiomalli

Harjoitustehtävä 1. Harjoitustehtävän 1 ratkaisu. Harjoitustehtävä 1. Relaatioalgebra -liitokset (join) Liitos

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

Opiskeluoikeuksien maaran tiedonkeruu

TIETOKANTOJEN PERUSTEET MARKKU SUNI

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

Olkoon R X Y. Sen käänteisrelaatio R 1 on joukosta Y joukkoon X määritelty relaatio, jonka laki on. yr 1 x xry.

Helsingin yliopisto/tktl Kyselykielet, s 2006 Optimointi Harri Laine 1. Kyselyn optimointi. Kyselyn optimointi

Metropolia ammattikorkeakoulu TU00BS : ICT-teknologiaosaaminen Tuntitehtävät 7 Pasi Ranne

TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI

4.3.4 SQL kyselyt... 45

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 relaatiomalli Harri Laine 1.

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

Helsingin yliopisto/tktl Kyselykielet, s 2006 Relaatiokalkyylit. Harri Laine 1

D B. Kyselyjen käsittely ja optimointi. Kyselyn käsittelyn vaiheet:

Olkoon R X Y. Sen käänteisrelaatio R 1 on joukosta Y joukkoon X määritelty relaatio, jonka laki on. yr 1 x xry.

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

Tietokantojen suunnittelu, relaatiokantojen perusteita

Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukko oppi aksiomaattisesti.

TIEDONHALLINTA - SYKSY Luento 2. Pasi Ranne /8/17 Helsinki Metropolia University of Applied Sciences

NORMALISOINTI TIETOJEN MALLINNUS JOUNI HUOTARI & ARI HOVI

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

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Relaatiomallin peruskäsitteet Harri Laine 1. Relaatiotietokannat DONOTP

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

Metropolia ammattikorkeakoulu TX00CN : Tiedonhallinta Tuntitehtävät 4 opettaja: Pasi Ranne

Virta_Latausraportti - Tarkistukset

Lisätään avainarvo 1, joka mahtuu lehtitasolle:

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

Transkriptio:

Monen taulun kyselyt FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: SELECT <sarakelista> FROM <taululista> Tuloksena on taululistassa lueteltujen taulujen rivien karteesinen tulo Karteesista tuloa muodostettaessa kutakin taulun riviä käsitellään kokonaisuutena joukko-opillisena alkiona. Karteesisessa tulossa ovat mukana kaikki mahdolliset alkuperäisten taulujen rivien (alkioiden) yhdistelmät. Pasi Ranne 25.9.2013 Metropolia Ammattikorkeakoulu 3

Karteesinen tulo - esimerkki Karteesinen tulo saadaan kyselyllä: SELECT osnimi, snimi, enimi FROM osasto, henkilo Tuloksena taulu, jossa kaikki mahdolliset henkilöiden ja osastojen yhdistelmät (ei siis vain ne, jotka ovat viiteavain pääavain arvojen perusteella mielekkäitä!) Karteesista tuloa tarvitaan hyvin harvoin ja se voi olla laskennallisesti hyvin raskas. Pasi Ranne 25.9.2013 Metropolia Ammattikorkeakoulu 4

Monen taulun kyselyt liitoksien avulla Kun kyselyn tulokseen halutaan mielekkäästi tietoa useammasta kuin yhdestä taulusta, täytyy eri taulujen rivit yhdistää muodostamalla niiden välille liitos Yhdistäminen perustuu tavallisesti viite- ja pääavainkenttien arvojen yhtäsuuruuteen, mutta ei välttämättä Yhdistäminen voidaan tehdä kahdella tavalla 1. JOIN-lauseketta käyttäen Useita erilaisia, yhdistävät tietoa eri tavoin (erikoisempia ei välttämättä tueta kaikissa TKHJ-tuotteissa) Suositeltavampi tapa 2. Kirjoitetaan yhdistämissääntö WHERE-lausekkeeseen Vanha tapa Pasi Ranne 25.9.2013 Metropolia Ammattikorkeakoulu 5

Sisäliitos: INNER JOIN INNER JOIN kyselyn tulokseen otetaan mukaan vain sellaiset rivit joilla valintaehdossa käytettyjen sarakkeiden arvo on sama Liitos voidaan muodostaa kahden tai useamman taulun välille Kahden taulun liitos: SELECT <sarakelista> FROM <taulu1> INNER JOIN <taulu2> ON <sarake1> = <sarake2> WHERE <rivien valintaehdot>; Pasi Ranne 25.9.2013 Metropolia Ammattikorkeakoulu 6

Kahden taulun sisäliitos Esimerkki Tehtävä: Listaa työntekijöiden nimet osastoittain. SELECT ostun, snimi, enimi FROM henkilo Jos tuloksesta ilmettävä osaston nimi, joudutaan tiedot hakemaan kahdesta taulusta sisäliitoksen avulla: SELECT osnimi, snimi, enimi FROM henkilo INNER JOIN osasto ON henkilo.ostun = osasto.ostun Huom! Taulun nimi on laitettava sarakenimen eteen, jos saman niminen sarake useammassa kuin yhdessä taulussa Pasi Ranne 25.9.2013 Metropolia Ammattikorkeakoulu 7

Kahden taulun sisäliitos Tulosten rajaus ja järjestely Tehtävä: Listaa tietohallinnon työntekijöiden nimet aakkosjärjestyksessä. SELECT snimi, enimi FROM henkilo INNER JOIN osasto ON henkilo.ostun = osasto.ostun WHERE osnimi = "Tietohallinto ORDER BY snimi, enimi; Pasi Ranne 25.9.2013 Metropolia Ammattikorkeakoulu 8

Kahden taulun sisäliitos Tulosten ryhmittely Tehtävä: Listaa eri osastojen työntekijöiden lukumäärät. Tarvitaan koostefunktiota ja tulosten ryhmittelyä: SELECT osnimi, COUNT(*) FROM henkilo INNER JOIN osasto ON henkilo.ostun = osasto.ostun GROUP BY osnimi; Pasi Ranne 25.9.2013 Metropolia Ammattikorkeakoulu 9

INNER JOIN vaihtoehtoisia syntakseja (SQL-92) SELECT osnimi, snimi, enimi FROM henkilo INNER JOIN osasto ON henkilo.ostun = osasto.ostun; Jos liitoksessa käytettyjen sarakkeiden nimet ovat molemmissa tauluissa samat, tarjolla on seuraavat vaihtoehtoiset muodot: SELECT osnimi, snimi, enimi FROM henkilo JOIN osasto USING (ostun); SELECT osnimi, snimi, enimi FROM henkilo NATURAL JOIN osasto; Pasi Ranne 25.9.2013 Metropolia Ammattikorkeakoulu 10

Kolmen taulun sisäliitos proj (ptun, pnimi) proj_henk (ptun, htun, tunnit) Tehtävä: Listaa henkilöiden eri projekteille tekemät tunnit käyttäen henkilön ja projektin nimiä. Kyselyn rakenne on sama kuin kahden taulun kyselyssä, mutta FROM lausekkeen INNER JOIN määreen toisena tauluna onkin nyt toisella INNER JOIN määreen mukainen kahden taulun liitoksena syntynyt taulu (eli sillä on INNER JOIN operaation mukaiset rivit). SELECT snimi, enimi, pnimi, tunnit FROM henkilo INNER JOIN proj_henk ON henkilo.htun = proj_henk.htun INNER JOIN proj ON proj_henk.ptun = proj.ptun ORDER BY snimi, enimi, pnimi Pasi Ranne 25.9.2013 Metropolia Ammattikorkeakoulu 11

Monen taulun kyselyt Vanha tapa Relaatiot ja INNER JOIN -kysely: SELECT osnimi, snimi, enimi FROM henkilo INNER JOIN osasto ON henkilo.ostun = osasto.ostun Vanha tapa Annetaan yhdistämissääntö WHERE-lausekkeessa: SELECT osnimi, snimi, enimi FROM henkilo, osasto WHERE henkilo.ostun = osasto.ostun Kyselyn suoritus: muodostetaan ensin karteesinen tulo ja valitaan siitä WHERE-ehdon mukaiset rivit Laskennallinen tehokkuus? WHERE-ehdon unohtaminen? Pasi Ranne 25.9.2013 Metropolia Ammattikorkeakoulu 12