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

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

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

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

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

SQL-kielen perusteet. Tietokantojen perusteet

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

Relaatioalgebra. Kyselyt:

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

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

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

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

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

Tietokantojen perusteet, s 1999 SQL- osa Harri Laine 1. SQL -ohjelmistojen markkinaosuuksia SQL. SQL - historiaa. SQL - standardointi

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

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

HELIA 1 (14) Outi Virkki Tiedonhallinta

SQL - STRUCTURED QUERY LANGUAGE

4.3.1 SQL tietokanta SQL:n kirjoitusasu SQL määrittelykielenä... 36

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

CSE-A1200 Tietokannat

Kyselyn yleisrakenne:

5 SQL TIETOKANTAKIELI...33

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

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

SELECT-lauseen perusmuoto

3. Taulujen määrittely ja muuttaminen

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

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

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

HELIA 1 (12) Outi Virkki Tiedonhallinta

4.3.4 SQL kyselyt... 45

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

Relaatiomalli ja -tietokanta

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

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

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

Tietokantakurssit / TKTL

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

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

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

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

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

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

CSE-A1200 Tietokannat

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

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

HELIA 1 (17) Outi Virkki Tiedonhallinta

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

CS-A1150 Tietokannat CS-A1150 Tietokannat / 34

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

CS-A1150 Tietokannat CS-A1150 Tietokannat / 34

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

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

2. Käsiteanalyysi ja relaatiomalli

HAAGA-HELIA TIKO - Heti09 1 (22) ICT05 Tiedonhallinta ja Tietokannat E.Räty, O.Virkki, M.Laiho

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

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

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

On autoja, henkilöitä, Henkilöllä on nimi Autolla on omistaja, joka on henkilö. Taulu AUTO(rekno, malli) Taulu HENKILO(nimi, )

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

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

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

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto

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

CS-A1150 Tietokannat CS-A1150 Tietokannat / 39

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

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

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

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

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

SQL:N PERUSTEET MARKKU SUNI

Liitokset - haut useaan tauluun

Relaation tyhjyyden testaaminen

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

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

Tietokantojen suunnittelu, relaatiokantojen perusteita

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

Lohdutus - tietokantadokumentti

D B. Kyselypuut ja ekvivalenssi

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

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä

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

Yleinen SQL. Yleinen SQL. SQL:n kehitys

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

HELIA 1 (19) Outi Virkki Tietokantasuunnittelu

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

Tietomallit. Näkökulmat tietoon. Näkökulmat tietoon. Näkökulmat tietoon. Abstraktiotasot tiedon käsittelyssä

HELIA 1 (11) Outi Virkki Tiedonhallinta

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

Yhdiste, leikkaus, erotus ym.

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Näkymät ja tiedon suojaus

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

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

CSE-A1200 Tietokannat

Makrojen mystinen maailma lyhyt oppimäärä

HELIA 1 (15) Outi Virkki Tiedonhallinta

Transkriptio:

Harjoitustehtävän 1 ratkaisu Tonttu( tonttutunnus, nimi) Puutarha( puutarhatunnus, omistaja, sijainti ) Vastuualue ( puutarhatunnus->puutarha, aluenumero, maaperä, kosteus, valaistus, sijainti, vastuutonttu -> Tonttu) Palkinto( vuosi, sija, saaja -> Tonttu ) Kasvilaji( lajitunnus, nimi_suom, nimi_latin, kasvityyppi, vaatimukset, kukanväri, kukinta_aika, muuta) Istutus(istutuspäivä, paikka_alueella, istutusmuoto, onnistuiko, tarkastus_pvm, istuttaja ->Tonttu, tarkastaja - >Tonttu, istutettu_kasvi ->Kasvilaji, (puutarhatunnus, tarhan_alue) ->Vastuualue) Harjoitustehtävä 1 Relaation Palkinto kaikki attribuutit voisivat myös kuulua avaimeen. Tällöin saman sijan jakaminen usean saajan kesken olisi mahdollista. Istutus relaatiossa samaan paikkaan alueella voi sijoittaa vain yhden kasvin. Jos paikan ymmärtää isona siten, että siihen mahtuisi monta kasvia, ovat relaation attribuutit riittämättömiä avaimen määrittelyyn. Vaikka avaimeen otettaisiin kaikki attribuutit ei rivien yksikäsitteisyyttä voitaisi taata. Relaation Kasvilaji pääavaimeksi kävisi myös nimi_latin tai nimi_suom. Harjoitustehtävä 1 DO NOT PRINT THIS DOCU MENT Relaatioalgebra Puutarha Puutarhatunnus omistaja sijainti Vastuualue puutarhatunnus aluenumero maaperä, kosteus valaistus sijainti vastuutonttu Tonttu Tonttutunnus nimi Istutus istutuspäivä paikka_alueella istutusmuoto onnistuiko tarkastus_pvm istuttaja tarkastaja istutettu_kasvi puutarhatunnus tarhan_alue Palkinto vuosi sija saaja Kasvilaji lajitunnus nimi_suom nimi_latin kasvityyppi vaatimukset kukanväri kukinta_aika muuta Operaatiot, joilla relaatioista voidaan muodostaa uusia relaatioita Perustana joukko-oppi Joukko opin perusoperaatiot yhdiste, erotus, ristitulo, leikkaus Erityisiä relaatioalgebran omia operaatioita projektio, valinta, liitokset Relaatioalgebra -liitokset (join) Monikkoparin yhdistäminen jonkin ehdon perusteella Liitoksessa yhdistyy valinta ja ristitulo R liitosehto S σ liitosehto (R S) Yleisin liitos on yhdistää monikko ja siihen viittaava monikko yhdistämisehtona on silloin ehto R.A=S.VA, missä A on R:n avain ja VA on relaatioon R viittaava viiteavain S:ssä Liitos R A B 1 2 S D E 5 6 1 3 RxS A B D E 1 2 1 2 5 6 1 2 1 3 5 6 1 3 Ehto: R.A=S.D Ensin ristitulo

Liitos Liitos R A B 1 2 S D E 5 6 1 3 Ehto: R.A=S.D R A B 1 2 S D E 5 6 1 3 Ehto: R.A S.D RxS A B D E RxS A B D E 1 2 1 2 5 6 1 2 1 3 5 6 1 3 Sitten karsinta 1 2 1 2 5 6 1 2 1 3 5 6 1 3 Luonnollinen liitos Luonnollinen liitos R*S liitosehto muodostetaan automaattisesti siten, että liitosehtona vaaditaan kaikkien vastinattribuuttien yhtäsuuruutta. Vastinattribuutilla tarkoitetaan tässä sellaista attribuuttia, joka esiintyy kummassakin relaatiossa. Edelleen, koska jokaisella vastinattribuutilla edellytetään olevan sama arvo kummassakin yhdistettävässä monikossa, attribuutti otetaan mukaan tulosrelaatioon vain kertaalleen. Olkoot A1,,An R:n attribuutit, jotka eivät esiinny S:ssä ja C1,, Cm S:n attribuutit, jotka eivät esiinny R:ssä sekä B1,,Bk attribuutteja, jotka esiintyvät kummassakin relaatiokaaviossa. Tällöin R*S π A1,,An,R.B1,,R.Bk,C1,,Cm (R R.B1=S.B1 and. and R.Bk=S.Bk S) Luonnollinen liitos R(A,B,C) * S(A,D,E) = π A,B,C,D,E (R X R.A=S.A S) Q(A,B,C) * T(A,B,C) = π A,B,C (Q X Q.A=T.A and Q.B=T.B and Q.C=T.C T) SQL tietokantakieli SQL:llä voidaan... määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta näytölle tai tiedostoon sovellusohjelman käyttöön tehdä päivityksiä tietokantaan (muuttaa dataa) vuorovaikutteisesti sovellusohjelman kautta

SQL SQL on standardoitu viimeisin standardi vuodelta 1999 toteutukset noudattavat enimmäkseen vuoden -92 standardia ja sitäkin vain osittain murteita - yhteinen suppeahko ydin SQL-tietokanta SQL-tietokanta muodostuu yhden tai useamman kaavion (schema) määrittelemistä tauluista (table) Kullakin kaaviolla on omistaja, joka omistaa myös kaavion määrittelemät taulut. Taulu muodostuu riveistä (row) Taulu vastaa relaatiomallin relaatiota, mutta sallii etenkin kyselyiden tuloksissa samanlaisen rivin toistumisen (duplikaatit) matemattisesti monijoukko (multiset) SQL SQL määrittelykieli (DDL) käyttäjät ja oikeudet tietokannan rakenne tietokantaproseduurit SQL Käsittelykieli (DML) kyselyt ylläpito-operaatiot SQL-kielessä avainsanat, taulu- käyttäjä- ja sarakenimet voi kirjoittaa joko suur- tai pienaakkosina eli select merkki SELECT MerKKI Tietokannassa olevan datan suhteen kieli on kuitenkin herkkä kirjainmuodolle eli Merkki= Ford on eri kuin Merkki= FORD SQL tiedonmäärittelykieli Tiedonmäärittelykielessä lauseita tietokantaelementtien {user, role, schema, table, domain, procedure, function, trigger, } luontiin, muokkaukseen ja poistoon create -luo alter - muokkaa drop-poistaa SQL taulun luonti create table määrittelee taulun rakenteen create table tablename ( column definition 1,., column definition n [, constraint 1, ] ) sarakemäärittely ::= column_name datatype [not null] [default value] [ column constraint ]

Table definition create table Ordered ( OrderId integer not null, WhenMade date not null, Customer integer not null, WayIssued varchar(20), PaymentBy varchar(20) not null, TotalPrice decimal(6,2) not null, constraint pk_order primary key (OrderId), constraint fk_ordercustomer foreign key (Customer) references Customer ); päiväys create table Ordered ( (tässä on kyseessä OrderId integer not null, Oracle, joten timestamp) WhenMade date not null, ); Customer WayIssued PaymentBy TotalPrice integer not null, vaihtuvamittainen varchar(20), merkkijono varchar(20) not null, decimal(6,2) not null, constraint pk_order primary key (OrderId), constraint fk_ordercustomer foreign key (Customer) references Customer kokonaisluku desimaaliluku kokonaispituus 6, desimaaliosa 2 Taulun määrittely create table Ordered ( OrderId integer not null, pakollinen WhenMade date not null, Customer integer not null, WayIssued varchar(20), PaymentBy varchar(20) not null, TotalPrice decimal(6,2) not null, constraint pk_order primary key (OrderId), constraint fk_ordercustomer foreign key (Customer) references Customer ); avain viiteavain SQL tiedonmäärittely Aikoja Date päiväys Time kellonaika Timestamp päiväys ja kellonaika ( Oraclella Date on oikeastaan Timestamp) Interval aikaero Aikoja voidaan verrata ja niillä voi laskea this_day date, this_day + 3 on kolmen päivän päästä SQL tiedonmäärittely Viiteavainmäärittelyyn voidaan liittää toimintasääntö, mitä tehdään operaation rikkoessa viite-eheyden foreing key (sarakkeet) references taulu [(sarakkeet2)] [ on delete {restrict cascade nullify} ] [ on update {restrict cascade nullify} ] viitteen kohde katoaa: restrict estää rikkovan operaation (oletus) cascade vyöryttää, poistaa tai muuttaa viittaavat rivit nullify tyhjentää viittaukset SQL kysely Kyselyn yleisrakenne: select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta] Kysely tuottaa nimettömän tulostaulun.

SQL-kysely select merkki, reknro order by merkki, reknro SQL kysely select merkki, reknro miltein projektio valinta order by merkki, reknro Vuoden 1996 mallia olevien punaisten merkiltään Fo -alkuisten autojen merkki ja rekisterinumero merkin ja saman merkin sisällä rekisterinumeron mukaan järjestettynä Vuoden 1996 mallia olevien punaisten merkiltään Fo -alkuisten autojen merkki ja rekisterinumero merkin ja saman merkin sisällä rekisterinumeron mukaan järjestettynä SQL-kysely Tulostietomäärittelyn elementeille lasketaan normaalitapauksessa arvo jokaista valintaehdot täyttävää riviyhdistelmää kohden select merkki order by merkki Jos taulussa auto olisi 100 punaista vuoden 1996 Fordia tulisi merkki Ford tulostauluun 100 kertaa. Toimii siis toisin kuin relaatioalgebran projektio, joka poistaa tuplat SQL kysely Projektion kaltainen toistuvien arvojen karsinta saadaan aikaan liittämällä tulostietomäärittelyn alkuun avainsana distinct select distinct merkki order by merkki Nyt Ford tulisi tulokseen vain kerran SQL-kysely Kyselyn ehto-osassa voidaan verrata saraketta tai vakiota tai funktion arvoa sarakkeeseen, vakioon, funktion arvoon arvojoukoon maskiin Voidaan myös tutkia sarakkeen tyhjyyttä Jos vertailun toisena osapuolena on tyhjäarvo on tulos tuntematon. Rivi tulee valituksi tulokseen vain jos ehdon arvo on tosi (). SQL kyselyt Totuusarvot tosi () ja epätosi () käyttäytyvät loogisissa lausekkeissa kuten ohjelmointikielten yhtydessä Kolmas totuusarvo tuntematon käyttäytyy seuraavasti AND NOT

SQL-kyselyt SQL kyselyt OR Sarake is null: tuottaa tuloksen, jos sarakkessa on tyhjäarvo, muuten Sarake is not null: tuottaa tuloksen, jos sarakkessa on tyhjäarvo, muuten Tietotyypistä riippuen sarakearvoilla voi tulostietomäärittelyissä ja ehdoissa suorittaa laskentaoperaatioita (merkkijonoille katenaatio (perään laittaminen)) Merkkijonovakiot hipsuihin, numeeriset ilman On mahdollista käyttää myös skalaarifunktioita esim. merkkijonon pituus length(sarake), funktiovalikoima vaihtelee SQL -kyselyt Kyselyn from osassa yksi tai useampi taulu (tai alikysely) Jos tauluja on vain yksi on kyseessä valinta Jos tauluja on monta on kyseessä ristitulo ellei ehto-osassa ole liitosehtoa (hyvin harvoin halutaan tulokseksi ristitulo) Jos tauluja on monta ja ehto-osassa on liitosehto, on kyseessä liitos muista siis liitosehto