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



Samankaltaiset tiedostot
Yhdiste, leikkaus, erotus ym.

Relaation tyhjyyden testaaminen

CSE-A1200 Tietokannat

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

Liitokset - haut useaan tauluun

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

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

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

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

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

CS-A1150 Tietokannat CS-A1150 Tietokannat / 39

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

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

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

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

SELECT-lauseen perusmuoto

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

Relaatioalgebra. Kyselyt:

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

SQL - STRUCTURED QUERY LANGUAGE

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

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

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

SQL:N PERUSTEET MARKKU SUNI

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

Kyselyn yleisrakenne:

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

811120P Diskreetit rakenteet

CS-A1150 Tietokannat CS-A1150 Tietokannat / 34

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, s 2007 SQL:n perusteet. Harri Laine 1. SQL tietokantakieli. SQL tietokantakieli

CSE-A1200 Tietokannat

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

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1

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

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2000 Tietokannan suunnittelusta Harri Laine 1

CS-A1150 Tietokannat CS-A1150 Tietokannat / 34

Hohde Consulting 2004

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 SQL-perusteet. Harri Laine 1. SQL tietokantakieli

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

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

Relaatiomalli ja -tietokanta

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

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

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

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

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

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia.

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

4.3.4 SQL kyselyt... 45

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

SQL:N PERUSTEET MARKKU SUNI

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

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

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

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

Harjoitustyö. CSE-A1200 Tietokannat! Jasse Lahdenperä! ! Henri Nurmi! !

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto

Opiskeluoikeuksien maaran tiedonkeruu

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

Näkymät ja tiedon suojaus

CSE-A1200 Tietokannat

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

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, k 2006 relaatioalgebra. Harri Laine 1

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

SQL-kielen perusteet. Tietokantojen perusteet

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

Makrojen mystinen maailma lyhyt oppimäärä

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

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

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

Tietokantakurssit / TKTL

Tietokannat II -kurssin harjoitustyö

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

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

(1) refleksiivinen, (2) symmetrinen ja (3) transitiivinen.

D B. Tietokannan hallinta kertaus

Matematiikassa ja muuallakin joudutaan usein tekemisiin sellaisten relaatioiden kanssa, joiden lakina on tietyn ominaisuuden samuus.

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2004 Tietokannan suunnittelusta. Harri Laine 1

Paikkatiedon käsittely 6. Kyselyn käsittely

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Jouni Huotari & Ari Hovi. Käsitemallinnuksesta relaatiokantaan KÄSITEMALLI. LOOGINEN MALLI: tietomalli valittu. FYYSINEN MALLI: DBMS valittu

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

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

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

5 SQL TIETOKANTAKIELI...33

Tieto- ja tallennusrakenteet

Sovellettu todennäköisyyslaskenta B

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

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Algoritmit 2. Luento 7 Ti Timo Männikkö

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

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

ABHELSINKI UNIVERSITY OF TECHNOLOGY

Formaalit menetelmät: Kirjaston formalisointi Z-kuvauskielellä

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia.

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

VH5, JOTU, MagicDraw:n käyttö

Joukot. Georg Cantor ( )

Transkriptio:

Yhdiste, leikkaus, erotus ym. SQL tarjoaa myös relaatioalgebran operaatiot yhdiste, leikkaus, erotus Näissä operaatioissa taulujen on oltava samarakenteisia, ts. niissä on oltava samantyyppiset vastinsarakkeet. Informaatiojärjestelmät, kevät 1997 4.2.1999 1 Esimerkki. pankkien talletus- ja lainatietokanta: AsOsoite AsKaupunki Kaivotie Vantaa Koivikko Helsinki Länsitie Vantaa Itäväylä Helsinki Laine Otakaari Espoo TALLETUS Tilinro Summa 22222 2000 33333 3000 KONTTORI Varat KKaupunki SYP5 210 000 Espoo 170 000 Tampere PSP6 80 000 Espoo LAINA Tilinro Summa SYP5 500 Laine 4000 202 2500 PSP6 660 500 444 1500 Informaatiojärjestelmät, kevät 1997 4.2.1999 2 Yhdiste (Union) (kysely) UNION (kysely) Luettele ne asiakkaat, joilla on talletus tai laina tai molemmat -konttorissa. (SELECT WHERE = '') UNION (SELECT WHERE = ''); Informaatiojärjestelmät, kevät 1997 4.2.1999 3 Leikkaus (intersect) (kysely) INTERSECT (kysely) Luettele ne asiakkaat, joilla on sekä talletus että laina -konttorissa. (SELECT DISTINCT WHERE = '') INTERSECT (SELECT DISTINCT WHERE = ''); Informaatiojärjestelmät, kevät 1997 4.2.1999 4 Leikkaus Miksi SELECT DISTINCT? INTERSECT ei poista duplikaatteja (niitä ei leikkausoperaation tuloksena synny). Erotus (except/minus) (kysely) EXCEPT (kysely) Luettele ne asiakkaat, joilla on talletus mutta ei lainaa -konttorissa. (SELECT DISTINCT WHERE ='') EXCEPT (SELECT WHERE = ''); Informaatiojärjestelmät, kevät 1997 4.2.1999 5 Informaatiojärjestelmät, kevät 1997 4.2.1999 6 Tietojenkäsittelytieteen laitos 1/5

Erotus Miksi kyselyn jälkimmäisessä puoliskossa ei käytetä SELECT DISTINCT -muotoa? UNION, INTERSECT ja EXCEPT standardissa, MINUS Oraclessa Esimerkkikanta. Kirjasto KIRJA Nimi 111111-1111 090909-9999 121212-2222 Sippu ISBN Kirjannimi Tekijä 111 Oh! Pascal Cooper 552 Algebra I Myrberg 444 Samlade dikter Fröding 898 Lisp Winston 789 Electronics Smith LAINAUS ISBN Pvm 111 12.02.94 121212-2222 898 22.05.94 789 24.03.94 111111-1111 444 01.01.94 Informaatiojärjestelmät, kevät 1997 4.2.1999 7 Informaatiojärjestelmät, kevät 1997 4.2.1999 8 WHERE-lauseen ehdon osapuolena voi olla toinen kysely. Niiden lainaajien nimet, joilla on kirjoja lainassa? SELECT Nimi Asi, Lainaus Lai WHERE Asi. = Lai.; Edellinen kysely sisäkkäisten kyselyiden avulla SELECT Nimi (SELECT us); Sisempi kysely palauttaa joukon hetuja: 121212-2222 111111-1111 Informaatiojärjestelmät, kevät 1997 4.2.1999 9 Informaatiojärjestelmät, kevät 1997 4.2.1999 10 Ulommassa kyselyssä taulusta valitaan ne rivit, joiden hetut täsmäävät sisäkyselyn kanssa: SELECT Nimi sisäkyselyn hetut; Mitä kysely lopulta tulostaa? Nimi Sippu Informaatiojärjestelmät, kevät 1997 4.2.1999 11 Niiden kirjojen nimet, jotka on lainattu 01.03.94 jälkeen: K, Lainaus L WHERE (K.ISBN = L.ISBN) AND (L.Pvm > 01.03.94); Tai näin: SELECT Kirjannimi WHERE ISBN IN (SELECT ISBN us WHERE Pvm > 01.03.94); ISBN 898 789 Kirjannimi Lisp Electronics Informaatiojärjestelmät, kevät 1997 4.2.1999 12 Tietojenkäsittelytieteen laitos 2/5

ISBN:t oltava samaa tyyppiä, attribuuttien nimien ei toki tarvitse olla samat. IN-määre tutkii joukkoon kuulumista ( ). Yhtä monta IN- määrettä ( sisäkkäistä pykälää ) kuin on liitosehtojakin. Informaatiojärjestelmät, kevät 1997 4.2.1999 13, Lainaus, Asiakas WHERE Kirja.ISBN=Lainaus.ISBN AND Lainaus.=Asiakas. AND Asiakas.Nimi= ; Kirjannimi Oh! Pascal WHERE ISBN IN ISBN Electronics (SELECT ISBN 111 FROM LAINAUS 789 (SELECT FROM WHERE Nimi= )); Informaatiojärjestelmät, kevät 1997 4.2.1999 14 Riippumaton sisäkysely SELECT Pvm us (SELECT WHERE Nimi = ''); Pvm 12.02.94 24.03.94 sisemmän kyselyn WHERE-osassa viittaus ulomman kyselyn relaatioon => sisempi kysely mahdoton toteuttaa erikseen "ykkösvaiheena" (vrt. edell. sivu) => toteutetaan sisäkysely kerran jokaista ulomman kyselyn mahdollista riviä kohti Informaatiojärjestelmät, kevät 1997 4.2.1999 15 Informaatiojärjestelmät, kevät 1997 4.2.1999 16 Kirjojen nimet, jotka ovat lainassa ja kirjan tekijän nimi on sama kuin lainaajan nimi: SELECT Kirjannimi, Lainaus, Asiakas WHERE Lainaus.=Asiakas. AND Lainaus.ISBN=Kirja.ISBN AND Asiakas.Nimi = Kirja.Tekijä; WHERE ISBN in ( SELECT ISBN us, Asiakas WHERE Lainaus.=Asiakas. and Nimi = Kirja.Tekijä ); Informaatiojärjestelmät, kevät 1997 4.2.1999 17 Informaatiojärjestelmät, kevät 1997 4.2.1999 18 Tietojenkäsittelytieteen laitos 3/5

Esimerkki. pankkien talletus- ja lainatietokanta: AsOsoite AsKaupunki Kaivotie Vantaa Koivikko Helsinki Länsitie Vantaa Itäväylä Helsinki Laine Otakaari Espoo TALLETUS Tilinro Summa 22222 2000 33333 3000 KONTTORI Varat KKaupunki SYP5 210 000 Espoo 170 000 Tampere PSP6 80 000 Espoo LAINA Tilinro Summa SYP5 500 Laine 4000 202 2500 PSP6 660 500 444 1500 Informaatiojärjestelmät, kevät 1997 4.2.1999 19 Leikkaus (INTERSECT) sisäkyselyn avulla Luettele ne asiakkaat, joilla on sekä talletus että laina -konttorissa. SELECT DISTINCT WHERE ( = '') AND IN (SELECT Asnimi WHERE Knimi = ''); Informaatiojärjestelmät, kevät 1997 4.2.1999 20 IN-määrettä voi edeltää myös useampi attribuutti. Edellinen kysely toisin: SELECT DISTINCT WHERE ( = '') AND (, ) IN Laine (SELECT Knimi, Asnimi ); SYP5 PSP6 Informaatiojärjestelmät, kevät 1997 4.2.1999 21 Erotus (MINUS) sisäkyselyn avulla Luettele ne asiakkaat, joilla on talletus mutta ei lainaa -konttorissa. SELECT DISTINCT WHERE ( = '') AND NOT IN (SELECT Asnimi WHERE Knimi = ''); Informaatiojärjestelmät, kevät 1997 4.2.1999 22 Tai taas toisin: SELECT DISTINCT WHERE ( = '') AND (, ) NOT IN (SELECT Knimi, Asnimi SYP5 Laine ); PSP6 Informaatiojärjestelmät, kevät 1997 4.2.1999 23 Lisäpiirteitä: Samaan tauluun viittaaminen aliaksilla Luettele ne asiakkaat, joilla on talletus sellaisessa konttorissa, jossa lla on talletus. SELECT DISTINCT Tal. T, Talletus Tal WHERE (T.Asnimi = '') AND (T. = Tal.); Informaatiojärjestelmät, kevät 1997 4.2.1999 24 Tietojenkäsittelytieteen laitos 4/5

T TAL Lisäpiirteitä: Samaan tauluun viittaaminen viitenimillä Tilinro Summa 22222 2000 33333 3000 Tilinro Summa 22222 2000 33333 3000 Toinen tapa on sisäkyselyn ja IN-määreen käyttäminen: SELECT DISTINCT WHERE IN Knimi (SELECT Knimi WHERE = ''); Miksi DISTINCT-määre? Informaatiojärjestelmät, kevät 1997 4.2.1999 25 Informaatiojärjestelmät, kevät 1997 4.2.1999 26 Lisäpiirteitä: SOME ja ALL IN-määreellä testataan, kuuluuko WHEREosan alkio sisäkyselyn tuottamaan joukkoon vai ei, eli vertailun osapuolen on oltava sama kuin jokin joukon alkio (siis =) Joskus voidaan tarvita myös vertailuoperaattoreita: < <= > >= <> Informaatiojärjestelmät, kevät 1997 4.2.1999 27 SOME Luettele ne konttorit, joilla on enemmän varoja kuin jollakin Espoossa sijaitsevalla konttorilla. (Eli ne, joilla on enemmän kuin sillä Espoossa olevalla konttorilla, jolla on kaikkein vähiten!) SELECT SYP5 WHERE Varat > SOME Varat 210 000 80 000 (SELECT Varat WHERE KKaupunki = 'Espoo'); SOME:n tilalle käy ANY! Informaatiojärjestelmät, kevät 1997 4.2.1999 28 ALL Luettele ne konttorit, joilla on enemmän varoja kuin millä tahansa Espoossa sijaitsevalla konttorilla. SELECT WHERE Varat > ALL tyhjä! (SELECT Varat Varat WHERE KKaupunki = 'Espoo'); 210 000 80 000 Informaatiojärjestelmät, kevät 1997 4.2.1999 29 Vertailuoperaattorien käyttö Vertailuoperaattoreita voidaan käyttää suoraan (ilman SOMEa tai ALLia), jos ollaan varmoja siitä, että sisäkysely tuottaa tulokseksi aina täsmälleen yhden rivin. Esimerkiksi koostefunktioiden yhteydessä käy näin. Informaatiojärjestelmät, kevät 1997 4.2.1999 30 Tietojenkäsittelytieteen laitos 5/5