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

Koko: px
Aloita esitys sivulta:

Download "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"

Transkriptio

1 Luku 4 SQL 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 ITKA204 kevät

2 4.1 Yleistä SQL:stä Structured Query Language SQL on ANSI/ISO-standardiin perustuva korkean tason kyselykieli relaatiotietokantoihin. Juuret 1970-luvun lopulla: IBM:n System R:n SEQUEL ja RSI:n Oraclen SQL. SQL-standardista julkaistu useita versioita: 1986, 1989, 1992, 1999, 2003, 2006, 2008, Suuri osa SQL-kielestä on standardisoitu, loput kielestä perustuu vakiintuneisiin käytäntöihin. Suunniteltu alun perin yksinkertaiseksi kieleksi yksinkertaisten operaatioiden suorittamiseen. Teoreettinen perusta Coddin relaatiomallissa ja siihen kuuluvassa relaatioalgebrassa. Kieli jaetaan yleisesti neljään osaan: Datan hallinta (Data Management Language, DML) Rakenteen määrittäminen (Data Definition Language, DDL) Valtuuttaminen (Data Control Language, DCL) Tapahtumanhallinta (Transaction Control Language, TxCL) Standardoimisen johdosta eri RDBMS:t toimivat SQL:n osalta hyvin samankaltaisesti. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 2

3 4.1 Yleistä SQL:stä Yhtäläisyydet relaatiomalliin Vaikka SQL-standardi perustuu relaatiomalliin, niissä on joitakin eroja, mm.: SQL-standardi esittelee suuren määrän toiminnallisuutta, joka ei kuulu relaatiomalliin. SQL sallii mm. moniarvoiset attribuutit. SQL:ssä relaation monikoiden (taulun rivien) sallitaan olevan samanlaiset. Kieltä onkin kritisoitu relaatiomallista poikkeamisesta. SQL:n nimeämiskäytänteet vastaavat suurpiirteisesti seuraavia relaatiomallin käsitteitä: Relaatiomalli relaatio (relation) attribuutti (attribute) monikko (tuple) SQL taulu (table) sarake (column) rivi (row) SQL:n osalta tietomallin voikin hahmottaa joukkona tauluja ja eheysrajoitteita sekä kyselykielenä. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 3

4 4.1 Yleistä SQL:stä Käyttö Luvussa 2 esiteltiin kyselykielen käyttöä eri tavoin: upottamalla kyselykieltä isäntäkieleen (esim. Java, C#, Python, Haskell), kutsumalla isäntäkielessä tietokantaan tallennettua rutiinia (esim. PL/SQL tai T/SQL), kokonaan isäntäkielellä (ns. natiivikyselynä) tai ORM (object-relational mapper) työkaluja käyttäen. Tämän lisäksi kyselykieltä voidaan käyttää DBMS:n SQL-rajapinnan kautta. Tämä soveltuu erityisen hyvin SQL:n opetteluun tai yksittäisten operaatioiden suorittamiseen. Tätä lähestymistapaa käytetään myös tällä kurssilla. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 4

5 4.2 SQL-lauseet Yleiset säännöt SQL-operaatiota kutsutaan yleisesti SQL-lauseeksi. SQL-lause koostuu SQL-avainsanoista (kuten SELECT tai ORDER BY), tietokantaobjektien (kuten taulut, näkymät ja indeksit) nimistä, ehtolausekkeista (kuten ikä > 30) ja päättyy puolipisteeseen ; Kirjainkoolla ei ole merkitystä SQL-avainsanoissa tai tietokantaobjektien nimissä. Tietokantaobjektien nimissä voidaan käyttää kirjaimia (a-z), numeroita ja alaviivaa. Tietokantaobjektin nimi ei kuitenkaan voi alkaa numerolla, eikä varattuja sanoja voi käyttää. Rivivaihdoilla ei ole merkitystä. Tällä kurssilla käsitellään SQL:ää SQL-standardin näkökulmasta. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 5

6 Yleistä DML:stä DML (Data Management Language) lienee tarkimmin standardoitu SQL:n alikieli. DML:n avulla voidaan suorittaa yleisimmät SQL-lauseet, eli datan: etsiminen (SELECT), lisääminen (INSERT), muokkaaminen (UPDATE) ja poistaminen (DELETE). Tällä kurssilla käsitellään suuri osa DML-kielestä. DML lienee SQL:n osalta kurssin vaativin osa-alue. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 6

7 Materiaalin syntaksimerkinnät SQL-avainsanat on kirjoitettu suuraakkosilla. Tietokantaobjektien nimet on kirjoitettu pienillä kirjaimilla. Hakasulkeet [ ] ryhmittävät lauseen osia. Hakasulkeita seuraa Backus/Naur-muodon mukainen kardinaalisuusmerkintä, joka kertoo hakasulkujen sisällön pakollisuudesta: + = 1..n toistoa * = 0..n toistoa? = 0..1 toistoa Pystyviiva kertoo vaihtoehtoisuudesta, esim. [ASC DESC]? = joko ASC tai DESC tai ei kumpaakaan. Hakasulkeita, kardinaalisuusmerkintöjä tai pystyviivoja ei kirjoiteta varsinaiseen SQL-lauseeseen. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 7

8 Harjoitustietokannan kaava Tässä alaluvussa käytetään harjoitustietokantana seuraavaa, ellei toisin mainita: ASIAKAS ( astun, asnimi, kaup, tyyppi, mpiiri ) LASKU ( laskuno, vuosi, lask_summa, tila, astun ) LASKU_RIVI ( laskuno, tuotetun, maara ) TUOTE ( tuotetun, tuotenimi, malli, ahinta, vari ) CHAR ja VARCHAR = merkkijono INT = kokonaisluku ASIAKAS LASKU LASKU_RIVI TUOTE astun CHAR(4) laskuno CHAR(4) laskuno CHAR(4) tuotetun CHAR(4) asnimi VARCHAR(15) vuosi INT tuotetun CHAR(4) tuotenimi VARCHAR(15) kaup VARCHAR(10) lask_summa INT maara INT malli VARCHAR(10) tyyppi VARCHAR(10) tila VARCHAR(2) ahinta INT mpiiri VARCHAR(10) astun CHAR(4) vari VARCHAR(10) ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 8

9 Hakulauseen yleinen muoto SELECT-lause on SQL-hakulause. Se koostuu yksinkertaisimmillaan kahdesta osasta: SELECT-osa: mitä sarakkeita tulostauluun halutaan. Tulostaulun otsake muodostuu näistä sarakkeista. FROM-osa: mistä tauluista data noudetaan. SELECT sarake[, sarake]* FROM taulu[, taulu]*; SELECT astun, asnimi, kaup, tyyppi, mpiiri FROM asiakas; ASIAKAS astun CHAR(4) asnimi VARCHAR(15) kaup VARCHAR(10) tyyppi VARCHAR(10) astun asnimi kaup tyyppi mpiiri mpiiri VARCHAR(10) a101 Kojo JKL y k a102 Laippa TRE h i a104 Kajo JKL h l ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 9

10 Vertailuoperaattorit Hakuehdot asetetaan hakulauseen vapaaehtoiseen WHERE-osaan. Lukuarvojen vertailuun käytetään operaattoreita <, >, <=, >= ja = Lukuarvojen erisuuruutta voidaan tarkastaa operaattoreilla <> ja!= Ehtolausekkeita voidaan yhdistää loogisilla operaattoreilla AND ja OR. SELECT sarake[, sarake]* FROM taulu[, taulu]* [WHERE ehtolauseke[ operaattori ehtolauseke]*]?; SELECT * FROM tuote WHERE ahinta > 100 AND ahinta <= 2000; TUOTE tuotetun CHAR(4) tuotenimi VARCHAR(15) malli VARCHAR(10) ahinta INT vari VARCHAR(10) ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 10

11 Merkkijonojen vertailu Merkkijonoja vertaillaan [NOT] LIKE predikaatilla. Vertailtava merkkijono kirjoitetaan heittomerkkien väliin. Vertailussa voidaan käyttää jokerimerkkejä: Alaviiva vastaa yhtä mitä tahansa merkkiä Prosenttimerkki vastaa 0..n mitä tahansa merkkiä. SELECT mpiiri, tyyppi FROM asiakas WHERE asnimi LIKE 'Kajo'; ASIAKAS astun CHAR(4) asnimi VARCHAR(15) kaup VARCHAR(10) tyyppi VARCHAR(10) mpiiri VARCHAR(10) SELECT asnimi, tyyppi, mpiiri FROM asiakas WHERE asnimi NOT LIKE K% AND kaup LIKE _y% ; Hae niiden asiakkaiden nimi, tyyppi ja myyntipiiri, joiden nimi ei ala K-kirjaimella ja joiden asuinkaupungin toinen kirjain on y. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 11

12 Suoritusjärjestys Ehtolausekkeiden suoritusjärjestystä voidaan ohjata sulkeilla. Pelkkää AND-operaattoria käytettäessä ehtojen järjestyksellä ei ole tulosten kannalta merkitystä. AND on OR:iin nähden etuoikeutettu. SELECT * FROM asiakas WHERE tyyppi LIKE y AND (mpiiri LIKE i OR mpiiri LIKE k ); SELECT * FROM asiakas WHERE tyyppi LIKE y AND mpiiri LIKE i OR mpiiri LIKE k ; Hae niiden asiakkaiden kaikki tiedot, jotka ovat yritysasiakkaita ja joiden myyntipiiri on joko itä tai keski. Hae niiden asiakkaiden kaikki tiedot, jotka ovat yritysasiakkaita itäisestä myyntipiiristä sekä kaikkien keskimyyntipiirin asiakkaiden tiedot. ASIAKAS astun CHAR(4) asnimi VARCHAR(15) kaup VARCHAR(10) tyyppi VARCHAR(10) mpiiri VARCHAR(10) ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 12

13 Tyhjäarvon tarkastaminen Tyhjäarvon esiintymistä tarkastetaan SQL:ssä IS [NOT] NULL predikaatilla. SELECT tuotenimi FROM tuote WHERE ahinta IS NULL; SELECT tuotenimi FROM tuote WHERE malli IS NOT NULL; TUOTE tuotetun CHAR(4) tuotenimi VARCHAR(15) malli VARCHAR(10) ahinta INT vari VARCHAR(10) EI NÄIN: EIKÄ NÄIN: ET TEE NÄIN: ETKÄ NÄIN: SELECT tuotenimi FROM tuote WHERE ahinta = NULL; SELECT tuotenimi FROM tuote WHERE ahinta = 0; SELECT tuotenimi FROM tuote WHERE malli LIKE ; SELECT tuotenimi FROM tuote WHERE malli LIKE NULL ; ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 13

14 Muita tapoja vertailuun [NOT] BETWEEN predikaatti. Tarkastetaan, onko vertailtava arvo annetulla välillä. sarake BETWEEN arvo1 AND arvo2 SELECT tuotenimi FROM tuote WHERE ahinta BETWEEN 100 AND 200; = SELECT tuotenimi FROM tuote WHERE ahinta >= 100 AND ahinta <= 200; ASIAKAS astun CHAR(4) asnimi VARCHAR(15) kaup VARCHAR(10) tyyppi VARCHAR(10) mpiiri VARCHAR(10) [NOT] IN predikaatti. Tarkastetaan, kuuluuko vertailtava arvo esitettyyn joukkoon. Jokerimerkkejä ei voida käyttää. sarake IN (pilkkulista) SELECT tuotenimi FROM tuote WHERE mpiiri IN ( i, e ); = SELECT tuotenimi FROM tuote WHERE mpiiri LIKE i OR mpiiri LIKE e ; ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 14

15 Tulosten järjestäminen Tulostaulu voidaan järjestää vapaaehtoisella ORDER BY osalla. Lisämääre ASC (ascending) järjestää tulokset nousevaan (A Z) järjestykseen. Tämä on oletus. Lisämääre DESC (descending) järjestää tulokset laskevaan järjestykseen (Z A). ASIAKAS SELECT sarake[, sarake]* FROM taulu[, taulu]* [WHERE ehtolauseke[ operaattori ehtolauseke]*]? [ORDER BY sarake[ ASC DESC]?[, sarake[ ASC DESC]?]*]?; SELECT asnimi, kaup, tyyppi FROM asiakas WHERE mpiiri LIKE i ORDER BY asnimi; astun CHAR(4) asnimi VARCHAR(15) kaup VARCHAR(10) tyyppi VARCHAR(10) mpiiri VARCHAR(10) SELECT asnimi, kaup, tyyppi FROM asiakas ORDER BY asnimi DESC, kaup ASC, tyyppi DESC; ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 15

16 Haku useasta taulusta Relaatiotietokannassa haluttu tieto on tavallisesti jaettu eri relaatioihin. Asiakkaan tiedot ovat yhdessä taulussa, hänen tilauksensa toisessa jne. Tästä syystä useampaa kuin yhtä taulua koskevat hakulauseet ovat yleisiä. Tarkastellaan seuraavaksi useaan tauluun kohdistuvia hakulauseita. Tärkein yksittäinen asia useampaa kuin yhtä taulua koskevassa lauseessa on liitos. Liitoksen voi lähtökohtaisesti toteuttaa neljällä eri tavalla: 1. Alikyselynä käyttäen IN-predikaattia (toimii kolmiarvoisella logiikalla). 2. Alikyselynä käyttäen EXISTS-predikaattia (toimii kaksiarvoisella logiikalla). 3. Yksitasoisena ilman alikyselyä. 4. JOIN-predikaatilla. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 16

17 Liitos Tarkoituksena on tavallisesti löytää sarakkeiden yhteiset arvot kahdesta taulusta. Liitos toteutetaan tavallisesti viiteavaimia (viittaavaa ja viitattua) vertailemalla. Lasku_rivi-taulu: niiden tuotteiden tuotetunnukset, joista on joskus laskutettu. lasku_rivi laskuno tuotetun määrä l200 t101 1 l200 t104 2 l201 t101 3 l202 t107 1 l202 t104 Tuote-taulu: kaikkien tuotteiden tiedot. tuote tuotetun tuotenimi t101 t104 t105 t106 t107 Jollotin Kooppari Kukerrin Tukaani Furniture Yhteiset tuotetunnukset: t101 t104 t107 Ts. tuotteet, joista on joskus laskutettu. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 17

18 Alikysely IN-predikaatilla 1. Liitos voidaan toteuttaa alikyselynä käyttäen IN-predikaattia Kuten aikaisemmin esitettiin, IN-predikaatilla voidaan tarkastaa, kuuluuko vertailtava arvo johonkin joukkoon. Alikyselyssä IN-predikaatille ei anneta eksplisiittisesti vertailtavaa joukkoa, vaan joukko muodostetaan alikyselyn avulla. LASKU_RIVI TUOTE Pääkysely Alikysely SELECT tuotenimi FROM tuote WHERE tuotetun IN (SELECT tuotetun FROM lasku_rivi); Hae niiden tuotteiden nimet, joista on joskus laskutettu, ts. joita on joskus tilattu, ts. joita koskee ainakin yksi laskurivi. laskuno CHAR(4) tuotetun CHAR(4) maara INT tuotetun CHAR(4) tuotenimi VARCHAR(15) malli VARCHAR(10) ahinta INT vari VARCHAR(10) Jos oletetaan, että laskutettuja tuotteita ovat t101 ja t120, kysely voisi ajon aikana sieventyä näin: SELECT tuotenimi FROM tuote WHERE tuotetun IN ( t101, t120 ); HUOM. tämä ei ole tapa tehdä liitoksia, vaan havainnollistava esimerkki. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 18

19 Alikysely IN-predikaatilla IN-predikaatti ei tarvitse eksplisiittistä liitosehtoa, vaan liitos muodostetaan IN-predikaatin molemmin puolin. SELECT tuotenimi FROM tuote WHERE tuotetun IN (SELECT tuotetun FROM lasku_rivi); SELECT vuosi, lask_summa FROM lasku WHERE laskuno IN (SELECT laskuno FROM lasku_rivi WHERE tuotetun IN (SELECT tuotetun FROM tuote WHERE vari LIKE punainen ) ); lasku_rivi-taulun tuotetunsarakkeen arvo vastaa tuote-taulun tuotetun-sarakkeen jotakin arvoa. Hae niiden laskujen vuodet ja summat, jotka koskevat ainakin yhtä punaista tuotetta. LASKU_RIVI laskuno CHAR(4) tuotetun CHAR(4) maara INT LASKU laskuno CHAR(4) vuosi INT lask_summa INT tila VARCHAR(2) astun CHAR(4) TUOTE tuotetun CHAR(4) tuotenimi VARCHAR(15) malli VARCHAR(10) ahinta INT vari VARCHAR(10) ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 19

20 Alikysely IN-predikaatilla SELECT vuosi, lask_summa FROM lasku WHERE laskuno IN (SELECT laskuno FROM lasku_rivi WHERE tuotetun IN (SELECT tuotetun FROM tuote WHERE vari LIKE punainen ) ); TUOTE tuotetun CHAR(4) tuotenimi VARCHAR(15) malli VARCHAR(10) ahinta INT vari VARCHAR(10) LASKU_RIVI laskuno CHAR(4) tuotetun CHAR(4) maara INT LASKU laskuno CHAR(4) vuosi INT lask_summa INT tila VARCHAR(2) astun CHAR(4) tuote lasku_rivi lasku vari tuotetun tuotetun laskuno laskuno vuosi lask_summa punainen t210 t299 l400 l hyväksytään. punainen t222 t222 l400 l hyväksytään. sininen t299 t222 l401 l hylätään. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 20

21 Näkyvyysalue FROM-osissa esiteltyjen taulujen sarakkeisiin voidaan viitata sisemmissä alikyselyissä. Alikyselyiden FROM-osissa esiteltyjen taulujen sarakkeisiin ei voida viitata ulomman tason kyselyissä. Pääkysely. Tässä ei voida viitata alikyselyiden taulujen sarakkeisiin. Alikysely 1. Tässä voidaan viitata pääkyselyn taulun sarakkeisiin, mutta ei alikysely 2:n taulun. SELECT tuotenimi FROM tuote WHERE tuotetun IN (SELECT tuotetun FROM lasku_rivi WHERE laskuno IN (SELECT laskuno FROM lasku) ); Alikysely 2. Tässä voidaan viitata pääkyselyn ja alikysely 1:n taulujen sarakkeisiin. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 21

22 Luentotehtävä 3 Esitä seuraava kysely SQL-kielellä (voit käyttää apuna TIM:n tietokantaa): Hae niiden yritysasiakkaiden nimet ja kaupungit, jotka eivät ole Kouvolasta ja joita on laskutettu vuonna Asiakkuuden tyyppi on tallennettu muodossa y tai h (yritys- tai henkilöasiakas). [ Tuloksena: <Virtanen, Mikkeli> ja <Kassakko, Helsinki> ] ASIAKAS LASKU LASKU_RIVI TUOTE astun CHAR(4) laskuno CHAR(4) laskuno CHAR(4) tuotetun CHAR(4) asnimi VARCHAR(15) vuosi INT tuotetun CHAR(4) tuotenimi VARCHAR(15) kaup VARCHAR(10) lask_summa INT maara INT malli VARCHAR(10) tyyppi VARCHAR(10) tila VARCHAR(2) ahinta INT mpiiri VARCHAR(10) astun CHAR(4) vari VARCHAR(10) ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 22

23 Luentotehtävä 3: ratkaisu Hae niiden yritysasiakkaiden nimet ja kaupungit, jotka eivät ole Kouvolasta ja joita on laskutettu vuonna ASIAKAS LASKU LASKU_RIVI TUOTE astun CHAR(4) laskuno CHAR(4) laskuno CHAR(4) tuotetun CHAR(4) asnimi VARCHAR(15) vuosi INT tuotetun CHAR(4) tuotenimi VARCHAR(15) kaup VARCHAR(10) lask_summa INT maara INT malli VARCHAR(10) tyyppi VARCHAR(10) tila VARCHAR(2) ahinta INT mpiiri VARCHAR(10) astun CHAR(4) vari VARCHAR(10) SELECT asnimi, kaup FROM asiakas WHERE tyyppi LIKE y AND kaup NOT LIKE Kouvola AND astun IN (SELECT astun FROM lasku WHERE vuosi = 2014); ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 23

24 Tarkentimet Kahdessa tai useammassa taulussa voi olla saman nimisiä sarakkeita. Niihin tulee viitata yksiselitteisesti tarkentimilla. Tarkennin voi olla joko taulun nimi tai itse määritelty lauseen FROM-osassa. SELECT sarake[, sarake]* FROM taulu[ tarkennin]?[, taulu[ tarkennin]?]* [WHERE ehtolauseke[ operaattori ehtolauseke]*]? [ORDER BY sarake[ ASC DESC]?[, sarake[ ASC DESC]?]*]?; ASIAKAS astun CHAR(4) asnimi VARCHAR(15) kaup VARCHAR(10) tyyppi VARCHAR(10) mpiiri VARCHAR(10) SELECT asiakas.asnimi FROM asiakas, lasku WHERE asiakas.astun = lasku.astun AND asiakas.astun LIKE a101 ; SELECT a.asnimi FROM asiakas a, lasku l WHERE a.astun = l.astun AND a.astun LIKE a101 ; EI TOIMI: SELECT asnimi FROM asiakas, lasku WHERE astun = astun AND astun LIKE a101 ; LASKU laskuno CHAR(4) vuosi INT lask_summa INT tila VARCHAR(2) astun CHAR(4) ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 24

25 Alikysely EXISTS-predikaatilla 2. Liitos voidaan toteuttaa alikyselynä käyttäen EXISTS-predikaattia. EXISTS-predikaatti tarvitsee eksplisiittisen liitosehdon. Liitos muodostetaan aina alikyselyssä. Alikyselyn SELECT-osan valinnalla ei ole merkitystä, tavallisesti käytetään joko numeroa yksi tai tähtimerkkiä. SELECT t.tuotenimi FROM tuote t WHERE EXISTS (SELECT * FROM lasku_rivi lr WHERE t.tuotetun = lr.tuotetun); Hae niiden tuotteiden nimet, joita koskee ainakin yksi laskurivi. LASKU_RIVI laskuno CHAR(4) tuotetun CHAR(4) maara INT TUOTE tuotetun CHAR(4) tuotenimi VARCHAR(15) malli VARCHAR(10) ahinta INT vari VARCHAR(10) ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 25

26 Alikysely EXISTS-predikaatilla SELECT t.tuotenimi FROM tuote t WHERE EXISTS (SELECT * FROM lasku_rivi lr WHERE t.tuotetun = lr.tuotetun); SELECT l.vuosi, l.lask_summa FROM lasku l WHERE EXISTS (SELECT * FROM lasku_rivi lr WHERE l.laskuno = lr.laskuno AND EXISTS (SELECT * FROM tuote t WHERE lr.tuotetun = t.tuotetun AND t.vari LIKE punainen ) ); = = SELECT tuotenimi FROM tuote WHERE tuotetun IN (SELECT tuotetun FROM lasku_rivi); SELECT vuosi, lask_summa FROM lasku WHERE laskuno IN (SELECT laskuno FROM lasku_rivi WHERE tuotetun IN (SELECT tuotetun FROM tuote WHERE vari LIKE punainen ) ); TUOTE tuotetun CHAR(4) tuotenimi VARCHAR(15) malli VARCHAR(10) ahinta INT vari VARCHAR(10) LASKU_RIVI laskuno CHAR(4) tuotetun CHAR(4) maara INT LASKU laskuno CHAR(4) vuosi INT lask_summa INT tila VARCHAR(2) astun CHAR(4) ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 26

27 Yksitasoinen liitos 3. Liitos voidaan toteuttaa yksitasoisena ilman alikyselyitä. Liitosehto annetaan eksplisiittisesti lauseen WHERE-osassa. Toimintalogiikka sama kuin EXISTS-predikaatilla. SELECT t.tuotenimi FROM tuote t, lasku_rivi lr WHERE t.tuotetun = lr.tuotetun; SELECT l.vuosi, l.lask_summa FROM tuote t, lasku_rivi lr, lasku l WHERE t.tuotetun = lr.tuotetun AND lr.laskuno = l.laskuno AND t.vari LIKE punainen ; Lauseet vastaavat edellisen kalvon lauseita, jos liitosehdot toteuttavissa sarakkeissa ei ole tyhjäarvoja. HUOM. kaikki lauseita ei voi toteuttaa yksitasoisena, esim. ei-ole-olemassa-tapaus ja koostefunktioihin perustuva liitos. Näitä käsitellään myöhemmin. TUOTE tuotetun CHAR(4) tuotenimi VARCHAR(15) malli VARCHAR(10) ahinta INT vari VARCHAR(10) LASKU_RIVI laskuno CHAR(4) tuotetun CHAR(4) maara INT LASKU laskuno CHAR(4) vuosi INT lask_summa INT tila VARCHAR(2) astun CHAR(4) ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 27

28 Toisteisten rivien hylkääminen Jos jokaisesta tulostaulun rivistä halutaan uniikki, voidaan käyttää DISTINCT-lisämäärettä. Erilaiset liitokset (erityisesti yksitasoinen liitos) voivat tuottaa duplikaattirivejä tulostauluun. DISTINCT-lisämääre sijoitetaan tässä tapauksessa lauseen SELECT-avainsanan jälkeen. DISTINCT-lisämäärettä voidaan käyttää myös koostefunktioissa (esitellään myöhemmin). SELECT DISTINCT t.tuotenimi FROM tuote t, lasku_rivi lr WHERE t.tuotetun = lr.tuotetun; ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 28

29 Liitos JOIN-predikaatilla 4. Liitos voidaan toteuttaa JOIN-predikaatilla. JOIN-predikaatti eli sisäliitos on standardin versiossa SQL-92 lisätty tapa toteuttaa liitoksia. JOIN-predikaatti on syntaksiltaan vähemmän virhealtis kuin muut esitellyt liitostavat. SELECT sarake[, sarake]* FROM taulu [tarkennin]? [[INNER]? JOIN taulu [tarkennin]? ON liitosehto]+ [WHERE ehtolauseke[ operaattori ehtolauseke]*]? [ORDER BY sarake[ ASC/DESC]?[, sarake[ ASC/DESC]]*]?; SELECT l.vuosi, l.lask_summa FROM tuote t JOIN lasku_rivi lr ON t.tuotetun = lr.tuotetun JOIN lasku l ON lr.laskuno = l.laskuno WHERE t.vari LIKE punainen ; TUOTE tuotetun CHAR(4) tuotenimi VARCHAR(15) malli VARCHAR(10) ahinta INT vari VARCHAR(10) LASKU_RIVI laskuno CHAR(4) tuotetun CHAR(4) maara INT LASKU laskuno CHAR(4) vuosi INT lask_summa INT tila VARCHAR(2) astun CHAR(4) ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 29

30 Kyselyn suunnittelu 1. Ensin on syytä tarkastella tietokannan kaavaa ja tunnistaa ne taulut, joista tietoa halutaan tulostauluun. 2. Seuraavaksi etsitään ne taulut, joiden sarakkeisiin täytyy kohdistaa ehtolausekkeita, tällaisia ehtolausekkeita kutsutaan myös sisällöllisiksi ehdoiksi. 3. Seuraavaksi tarkastellaan, mitä muita tauluja mahdollisesti tarvitaan, jotta jo kyselyn kannalta relevanteiksi luokitellut taulut voidaan liittää liitosehdoilla. 4. Valitaan mahdolliset tarkentimet. Jos lauseessa käytetään tarkentimia, on suositeltavaa käyttää niitä koko lauseessa, vaikka jokin sarake se sellaista välttämättä tarvitsisikaan. 5. Ennen varsinaisen lauseen kirjoittamista täytyy tunnistaa, millä sarakkeilla liitosehdot voidaan tehdä. Suunnittele esim. piirtämällä. 6. Lopuksi kirjoitetaan kysely. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 30

31 Koostefunktiot Koostefunktioita (aggregate function) käytetään laskutoimitusten suorittamiseen. Niille annetaan tavallisesti yksi parametri, ja ne palauttavat yhden arvon. Koostefunktiot ovat minimi (MIN), maksimi (MAX), keskiarvo (AVG), summa (SUM) ja lukumäärä (COUNT). SUM käsittelee tyhjäarvoa kuten nollaa: 2+4+NULL+2 = 8. COUNT laskee vain sarakkeesta vain ne rivit (solut), joissa ei ole tyhjäarvoa: Matti + Teppo +NULL = 2. Koostefunktiot sijoitetaan lauseen SELECT- tai HAVING-osaan (esitellään myöhemmin). I Ei koostefunktioita WHERE-osaan. TYÖNTEKIJÄ ttnro palkka sukunimi t Jantunen t Kilpiö t Sammal t Räikkönen t005 Lassila Funktio Palauttaa arvon COUNT(palkka) 4 SUM(palkka) 8000 AVG(palkka) 2000 MAX(palkka) 3000 MIN(palkka) 1000 COUNT(DISTINCT palkka) 3 ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 31

32 Koostefunktiot AS-predikaatilla voidaan tarvittaessa nimetä tulostaulun sarakkeet kuvaavammin. COUNT(*) laskee taulun rivien lukumäärän. SELECT COUNT(DISTINCT kaup) AS kaupunkien lukumaara FROM asiakas; ASIAKAS astun CHAR(4) asnimi VARCHAR(15) kaup VARCHAR(10) tyyppi VARCHAR(10) mpiiri VARCHAR(10) TUOTE tuotetun CHAR(4) SELECT MAX(t.ahinta) - MIN(t.ahinta) AS hintaero FROM tuote t, lasku_rivi lr WHERE t.tuotetun = lr.tuotetun AND lr.maara > 1; SELECT SUM(ahinta)*1.22 AS yhteensa (plus alv) FROM tuote WHERE tuotenimi IS NOT NULL; SELECT COUNT(*) AS yritysasiakkaiden lukumäärä FROM asiakas WHERE tyyppi LIKE y ; Huomaa laskenta SELECT-osassa. Laskutoimituksia voidaan tehdä ilman koostefunktioitakin. tuotenimi VARCHAR(15) malli VARCHAR(10) ahinta INT vari VARCHAR(10) LASKU_RIVI laskuno CHAR(4) tuotetun CHAR(4) maara INT ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 32

33 Ryhmittely Koostefunktioiden tuloksia täytyy usein ryhmitellä jonkin toisen sarakkeen mukaan. Esim. tuotehintojen keskiarvot tuoteväreittäin. Ryhmittely tapahtuu GROUP BY määreellä, joka sijoittuu lauseessa heti WHERE-osan jälkeen. Ryhmittely vaatii, että ainakin yksi tulostaulun sarake on muodostettu ilman koostefunktiota (ns. ryhmittelevä sarake). Jos tulostaulussa on lisäksi ainakin yksi koostefunktion muodostama sarake, täytyy ryhmittely tehdä jokaisen ryhmittelevän sarakkeen mukaan. SELECT sarake[, sarake]* FROM taulu [tarkennin]?[, taulu [tarkennin]?]* [WHERE ehtolauseke[ operaattori ehtolauseke]*]? [GROUP BY sarake[, sarake]*]? [ORDER BY sarake[ ASC DESC]?[, sarake[ ASC DESC]]*]?; ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 33

34 Ryhmittely SELECT SUM(ahinta) AS hinta_yht, vari FROM tuote GROUP BY vari; hinta_yht vari 97 harmaa 2001 musta SELECT tyyppi, kaup, COUNT(*) AS asiakkaita 110 punainen FROM asiakas GROUP BY tyyppi, kaup; tyyppi kaup asiakkaita h Helsinki 15 h Jyväskylä 9 y Helsinki 2 y Jyväskylä 10 SELECT COUNT(*) AS asiakkaita, kaup FROM asiakas a, lasku l WHERE a.astun = l.astun GROUP BY kaup ORDER BY asiakkaita; Hae kaupungeittain sellaisten asiakkaiden lukumäärä, joita koskee ainakin yksi lasku. Järjestä tulokset asiakkaiden lukumäärän mukaan nousevaan järjestykseen. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 34

35 II Ryhmittely SELECT SUM(ahinta) FROM tuote; Jos yksikin tulostaulun sarake on koostefunktion muodostama, ryhmittely on tehtävä jokaisen ryhmittelevän sarakkeen mukaan. SELECT tuotenimi FROM tuote; Oikein. SELECT SUM(ahinta), AVG(ahinta) FROM tuote; SELECT SUM(ahinta), vari FROM tuote; VÄÄRIN. Ei ryhmitelty värin mukaan. SELECT malli, SUM(ahinta), vari FROM tuote GROUP BY vari; VÄÄRIN. Ei ryhmitelty mallin mukaan. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 35

36 Ryhmittely Joskus ryhmiteltyjä tuloksia täytyy rajata koostefunktion tuottaman arvon perusteella. Rajaus tehdään HAVING-osalla, joka sijoittuu GROUP BY- ja ORDER BY osien väliin. SELECT sarake[, sarake]* FROM taulu [tarkennin]?[, taulu [tarkennin]?]* [WHERE ehtolauseke[ operaattori ehtolauseke]*]? [GROUP BY sarake[, sarake]*]? [HAVING ehtolauseke[ operaattori ehtolauseke]*]? [ORDER BY sarake[ ASC DESC]?[, sarake[ ASC DESC]]*]?; SELECT COUNT(*) AS asiakkaita, a.kaup FROM asiakas a, lasku l WHERE a.astun = l.astun GROUP BY kaup HAVING COUNT(*) > 3; Hae kaupungeittain sellaisten asiakkaiden lukumäärä, joita koskee ainakin yksi lasku. Ota tuloksiin mukaan vain ne kaupungit, joissa asuu enemmän kuin kolme ehdot täyttävää asiakasta. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 36

37 Luentotehtävä 4 Esitä seuraavat kyselyt SQL-kielellä: a) Hae asiakkaita koskevien laskujen määrä asiakkaittain (asnimi). Rajaa tulokset niihin asiakkaisiin, joita koskee yli kaksi laskua. b) Hae laskutettujen tuotteiden kappalemäärät vuosittain ja tuoteväreittäin. ASIAKAS LASKU LASKU_RIVI TUOTE astun CHAR(4) laskuno CHAR(4) laskuno CHAR(4) tuotetun CHAR(4) asnimi VARCHAR(15) vuosi INT tuotetun CHAR(4) tuotenimi VARCHAR(15) kaup VARCHAR(10) lask_summa INT maara INT malli VARCHAR(10) tyyppi VARCHAR(10) tila VARCHAR(2) ahinta INT mpiiri VARCHAR(10) astun CHAR(4) vari VARCHAR(10) ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 37

38 Luentotehtävä 4: ratkaisu a) Hae asiakkaita koskevien laskujen määrä asiakkaittain (asnimi). Rajaa tulokset niihin asiakkaisiin, joita koskee yli kaksi laskua. b) Hae laskutettujen tuotteiden kappalemäärät vuosittain ja tuoteväreittäin. SELECT a.asnimi, COUNT(l.laskuno) AS laskuja FROM asiakas a, lasku l WHERE a.astun = l.astun GROUP BY a.asnimi HAVING COUNT(l.laskuno) > 2; SELECT l.vuosi, t.vari, SUM(lr.maara) AS kpl FROM tuote t, lasku_rivi lr, lasku l WHERE t.tuotetun = lr.tuotetun AND lr.laskuno = l.laskuno GROUP BY l.vuosi, t.vari; ASIAKAS LASKU LASKU_RIVI TUOTE astun CHAR(4) laskuno CHAR(4) laskuno CHAR(4) tuotetun CHAR(4) asnimi VARCHAR(15) vuosi INT tuotetun CHAR(4) tuotenimi VARCHAR(15) kaup VARCHAR(10) lask_summa INT maara INT malli VARCHAR(10) tyyppi VARCHAR(10) tila VARCHAR(2) ahinta INT mpiiri VARCHAR(10) astun CHAR(4) vari VARCHAR(10) ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 38

39 Skalaarifunktiot Koostefunktioiden (jotka ovat standardoituja) lisäksi on olemassa joukko skalaarifunktioita. Skalaarifunktioiden olemassa olo, nimi ja toiminta riippuvat vahvasti tuotteesta. Yleisiä skalaarifunktioita ovat esim. Pyöristys ja katkaisu, esim. ROUND( , 2) ja TRUNCATE( , 4). Tyyppimuunnokset, esim. TO_CHAR(100), TO_INT( 500 ), CAST(100) AS FLOAT) Merkkijonojen käsittely, esim. SUBSTRING(tilakoodi, FROM 1 FOR 5), UPPER( turska ) ja LOWER( NORJA ). Aikatiedon käsittely, esim. EXTRACT(YEAR FROM now()). SQL-rajapintaa voidaan myös käyttää laskutoimituksiin. SELECT 10 * 58 FROM dual; SELECT (SELECT ahinta FROM tuote WHERE tuotetun = 1000) + (SELECT ahinta FROM tuote WHERE tuotetun = 1008) FROM dual; ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 39

40 Tyypillisiä ongelmia: ei-ole-olemassa-tapaus Silloin tällöin tuloksiin halutaan taulun sellaiset rivit, joihin viittaavia arvoja ei löydy jostakin muusta taulusta. Vertailuun voidaan käyttää NOT EXISTS predikaattia, jonka alikysely palauttaa arvon false, jos yksikin ehdot täyttävä rivi löytyy tai true, jos yhtään ehdot täyttävää riviä ei löydy. NOT EXISTS vaatii aina eksplisiittisen liitosehdon! Vertailuun voidaan käyttää myös NOT IN predikaattia alikyselyn yhteydessä. Katso tarvittaessa edellisiä kalvoja IN- ja EXISTS-predikaattien toiminnasta ja syntaksista. Ei mahdollista yksitasoisella ratkaisulla! ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 40

41 Tyypillisiä ongelmia: ei-ole-olemassa-tapaus ASIAKAS LASKU LASKU_RIVI TUOTE astun CHAR(4) laskuno CHAR(4) laskuno CHAR(4) tuotetun CHAR(4) asnimi VARCHAR(15) vuosi INT tuotetun CHAR(4) tuotenimi VARCHAR(15) kaup VARCHAR(10) lask_summa INT maara INT malli VARCHAR(10) tyyppi VARCHAR(10) tila VARCHAR(2) ahinta INT mpiiri VARCHAR(10) astun CHAR(4) vari VARCHAR(10) SELECT a.asnimi FROM asiakas a WHERE NOT EXISTS (SELECT * FROM lasku l WHERE a.astun = l.astun); Hae sellaisten asiakkaiden nimet, joita ei ole koskaan (ts. ei kertaakaan) laskutettu. SELECT a.asnimi FROM asiakas a WHERE a.kaup LIKE Helsinki AND NOT EXISTS (SELECT * FROM lasku l WHERE a.astun = l.astun AND l.vuosi = 2011); Hae sellaisten helsinkiläisten asiakkaiden nimet, joita ei ole laskutettu kertaakaan vuonna SELECT t.tuotenimi FROM tuote t WHERE NOT EXISTS (SELECT * FROM lasku_rivi lr WHERE t.tuotetun = lr.tuotetun AND lr.maara > 10); Hae sellaisten tuotteiden nimet, joita ei ole koskaan tilattu yli kymmentä kappaletta kerralla. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 41

42 Tyypillisiä ongelmia: ei-ole-olemassa-tapaus SELECT a.asnimi FROM asiakas a WHERE NOT EXISTS (SELECT * FROM lasku l WHERE a.astun = l.astun); SELECT a.asnimi FROM asiakas a WHERE a.kaup LIKE Helsinki AND NOT EXISTS (SELECT * FROM lasku l WHERE a.astun = l.astun AND l.vuosi = 2011); SELECT t.tuotenimi FROM tuote t WHERE NOT EXISTS (SELECT * FROM lasku_rivi lr WHERE t.tuotetun = lr.tuotetun AND lr.maara > 10); SELECT asnimi FROM asiakas WHERE astun NOT IN (SELECT astun FROM lasku); SELECT asnimi FROM asiakas WHERE kaup LIKE Helsinki AND astun NOT IN (SELECT astun FROM lasku WHERE vuosi = 2011); SELECT tuotenimi FROM tuote WHERE tuotetun NOT IN (SELECT tuotetun FROM lasku_rivi WHERE maara > 10); ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 42

43 Tyypillisiä ongelmia: ei-ole-olemassa-tapaus III Ei-ole-olemassa-tapaus vaatii aina alikyselyn. Tehtävä: hae sellaisten asiakkaiden nimet, joita ei ole laskutettu kertaakaan vuonna oikein: SELECT a.asnimi FROM asiakas a WHERE NOT EXISTS (SELECT * FROM lasku l WHERE a.astun = l.astun AND l.vuosi = 2011); oikein: SELECT asnimi FROM asiakas WHERE astun NOT IN (SELECT astun FROM lasku WHERE vuosi = 2011); väärin: SELECT a.asnimi FROM asiakas a WHERE EXISTS (SELECT * FROM lasku l WHERE a.astun = l.astun AND l.vuosi <> 2011); väärin: SELECT a.asnimi FROM asiakas a, lasku l WHERE a.astun = l.astun AND l.vuosi <> 2011; Vastaavat kysymykseen: Hae sellaisten asiakkaiden nimet, joita on laskutettu ainakin kerran jonakin muuna vuonna kuin ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 43

44 Tyypillisiä ongelmia: alikyselyn tulosten vertailu vakioon SELECT a.asnimi FROM asiakas a WHERE 2 < (SELECT COUNT(l.laskuno) FROM lasku l WHERE a.astun = l.astun); SELECT a.asnimi FROM asiakas a WHERE 10 = (SELECT COUNT(l.laskuno) FROM lasku l WHERE a.astun = l.astun); Hae sellaisten asiakkaiden nimet, joita koskee ainakin kolme laskua. Hae sellaisten asiakkaiden nimet, joita koskee täsmälleen 10 laskua. I Ei koostefunktioita WHERE-osaan. Alikyselyn tuloksia voidaan vertailla myös sarakkeeseen: SELECT tuotenimi FROM tuote WHERE ahinta > (SELECT AVG(ahinta) FROM tuote); Hae sellaisten tuotteiden nimet, joiden hinta on tuotteiden keskimääräistä hintaa korkeampi. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 44

45 Tyypillisiä ongelmia: saman taulun usea läpikäynti Läpikäynnillä tarkoitetaan tässä yhteydessä taulun esittelyä hakulauseen FROM-osassa. Jos taulu halutaan tarkastaa useammin kuin kerran, on käytettävä apuna joko alikyselyiden mahdollistamia näkyvyysalueita tai useita tarkentimia yksitasoisessa ratkaisussa. SELECT asnimi, mpiiri FROM asiakas WHERE asnimi NOT LIKE 'Kajo' AND mpiiri IN (SELECT mpiiri FROM asiakas WHERE asnimi LIKE 'Kajo'); Hae niiden asiakkaiden nimet ja myyntipiirit, jotka toimivat samassa myyntipiirissä kuin Kajo. 2 asiakas asnimi Kajo Lipetti Laippa Hukari asiakas asnimi Lipetti Laippa Hukari mpiiri e k i e mpiiri k i e 4 3 asiakas asnimi Kajo Lipetti Laippa Hukari asiakas asnimi Kajo tulostaulu asnimi Hukari mpiiri e k i e mpiiri e mpiiri e 1 ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 45

46 Tyypillisiä ongelmia: saman taulun usea läpikäynti Hae niiden asiakkaiden nimet ja myyntipiirit, jotka toimivat samassa myyntipiirissä kuin Kajo. asiakas asnimi Kajo mpiiri e asiakas asnimi Kajo mpiiri e SELECT a1.asnimi, a1.mpiiri FROM asiakas a1, asiakas a2 WHERE a1.asnimi NOT LIKE Kajo AND a1.mpiiri = a2.mpiiri AND a2.asnimi LIKE Kajo ; SELECT a1.asnimi, a1.mpiiri FROM asiakas a1 WHERE a1.asnimi NOT LIKE Kajo AND EXISTS (SELECT * FROM asiakas a2 WHERE a1.mpiiri = a2.mpiiri AND a2.asnimi LIKE Kajo ); 2 Lipetti Laippa Hukari asiakas asnimi Lipetti Laippa Hukari k i e mpiiri k i e 3 Lipetti Laippa Hukari asiakas asnimi Kajo tulostaulu asnimi k i e mpiiri e mpiiri 1 4 Hukari e ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 46

47 Tyypillisiä ongelmia: jako-operaatio Jako-operaatiolle tyypillistä on tunnistaa, löytyykö liitosehdon muodostavan sarakkeen arvo liitoksen toisen puolen taulun jokaiselta riviltä. Hae sellaisten laskujen laskunumerot, jotka koskevat kaikkia tuotteita. SELECT DISTINCT lr1.laskuno FROM lasku_rivi lr1 WHERE NOT EXISTS (SELECT * FROM tuote t WHERE NOT EXISTS (SELECT * FROM lasku_rivi lr2 WHERE lr2.laskuno = lr1.laskuno AND lr2.tuotetun = t.tuotetun)); = SELECT laskuno FROM lasku_rivi WHERE tuotetun IN (SELECT tuotetun FROM tuote) GROUP BY laskuno HAVING COUNT(*) = (SELECT COUNT(*) FROM tuote); Ei ole olemassa sellaista tuotetunnusta, jota lasku ei koskisi. Laskua koskevia lasku_rivejä on yhtä monta kuin on tuotteita tuote-taulussa. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 47

48 Integroivia esimerkkejä SELECT asnimi FROM asiakas WHERE asnimi NOT LIKE 'Kassakko' AND astun IN (SELECT astun FROM lasku WHERE laskuno IN (SELECT laskuno FROM lasku_rivi WHERE tuotetun IN (SELECT tuotetun FROM lasku_rivi WHERE laskuno IN (SELECT laskuno FROM lasku WHERE astun IN (SELECT astun FROM asiakas WHERE asnimi LIKE 'Kassakko') ) ) ) ); Hae sellaisten asiakkaiden nimet, joita on joskus laskutettu samasta tuotteesta kuin Kassakko-nimistä asiakasta. asiakas ( asnimi, astun ) lasku ( laskuno, astun ) lasku_rivi ( laskuno, tuotetun ) lasku_rivi ( laskuno, tuotetun ) lasku ( laskuno, astun ) asiakas ( asnimi, astun ) tarkastetaan, että nimi ei ole Kassakko tarkastetaan, että nimi on Kassakko ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 48

49 Integroivia esimerkkejä SELECT asnimi FROM asiakas WHERE asnimi NOT LIKE 'Kassakko' AND astun IN (SELECT astun FROM lasku WHERE laskuno IN (SELECT laskuno FROM lasku_rivi WHERE tuotetun IN (SELECT tuotetun FROM lasku_rivi WHERE laskuno IN (SELECT laskuno FROM lasku WHERE astun IN (SELECT astun FROM asiakas WHERE asnimi LIKE 'Kassakko') ) ) ) ); = Liitostapoja voidaan yhdistellä: SELECT asnimi FROM asiakas WHERE asnimi NOT LIKE 'Kassakko' AND astun IN (SELECT astun FROM lasku l1 WHERE EXISTS (SELECT * FROM lasku_rivi lr1, lasku_rivi lr2, lasku l2, asiakas a WHERE l1.laskuno = lr1.laskuno AND lr1.tuotetun = lr2.tuotetun AND lr2.laskuno = l2.laskuno AND l2.astun = a.astun AND a.asnimi LIKE Kassakko ) ); Kaikissa lauseissa on 6 taulua ja 5 liitosta. = IV Lauseessa n taulua vaatii n-1 liitosta, pl. ristitulo. SELECT DISTINCT as1.asnimi FROM asiakas as1, asiakas as2, lasku l1, lasku l2, lasku_rivi lr1, lasku_rivi lr2 WHERE as1.astun = l1.astun AND l1.laskuno = lr1.laskuno AND lr1.tuotetun = lr2.tuotetun AND lr2.laskuno = l2.laskuno AND l2.astun = as2.astun AND as1.asnimi NOT LIKE 'Kassakko' AND as2.asnimi LIKE 'Kassakko'; ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 49

50 Integroivia esimerkkejä Hae sellaisten tuotteiden nimet, joita on ostettu ainakin kerran vuonna 2000 mutta ei kertaakaan vuonna TUOTE tuotetun CHAR(4) tuotenimi VARCHAR(15) malli VARCHAR(10) ahinta INT vari VARCHAR(10) SELECT t.tuotenimi FROM tuote t WHERE EXISTS (SELECT * FROM lasku_rivi lr, lasku l WHERE t.tuotetun = lr.tuotetun AND lr.laskuno = l.laskuno AND l.vuosi = 2000) AND NOT EXISTS (SELECT * FROM lasku_rivi lr, lasku l WHERE t.tuotetun = lr.tuotetun AND lr.laskuno = l.laskuno AND l.vuosi = 2001); Huomaa, että molemmat alikyselyt ovat ns. saman arvoisia, ts. ne eivät ole sisäkkäin. SELECT tuotenimi FROM tuote WHERE tuotetun IN (SELECT tuotetun FROM lasku_rivi WHERE laskuno IN (SELECT laskuno FROM lasku WHERE vuosi = 2000) ) AND tuotetun NOT IN (SELECT tuotetun FROM lasku_rivi WHERE laskuno IN (SELECT laskuno FROM lasku WHERE vuosi = 2001) ); LASKU_RIVI laskuno CHAR(4) tuotetun CHAR(4) maara INT LASKU laskuno CHAR(4) vuosi INT lask_summa INT tila VARCHAR(2) astun CHAR(4) ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 50

51 Integroivia esimerkkejä Hae sellaisten laskujen tiedot, jotka koskevat ainakin neljää erilaista tuotetta. LASKU laskuno CHAR(4) vuosi INT lask_summa INT tila VARCHAR(2) astun CHAR(4) SELECT * FROM lasku WHERE laskuno IN (SELECT laskuno FROM lasku_rivi GROUP BY laskuno HAVING COUNT(*) > 3); = SELECT * FROM lasku l WHERE 3 < (SELECT COUNT(*) FROM lasku_rivi lr WHERE lr.laskuno = l.laskuno); LASKU_RIVI laskuno CHAR(4) tuotetun CHAR(4) maara INT Hae osastoittain tunnukset ja palkkakeskiarvot osastoilta, joissa maksimipalkka on pienempi kuin koko yrityksen työntekijöiden keskipalkka: SELECT otun, AVG(ttpalkka) FROM tyontekija GROUP BY otun HAVING MAX(ttpalkka) < (SELECT AVG(ttpalkka) FROM tyontekija); HUOM. vertailu vaatii alikyselyn! TYONTEKIJÄ tttun CHAR(4) ttnimi VARCHAR(20) ttpalkka INT otun CHAR(4) ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 51

52 Vastaavuudet relaatioalgebran operaatioihin 1. Projektio π saavutetaan lauseen SELECT-osalla. SELECT tuotenimi, malli ; 2. Valinta σ saavutetaan lauseen WHERE-osan ehtolausekkeilla. WHERE ahinta > 100 AND ; 3. Yhdiste saavutetaan UNION-predikaatilla. SELECT laskuno FROM lasku UNION SELECT laskuno FROM lasku_rivi; Hae laskunumerot laskuja lasku_rivi-tauluista. 4. Leikkaus ja 5. liitos saavutetaan esim. EXISTS-predikaatilla. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 52

53 Vastaavuudet relaatioalgebran operaatioihin 6. Erotus saavutetaan esim. NOT EXISTS predikaatilla. 7. Jako-operaatio saavutetaan esim. NOT EXISTS predikaatilla tai koostefunktiolla. 8. Ristitulo saavutetaan joko SELECT-osan sarakelistalla ja hakemalla kahdesta taulusta ilman liitosehtoa tai CROSS JOIN predikaatilla. SELECT tuotenimi, maara FROM tuote, lasku_rivi; SELECT tuotenimi, maara FROM tuote CROSS JOIN lasku_rivi; ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 53

54 Muita vastaavuuksia 9. Ulkoliitos [LEFT RIGHT] OUTER JOIN SELECT DISTINCT t.tuotenimi, lr.laskuno, lr.maara FROM tuote t LEFT OUTER JOIN lasku_rivi lr ON t.tuotetun = lr.tuotetun ORDER BY t.tuotenimi DESC, lr.laskuno; Hae tuotteiden nimet ja lukumäärät, sekä kuinka paljon tuotteita on laskukohtaisesti laskutettu. Järjestä tulokset tuotenimen mukaan laskevaan järjestykseen ja edelleen laskunumeron mukaan nousevaan järjestykseen. Listaa myös ne tuotteet, joita ei ole laskutettu. 10. Luonnollinen liitos NATURAL JOIN luottaa tietokannan hyvään loogiseen suunnitteluun. Sarakkeiden nimien täytyy olla täsmälleen samat. SELECT sarakelista FROM taulu1 NATURAL JOIN taulu2; 11. Attribuuttilistan mukainen liitos samoin nimettyjen attribuuttien mukaan. SELECT sarakelista FROM taulu1 JOIN taulu2 USING (sarakelista); ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 54

55 TOP 5 -virheet 1. Liitosehtoja puuttuu. 2. Koostefunktio on sijoitettu lauseen WHERE-osaan. 3. Ei-ole-olemassa -tapaus on ratkaistu väärin. 4. Ryhmittely puuttuu tai on tehty väärin. 5. Kysymys on luettu huolimattomasti: sisällöllisiä ehtoja puuttuu. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 55

56 Stressikäyrä Sisältörunko 1. Johdanto 2. Käsitteellinen mallintaminen 3. Relaatiomalli 4. Transformointi 5. Relaatioalgebra 6. SQL 7. Tapahtumanhallinta 8. Normalisointi 9. Tietovarastointi 10. Hajautus 11. Tietokantaparadigmat Tässä ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 56

57 Taulurivien lisääminen Taulurivi lisätään INSERT-lauseella. Sarakkeet, joihin arvoja halutaan lisätä, voidaan antaa pilkkulistalla INTO-osassa. VALUES-osan pilkkulistassa annetut arvot tallennetaan INTO-osassa esiteltyyn vastaavaan sarakkeeseen. INSERT INTO taulu [(sarake[, sarake]*)]? VALUES (arvo[, arvo]*); INSERT INTO asiakas (astun, asnimi, kaup, tyyppi, mpiiri) VALUES ('a999', 'Jokinen Ry', 'Tampere', NULL, 'i'); ASIAKAS astun CHAR(4) asnimi VARCHAR(15) kaup VARCHAR(10) tyyppi VARCHAR(10) mpiiri VARCHAR(10) 1. sarake 2. sarake 3. sarake 4. sarake 5. sarake ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 57

58 Taulurivien lisääminen Jos INTO-osassa ei ole annettu pilkkulistaa, VALUES-osan arvot tallennetaan niitä vastaaviin sarakkeisiin: ensimmäinen arvo ensimmäiseen sarakkeeseen jne. Jos arvoa ei anneta VALUES-osassa, annetaan oletusarvo (tavallisesti NULL). INSERT INTO asiakas VALUES ( a809, Toivakka, Helsinki, y, e ); INSERT INTO asiakas (astun, tyyppi, mpiiri) VALUES ( a810, y, e ); ASIAKAS astun CHAR(4) asnimi VARCHAR(15) kaup VARCHAR(10) tyyppi VARCHAR(10) mpiiri VARCHAR(10) 1. sarake 2. sarake 3. sarake 4. sarake 5. sarake INSERT INTO asiakas VALUES ( a811, y, e ); VÄÄRIN. VALUES-osassa on liian vähän sarakkeita. TYONTEKIJA INSERT INTO asiakas (asnimi, kaup) SELECT (ttnimi, ttkaup) FROM tyontekija WHERE ttkkpalkka > 20000; INSERT INTO asiakas (astun, kaup) VALUES ( a101, (SELECT kaup FROM asiakas WHERE astun LIKE a100 )); tttun CHAR(4) ttnimi VARCHAR(15) ttkaup VARCHAR(10) ttkkpalkka INT ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 58

59 Taulurivien muokkaaminen Yhden taulun rivejä muokataan UPDATE-lauseella. UPDATE taulu SET sarake = lauseke[, sarake = lauseke]* [WHERE ehtolauseke[ operaattori ehtolauseke]*]?; WHERE-osan ehtolausekkeet päättävät, mitä rivejä muokataan. Jos WHERE-osa jätetään pois, muokataan taulun kaikkia rivejä. WHERE-osa voi sisältää miten monimutkaisia ehtoja tahansa. Kaikki tuotteet eivät salli itse määrättyjen tarkentimien käyttöä UPDATE-lauseessa. Turvallisin tapa on siis käyttää taulujen nimiä tarkentimina. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 59

60 Taulurivien muokkaaminen UPDATE tuote SET ahinta = ahinta * 1.15 WHERE vari LIKE harmaa ; UPDATE tuote SET ahinta = (SELECT MIN(ahinta) FROM tuote) WHERE vari IS NULL; UPDATE lasku SET tila = m WHERE EXISTS (SELECT * FROM lasku_rivi, tuote WHERE lasku.laskuno = lasku_rivi.laskuno AND lasku_rivi.tuotetun = tuote.tuotetun AND lasku.vuosi = 2015 AND tuote.tuotenimi LIKE Kellotin ); Korota harmaiden tuotteiden hintaa 15%. Muuta niiden tuotteiden, joiden väriä ei ole määritetty, hinta samaksi kuin halvimman tuotteen hinta. Vuonna 2015 myydyt Kellottimet olivat viallisia. Hyvitä asia kirjaamalla kaikki Kellottimia sisältäneet vuoden 2015 laskut maksetuiksi. TUOTE tuotetun CHAR(4) tuotenimi VARCHAR(15) malli VARCHAR(10) ahinta INT vari VARCHAR(10) LASKU_RIVI laskuno CHAR(4) tuotetun CHAR(4) maara INT LASKU laskuno CHAR(4) vuosi INT lask_summa INT tila VARCHAR(2) astun CHAR(4) ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 60

61 Luentotehtävä 5 MM-kisojen urheilijat palkitaan mitalien tyypin ja määrän mukaisesti seuraavan kaavan mukaan: palkkio = Σ mtyyppi * mmaara * missä mtyyppi: 3 = kulta, 2 = hopea, 1 = pronssi. Päivitä palkkiot olettaen, että a) urheilijalla voi olla vain yhden tyyppisiä mitaleja. b) urheilijalla voi olla usean tyyppisiä mitaleja. URHEILIJA urhtun CHAR(4) urhnimi VARCHAR(20) palkkiomaara INT MITALIT urhtun CHAR(4) mtyyppi INT mmaara INT ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 61

62 Luentotehtävä 5: ratkaisu Päivitä palkkiot olettaen, että a) urheilijalla voi olla vain yhden tyyppisiä mitaleja. b) urheilijalla voi olla usean tyyppisiä mitaleja. UPDATE urheilija SET palkkiomaara = (SELECT mtyyppi * mmaara * FROM mitalit WHERE urheilija.urhtun = mitalit.urhtun); UPDATE urheilija SET palkkiomaara = (SELECT SUM(mtyyppi * mmaara * 10000) FROM mitalit WHERE urheilija.urhtun = mitalit.urhtun); URHEILIJA urhtun CHAR(4) urhnimi VARCHAR(20) palkkiomaara INT MITALIT urhtun CHAR(4) mtyyppi INT mmaara INT ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 62

63 Taulurivien poistaminen Yhden taulun rivejä poistetaan DELETE-lauseella. DELETE FROM taulu [WHERE ehtolauseke[ operaattori ehtolauseke]*]?; Ilman WHERE-osaa poistetaan kaikki taulun rivit. WHERE-osa voi sisältää miten monimutkaisia ehtoja tahansa. Kaikki tuotteet eivät salli tarkentimien käyttöä DELETE-lauseessa. Turvallisin tapa on käyttää alikyselyitä. TUOTE tuotetun CHAR(4) tuotenimi VARCHAR(15) malli VARCHAR(10) ahinta INT vari VARCHAR(10) LASKU_RIVI laskuno CHAR(4) tuotetun CHAR(4) maara INT DELETE FROM tuote WHERE ahinta < 50 AND tuotetun NOT IN (SELECT tuotetun FROM lasku_rivi); Poista ne tuotteet, joiden hinta on alle 50 euroa ja joita ei koske yksikään lasku. ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 63

64 4.4 DDL: rakenteen määrittäminen Yleistä DDL:stä DDL (Data Definition Language) on SQL:n alikieli tietokannan rakenteen määrittämiseen ja tietokantaobjektien (taulut, näkymät, indeksit, triggerit jne.) hallintaan. DDL:n avulla tietokantaobjekteja voidaan luoda (CREATE), muokata (ALTER) ja poistaa (DROP). ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 64

65 4.4 DDL: rakenteen määrittäminen Tietokantaympäristö Tietokantaympäristön yleinen, standardiin perustuva rakenne koostuu neljästä kerroksesta: Tietokantapalvelin eli tietokantainstanssi on prosessi tai prosessiperhe, joka vastaa tietokantojen ylläpitämisestä. Tietokantapalvelin sijaitsee laitteen keskusmuistissa. Tietokantapalvelin pitää yllä katalogeja, jotka sijaitsevat tavallisesti massamuistissa. Katalogit koostuvat skeemoista eli nimiavaruuksista. Jokainen katalogi sisältää lisäksi DBMS:n luoman skeeman, jossa on tietokannan järjestelmätaulut eli metadata. Skeemat sisältävät katalogin tietokantaobjektit kuten taulut ja näkymät. Tietokantapalvelin (instanssi) Katalogi Katalogi Skeema Järjestelmätaulut Skeema Skeema Järjestelmätaulut Skeema Taulu Taulu Taulu Triggeri Taulu Taulu Triggeri Taulu Skeema Taulu Taulu Taulu Taulu Taulu Taulu Skeema Taulu Taulu ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 65

66 4.4 DDL: rakenteen määrittäminen Tietotyypit SQL-kieli on vahvasti tyypittävä, mikä tarkoittaa, että sarakkeelle annetaan tietotyyppi silloin, kun taulu luodaan. Yleisiä, standardin mukaisia tietotyyppejä ovat mm. Tietotyyppi Selite Käyttöesimerkki Esimerkkiarvo Esimerkkisarake CHAR, CHARACTER VARCHAR, CHARACTER VARYING Määrätyn mittainen merkkijono Vaihtelevan mittainen merkkijono CHAR(11) ABCD henkilötunnus VARCHAR(20) Aatami etunimi INTEGER, INT kokonaisluku INT 2000 syntymävuosi NUMERIC (desimaali)luku NUMERIC(7,2) kuukausipalkka BOOLEAN totuusarvo BOOLEAN true tilaus_vahvistettu DATE päivämäärä DATE 01 Jan 2016 tilauspvm TIMESTAMP aikaleima TIMESTAMP 01/01/ :01:00+02 maksuaika ARRAY lista INTEGER[7] 1, 2, 9, 12, 19, 24, 25 lottonumerot ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 66

67 4.4 DDL: rakenteen määrittäminen Taulujen luominen Taulu luodaan komennolla CREATE TABLE. Komennolla annetaan vähintään taulun nimi ja otsake tietotyyppeineen. Komennon yleinen syntaksi on seuraava: CREATE TABLE taulu ( sarake tietotyyppi[, sarake tietotyyppi]* ); Tavallisesti voidaan käyttää joko auki kirjoitettuja tietotyyppien nimiä tai lyhenteitä, esim. CHAR. CREATE TABLE tuote ( tuotetun CHARACTER(4), tuotenimi CHARACTER VARYING(15), malli CHARACTER VARYING(10), ahinta INTEGER, vari CHARACTER VARYING(10) ); TUOTE tuotetun CHAR(4) tuotenimi VARCHAR(15) malli VARCHAR(10) ahinta INT vari VARCHAR(10) ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 67

68 4.4 DDL: rakenteen määrittäminen Perusavain Taululle voidaan määrittää perusavain joko taulun luontikomennolla tai myöhemmin muokkaamalla taulua. Taulun luontikomennolla perusavaimen lisääminen muuttaa syntaksia seuraavalla tavalla: CREATE TABLE taulu ( sarake tietotyyppi [PRIMARY KEY]?[, sarake tietotyyppi]* ); CREATE TABLE tuote ( tuotetun CHAR(4) PRIMARY KEY, tuotenimi VARCHAR(15) [...] ); Tai, jos perusavain koostuu useammasta kuin yhdestä sarakkeesta: CREATE TABLE taulu ( sarake tietotyyppi[, sarake tietotyyppi]*[, PRIMARY KEY (sarake[, sarake]*)]? ); CREATE TABLE lasku_rivi ( laskuno CHAR(4), tuotetun CHAR(4), maara INT, PRIMARY KEY (laskuno, tuotetun) ); ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 68

69 4.4 DDL: rakenteen määrittäminen Viiteavain Viiteavain määritetään renkitaulun (viittaavan taulun) luonnin yhteydessä tai sitä myöhemmin muokkaamalla. Sarakkeiden täytyy olla samaa tietotyyppiä, merkkijonojen täytyy olla myös (maksimi)pituudeltaan samat. CREATE TABLE taulu ( sarake tietotyyppi[, sarake tietotyyppi]*[, PRIMARY KEY (sarake[, sarake]*)]?[, FOREIGN KEY (sarake[, sarake]*) REFERENCES isäntätaulu (sarake[, sarake]*)]* ); olettaen, että tuote- ja lasku-taulut on luotu aiemmin: CREATE TABLE lasku_rivi ( laskuno CHAR(4), tuotetun CHAR(4), maara INT, PRIMARY KEY (laskuno, tuotetun), FOREIGN KEY (laskuno) REFERENCES lasku (laskuno), FOREIGN KEY (tuotetun) REFERENCES tuote (tuotetun) ); ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 69

70 4.4 DDL: rakenteen määrittäminen Viiteavain Lisämääreillä voidaan vaikuttaa siihen, miten toimitaan, kun isäntätaulun (viitatun taulun) viitatun sarakkeessa arvoissa tapahtuu muutoksia (UPDATE) tai rivejä poistetaan (DELETE). RESTRICT estetään muutokset ja poistot viitatussa taulussa. SET NULL asetetaan tyhjäarvo viittaavan taulun vastaaville riveille. SET DEFAULT asetetaan oletusarvo viittaavan taulun vastaaville riveille. CASCADE vyörytetään viitatun taulun muutokset ja poistot viittaavaan tauluun. CREATE TABLE lasku_rivi ( laskuno CHAR(4), tuotetun CHAR(4), maara INT, PRIMARY KEY (laskuno, tuotetun), FOREIGN KEY (laskuno) REFERENCES lasku (laskuno) ON UPDATE RESTRICT ON DELETE SET NULL, FOREIGN KEY (tuotetun) REFERENCES tuote (tuotetun) ON UPDATE RESTRICT ON DELETE RESTRICT ); ITKA204 kevät 2016 Toni Taipalus Jyväskylän yliopisto 70

SQL - STRUCTURED QUERY LANGUAGE

SQL - STRUCTURED QUERY LANGUAGE SQL Peruskomentoja SQL - STRUCTURED QUERY LANGUAGE SQL on tietokantojen käsittelyyn kehitetty kieli Esimerkkejä kielellä hoidettavistaa toiminnoista: Tietokannan rakenteen määrittely ja muuttaminen Kyselyt

Lisätiedot

SELECT-lauseen perusmuoto

SELECT-lauseen perusmuoto SQL: Tiedonhaku SELECT-lauseen perusmuoto SELECT FROM WHERE ; määrittää ne sarakkeet, joiden halutaan näkyvän kyselyn vastauksessa sisältää

Lisätiedot

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

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet A271117, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

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

TIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 10 TU00AA48-2002 TU10S1E Hannu Markkanen 14.-15.11.2011 9/10/12 Helsinki Metropolia University of Applied Sciences 1 SQL: Monen taulun kyselyt

Lisätiedot

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta HELIA 1 (14) Luento SQL... 2 Historiaa... 2 Standardit... 3 Käyttö... 4 DDL... 5 Tietokantaobjektien määrittely... 5 SQL:n tietotyypit... 6 Eheyssääntöjen määrittely... 9 Indeksin määrittely... 11 Syntaksikuvaukset...

Lisätiedot

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

TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 8 XX00AA79-3013 TU12S2 Pasi Ranne 25.9.2013 25/9/13 Helsinki Metropolia University of Applied Sciences 1 Harjoitustyö Harjoitustöiden tilanne

Lisätiedot

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

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki 9.3.2010 HELIA TIKO-05 1 (22) SQL SQL... 2 Historiaa... 2 Standardit... 3 Käyttö... 4 Sql-komentojen kirjoittaminen... 5 DDL... 7 Tietokantaobjektien määrittely... 7 SQL:n tietotyypit... 8 Eheyssääntöjen määrittely...

Lisätiedot

Kyselyn yleisrakenne:

Kyselyn yleisrakenne: 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

Lisätiedot

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

Hakukyselyt: SELECT * FROM taulu WHERE sarake1 = Malli Nimi [WHERE sarake1 LIKE M% ] [WHERE BETWEEN ehto1 AND ehto2] [WHERE sarake1 IN/= (alikysely)] Tällä viikolla Kertaus SQL-asioista jatketaan SQL-tekstifuntio-harjoituksia tehdään pelifirman tietokannasta ER-malli MySQL:llä, tarkastellaan mallin toimivuutta ja korjataan, jos korjattavaa löytyy, tehdään

Lisätiedot

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

Harjoitustehtävä 1. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. SQL kysely Harjoitustehtävä 1 Puutarha Puutarhatunnus omistaja sijainti Vastuualue puutarhatunnus aluenumero maaperä, kosteus valaistus sijainti vastuutonttu Tonttu Tonttutunnus Istutus istutuspäivä paikka_alueella

Lisätiedot

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

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX SQL - perusteet SQL - yleistä Esa Salmikangas InMics SE Oy versio 16.6.2003 SQL - perusteet 1 SQL - perusteet 2 SQL Structured Query Language SQL on tietokantojen käsittelyyn kehitetty kieli yleisimmät

Lisätiedot

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

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot) SQL sisältää operaatiot tietokannan sisällön muodostamiseen ja ylläpitoon: insert - uusien rivien vienti tauluun delete - rivien poisto update - rivien muutos 1 Insert lauseella on kaksi muotoa: insert

Lisätiedot

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

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 11 TU00AA48-2002 TU10S1E Hannu Markkanen 22.11.2011 9/10/12 Helsinki Metropolia University of Applied Sciences 1 Indeksit Indeksit Taulun

Lisätiedot

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat CSE-A1200 Tietokannat 22.3.2016 CSE-A1200 Tietokannat 22.3.2016 1 / 35 Oppimistavoitteet: tämän luennon jälkeen Osaat tehdä SQL:llä kyselyitä, jotka käyttävät hyväkseen toisen kyselyn tuloksia (alikyselyt).

Lisätiedot

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

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

Lisätiedot

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

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2007 SQL:n perusteet. Harri Laine 1. SQL tietokantakieli. SQL tietokantakieli SQL tietokantakieli Relaatiomalliin pohjautuvat tietokannat Perustana relaatiomallin mukainen näkemys tietojen rakenteesta ja käsittelystä Tietokantojen rakenteen määrittelyssä ja käsittelymahdollisuuksissa

Lisätiedot

Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija Opintojaksolla: keskitytään relaatiotietokantojen teoriaan ja toimintaan SQL-kieli kyselykielenä

Lisätiedot

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

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 SQL-perusteet. Harri Laine 1. SQL tietokantakieli tietokantakieli :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

Lisätiedot

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 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

Lisätiedot

Liitokset - haut useaan tauluun

Liitokset - haut useaan tauluun Liitokset Liitokset - haut useaan tauluun Tavallisin liitos on valintaliitos ehtona =,!=, yhtäläisyysliitos (=) yleisin (vrt. Inner join) taulut liitetään toisiinsa yleensä avaimilla (perus-

Lisätiedot

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

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta] 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

Lisätiedot

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 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

Lisätiedot

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

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-valintaehto. SQL-valintaehto. Opettajien nimet: Opiskelijoiden pääaineet DO NOT PRINT THIS DOCUMENT SQL -valintaehto CREATE TABLE opettaja ( opetunnus varchar(12) NOT NULL, nimi varchar(40) NOT NULL, puhelin varchar(12), tyohuone varchar(12), PRIMARY KEY (opetunnus) ) ; CREATE

Lisätiedot

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat CSE-A1200 Tietokannat 29.3.2016 CSE-A1200 Tietokannat 29.3.2016 1 / 40 Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten tietokannan relaatioiden (taulujen) määrittelyt kirjoitetaan SQL:llä. Osaat

Lisätiedot

Relaation tyhjyyden testaaminen

Relaation tyhjyyden testaaminen Tulostaulun tyhjyyden testaaminen Luettele ne asiakkaat, joilla on sekä talletus että laina -konttorissa. (Leikkaus!) useita mahdollisia toteutustapoja INTERSECT sisäkysely sisäkysely + tulostaulun tyhjyyden

Lisätiedot

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

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2000 SQL- osa Harri Laine 1. SQL-valintaehto. SQL-valintaehto. DO NOT PRINTTHIS DOCUMENT SQL -valintaehto SQL-valintaehto CREATE TABLE opettaja ( opetunnus varchar(12) NOT NULL, nimi varchar(40) NOT NULL, puhelin varchar(12), tyohuone varchar(12), PRIMARY KEY (opetunnus)

Lisätiedot

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

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia Tällä viikolla Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia 1.) Mainitse tietokonepelistä (kuvitteellisesta tai todellisesta) esimerkkitilanteita,

Lisätiedot

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

2. Haet työntekijöiden tiedot etunimen mukaan nousevasti järjestettyinä. (ORDER BY) SELECT * FROM employees ORDER BY firstname ASC; Tällä viikolla Kotitehtävien läpikäynti SQL-harjoituksia, osa 1 Jatketaan Pelifirman tietovaraston suunnittelua: tietotyyppien kertaus, taulun luonti ER-kaavioon, taulun luonti kaavion avulla tietokantaan,

Lisätiedot

SQL-kielen perusteet. Tietokantojen perusteet 4.4.2008

SQL-kielen perusteet. Tietokantojen perusteet 4.4.2008 SQL-kielen perusteet Tietokantojen perusteet 4.4.2008 Sisällys Tietokannan käsittely ja ylläpito SQL tiedonmäärittelykielenä Tietokantataulun ja sen osien määrittely SQL tiedonkäsittelykielenä SQL-kysely

Lisätiedot

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

Kyselyt: Lähtökohtana joukko lukuja Laskukaava kertoo miten luvuista lasketaan tulos soveltamalla laskentaoperaatioita Relaatioalgebra Relaatiomalliin liittyy malli tietokannan käsittelystä Tietokannasta pitää pystyä hakemaan tietoa ja toisaalta tietokantaa on ylläpidettävä Tietokannan käsittelyn malli relaatioalgebra

Lisätiedot

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

Koostefunktiot. Viisi standardifunktiota: Esim. montako henkilöä on henkilo-taulussa: Funktiot Koostefunktiot Viisi standardifunktiota: AVG -- keskiarvo MIN -- pienin arvo MAX -- suurin arvo SUM -- summa COUNT-- lukumäärä Esim. montako henkilöä on henkilo-taulussa: SELECT Count(*) AS Lkm

Lisätiedot

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

Harjoitustehtävä 1. Harjoitustehtävän 1 ratkaisu. Harjoitustehtävä 1. Relaatioalgebra -liitokset (join) Liitos Harjoitustehtävän 1 ratkaisu Tonttu( tonttutunnus, nimi) Puutarha( puutarhatunnus, omistaja, sijainti ) Vastuualue ( puutarhatunnus->puutarha, aluenumero, maaperä, kosteus, valaistus, sijainti, vastuutonttu

Lisätiedot

3. Taulujen määrittely ja muuttaminen

3. Taulujen määrittely ja muuttaminen 3. Taulujen määrittely ja muuttaminen DDL: Taulujen luonti, muutos ja poisto DML: taulujen tietojen ylläpito Tapahtumien (transaktioiden) hallinta Näkymät, synonyymit ja muut tietokantaobjektit Taulujen

Lisätiedot

Relaatioalgebra. Kyselyt:

Relaatioalgebra. Kyselyt: Relaatioalgebra Relaatiomalliin liittyy malli tietokannan käsittelystä Tietokannasta pitää pystyä hakemaan tietoa ja toisaalta tietokantaa on ylläpidettävä Tietokannan käsittelyn malli relaatioalgebra

Lisätiedot

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN 3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN DDL: TAULUJEN LUONTI, MUUTOS JA POISTO DML: TAULUJEN TIETOJEN YLLÄPITO TAPAHTUMIEN (TRANSAKTIOIDEN) HALLINTA NÄKYMÄT, SYNONYYMIT JA MUUT TIETOKANTAOBJEKTIT TAULUJEN

Lisätiedot

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

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki HELIA TIKO-05 1 (17) SQL / DML 4 Alikyselyt...2 Joukko-operaatiot...7 Yhdiste, unioni...8 Leikkaus...9 Erotus... 10 Tietokannan datan muokkaus... 11 Lisäys... 11 Yhden rivin lisääminen... 12 Useamman rivin

Lisätiedot

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

Relaatioalgebra. Relaatioalgebra. Relaatioalgebra. Relaatioalgebra - erotus (set difference) Kyselyt: Relaatiomalliin liittyy malli tietokannan käsittelystä Tietokannasta pitää pystyä hakemaan tietoa ja toisaalta tietokantaa on ylläpidettävä Tietokannan käsittelyn malli relaatioalgebra määrittelee operaatiot,

Lisätiedot

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

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät HAAGA-HELIA Heti-09 1 (12) Näkymät Näkymät... 2 Eri tyyppisiä relaatioita... 2 Taulu - Tallennettu relaatio... 2 Tulosrelaatio - Kyselyn tulos... 2 Näkymä - Virtuaalirelaatio... 2 Näkymien määrittely...

Lisätiedot

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

Kirjoita jokaiseen erilliseen vastauspaperiin kurssin nimi, tenttipäivä, oma nimesi (selkeästi), opiskelijanumerosi ja nimikirjoituksesi Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, kurssikoe 29.2.2012 (vastauksia) Liitteenä on tiivistelmä SQL-syntaksista Kirjoita jokaiseen erilliseen vastauspaperiin kurssin

Lisätiedot

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

TIEDONHALLINNAN PERUSTEET - SYKSY 2013 TIEDONHALLINNAN PERUSTEET - SYKSY 2013 Kurssikoodi: Saapumisryhmä: Luento 5 XX00AA79-3013 TU12S2 Pasi Ranne 11.9.2013 11/9/13 Helsinki Metropolia University of Applied Sciences 1 Tietokannan normalisoinnin

Lisätiedot

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 DO NOT PRINT THIS DOCUMENT SQL:ssä joukko yhteenvetofunktioita (aggregate function, koostefunktio) AVG keskiarvo MIN pienin arvo (minimi) MAX suurin arvo (maksimi) SUM summa COUNT lukumäärä Yhteenvetofunktioita

Lisätiedot

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 DO NOT PRINT THIS DOCUMENT SQL:ssä joukko yhteenvetofunktioita (aggregate function, koostefunktio) AVG keskiarvo MIN pienin arvo (minimi) MAX suurin arvo (maksimi) SUM summa COUNT lukumäärä Yhteenvetofunktioita

Lisätiedot

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

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot DO NOT PRINT THIS DOCUMENT SQL:ssä joukko yhteenvetofunktioita (aggregate function, koostefunktio) AVG keskiarvo MIN pienin arvo (minimi) MAX suurin arvo (maksimi) SUM summa COUNT lukumäärä Yhteenvetofunktioita

Lisätiedot

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

HAAGA-HELIA TIKO-05 1 (19) ICT23a Tietokannan suunnittelu ja toteutus O.Virkki 4.9.2008 HAAGA-HELIA TIKO-05 1 (19) Relaatiomalli Relaatiomalli... 2 Peruskäsitteet... 3 Relaatio... 5 Attribuutti ja arvojoukko... 6 Monikko... 7 Säännöt... 8 Yksilön eheyssääntö ja Pääavain... 9 Viite-eheyssääntö

Lisätiedot

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta HELIA 1 (14) Luento Näkymät... 2 Relaatiotyypit... 2 Taulu - Tallennettu relaatio... 3 Näkymä - Virtuaalirelaatio... 3 Tulosrelaatio - Kyselyn tulos... 3 Otetaulut - Tauluun tallennettu kyselyn tulos...

Lisätiedot

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat CSE-A1200 Tietokannat 23.2.2016 CSE-A1200 Tietokannat 23.2.2016 1 / 36 Oppimistavoitteet: tämän luennon jälkeen Tunnet SQL:n perusteet ja osaat tehdä yksinkertaisia SQL-kyselyitä, esimerkiksi hakea relaatiosta

Lisätiedot

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

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista Helsingin yliopisto Tietojenkäsittelytieteen laitos 26.2.2014 (H.Laine) Tietokantojen perusteet Liitteenä: Tiivistelmä SQL-syntaksista Kirjoita jokaiseen erilliseen vastausarkkiin kurssin nimi, tenttipäivä,

Lisätiedot

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

HELIA TIKO-05 1 (15) ICT03D Tieto ja tiedon varastointi Räty, Virkki 25.10.2006 HELIA TIKO-05 1 (15) SQL / DML 3 Liitos...2 SQL-92:n join operaatio...4 SQL-89:n join operaatio:...5 Karteesinen tulo... 10 Ulkoliitos (Outer join)... 11 Vasemmanpuoleinen ulkoliitos... 12 Oikeanpuoleinen

Lisätiedot

Yleinen SQL. Yleinen SQL. SQL:n kehitys

Yleinen SQL. Yleinen SQL. SQL:n kehitys .ppt Yleinen sivu 1 Yleinen :n kehitys sivu 2... kokeiluja 1970 E F Codd: A Relational Model of Data for Large Shared Data Banks - Relational View on Data, relaatioalgebra, normalisointi 1974-79 Berkeley

Lisätiedot

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu 13.11.2000

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu 13.11.2000 HELIA 1 (15) Luento 2.7 Toiminnallisuutta tietokantaan... 2 Deklaratiivinen eheysvalvonta... 2 Proseduraalinen eheysvalvonta... 3 Eheysvalvonnan suunnittelusta... 4 Sääntöjen määrittely... 4 Toteutusvaihtoehdot...

Lisätiedot

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

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, , H.Laine Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, 3.5.2007, H.Laine Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, oma nimesi, syntymäaikasi ja nimikirjoituksesi

Lisätiedot

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

Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, tentin päiväys, oma nimesi, syntymäaikasi ja nimikirjoituksesi. Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, kurssikoe 4.3.2015, H. Laine Tehtävien mukana jaetaan sql-syntaksin tiivistelmä. Kirjoita kuhunkin erilliseen vastauspaperiin

Lisätiedot

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta Jouni Huotari Martti Laiho (materiaali on osa virtuaaliammattikorkeakoulun Tietokantaosaaja-opintokokonaisuutta) opintokokonaisuutta)

Lisätiedot

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

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5) Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,

Lisätiedot

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

Tietokantojen perusteet, s 1999 SQL- osa Harri Laine 1. SQL -ohjelmistojen markkinaosuuksia SQL. SQL - historiaa. SQL - standardointi SQL 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ä

Lisätiedot

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

joukko operaatioita, joilla relaatioista voidaan muodostaa uusia relaatioita joukko opin perusoperaatiot yhdiste, erotus, ristitulo, leikkaus DO NOT PRINT THIS DOCUMENT joukko operaatioita, joilla relaatioista voidaan muodostaa uusia relaatioita joukko opin perusoperaatiot yhdiste, erotus, ristitulo, leikkaus erityisiä relaatioalgebran operaatioita

Lisätiedot

SQL:N PERUSTEET MARKKU SUNI

SQL:N PERUSTEET MARKKU SUNI SQL:N PERUSTEET MARKKU SUNI Relaatiomallisen tietokannan käsittely Tietojen saanti, talletus ja päivitys tapahtuu SQL-kielellä Yhtä operaatiota sanotaan kyselyksi (query) Kyselyjä voidaan laittaa peräkkäin

Lisätiedot

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43 CS-A1150 Tietokannat 27.3.2018 CS-A1150 Tietokannat 27.3.2018 1 / 43 Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten tietokannan relaatioiden (taulujen) määrittelyt kirjoitetaan SQL:llä. Osaat päivittää

Lisätiedot

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

7.11.2006. Helsingin yliopisto/tktl Kyselykielet, s 2006 Relaatiokalkyylit. Harri Laine 1 perusteita - relaatiokalkyylit perusteita - relaatiokalkyylit Relaatioalgebra on luonteeltaan proseduraalinen tapa käsitellä tietoa. Tiedon haetaan sarjaksi järjestettyjen operaatioiden avulla. Edellä

Lisätiedot

HELIA 1 (12) Outi Virkki Tiedonhallinta 4.11.2000

HELIA 1 (12) Outi Virkki Tiedonhallinta 4.11.2000 HELIA 1 (12) Luento 4.3 Eheyssäännöt (Integrity Constraints)... 2 Eheyden valvonta... 3 Yksilön eheyssääntö... 4 Viite-eheyssäännöt... 5 Arvojoukkoeheyssäännöt... 8 Null-arvoista... 10 Sovelluskohtaiset

Lisätiedot

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

Helsingin yliopisto/ tktl DO Tietokantojen perusteet, s 2000 Relaatioalgebra 14.9.2000. Harri Laine 1. Relaatioalgebra DO NOT PRINT THIS DOCUMENT operaatiot, joilla relaatioista voidaan muodostaa uusia relaatioita joukko opin perusoperaatiot yhdiste, erotus, ristitulo, leikkaus erityisiä relaatioalgebran operaatioita projektio,

Lisätiedot

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

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta Tiedonhallinnan perusteet H11 Ovien ja kulun valvontajärjestelmän tietokanta Nimi: Mikko Haapanen Opiskelijanumero: 0900568 Ryhmä: T09L Työ tehty: 15.3.2010 Mikko Haapanen 15.3.2010 1(7) 1. Asiakasvaatimukset

Lisätiedot

Relaatiomalli ja -tietokanta

Relaatiomalli ja -tietokanta Relaatiomalli ja -tietokanta > Edgar. F. (Ted) Codd, IBM, 1969 < A Relational Model of Data for Large Shared Data Banks Communications of the ACM, Vol. 13, No. 6, June 1970, pp. 377-387. > 70-luvun lopulla

Lisätiedot

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty

Lisätiedot

TIETOKANTOJEN PERUSTEET MARKKU SUNI

TIETOKANTOJEN PERUSTEET MARKKU SUNI TIETOKANTOJEN PERUSTEET MARKKU SUNI SQL - KIELI TIETOJEN MUOKKAUS MARKKU SUNI Tarkastellaan tauluissa olevien tietojen muokkausta muokkauskäskyjä: INSERT UPDATE DELETE Kysymys kuuluu: Voiko tietoja muokata

Lisätiedot

Tietokannat II -kurssin harjoitustyö

Tietokannat II -kurssin harjoitustyö Tietokannat II -kurssin harjoitustyö Olli Opiskelija (123), olli.opiskelija@foo.fi Maija Mallioppilas (321), maija.mallioppilas@foo.fi 13.3. 2007 1 Sisältö 1 Tietokannan kuvaus 3 1.1 Tietokannan rakenne..................................

Lisätiedot

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); 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

Lisätiedot

Tietokantojen suunnittelu, relaatiokantojen perusteita

Tietokantojen suunnittelu, relaatiokantojen perusteita Tietokantojen suunnittelu, relaatiokantojen perusteita A277, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

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

Esimerkki. pankkien talletus- ja lainatietokanta: Yhdiste, leikkaus, erotus ym. Leikkaus (intersect) Yhdiste (Union) Erotus (except/minus) Leikkaus 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.

Lisätiedot

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

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä: Linux-harjoitus 6 Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä: http://www.mysql.com/, MySQL-tietokantaohjelman kotisivu. http://www.mysql.com/doc/en/index.html,

Lisätiedot

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); 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

Lisätiedot

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

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto Muita tietokantaobjekteja Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto Näkymät Näkymä (view) on looginen näyte tietokannan tauluista tai näkymistä Näkymä ei voi sisältää SELECT INTO,

Lisätiedot

Yhdiste, leikkaus, erotus ym.

Yhdiste, leikkaus, erotus ym. 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.

Lisätiedot

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

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO NÄKYMÄT Näkymä (view) on looginen näyte tietokannan tauluista tai näkymistä Näkymä ei voi sisältää SELECT INTO,

Lisätiedot

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

Kirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina Kirjasto Kevät 2001 Auvinen Annemari Niemi Anu Harjoitustyö 7.4.2001 Sisällysluettelo 1. Yleiskuvaus... 3 2. Vaatimukset... 3 2.1. Toiminnalliset... 3 2.1.1. Sisäänkirjautuminen... 3 2.1.2. Nimikkeiden

Lisätiedot

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); 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

Lisätiedot

CS-A1150 Tietokannat CS-A1150 Tietokannat / 39

CS-A1150 Tietokannat CS-A1150 Tietokannat / 39 CS-A1150 Tietokannat 20.2.2018 CS-A1150 Tietokannat 20.2.2018 1 / 39 Oppimistavoitteet: tämän luennon jälkeen Tunnet SQL:n perusteet ja osaat tehdä yksinkertaisia SQL-kyselyitä, esimerkiksi hakea relaatiosta

Lisätiedot

4.3.4 SQL kyselyt... 45

4.3.4 SQL kyselyt... 45 TIETOKANTOJEN PERUSTEET, OPETUSMONISTE OSA 3 SQL- KYSELYT Harri Laine 4.3.4 SQL kyselyt... 45 4.3.4.1 Tulostietomäärittely... 46 4.3.4.2 Viittaukset tauluihin ja sarakkeisiin... 49 4.3.4.3 Toistuvat tulosrivit...

Lisätiedot

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas Tiedonhallinnan perusteet Viikko 1 Jukka Lähetkangas Kurssilla käytävät asiat Tietokantojen toimintafilosofian ja -tekniikan perusteet Tiedonsäilönnän vaihtoehdot Tietokantojen suunnitteleminen internetiä

Lisätiedot

OpenOffice.org Base 3.1.0

OpenOffice.org Base 3.1.0 OpenOffice.org Base 3.1.0 Sisällysluettelo 1 Tietokannan luominen...1 2 Taulukon eli taulun luominen...3 3 Kysely...9 4 Raportti...14 1 Tietokannan luominen Tietokanta on kokoelma tietoja, joilla on yhteys

Lisätiedot

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44 CS-A1150 Tietokannat 2.4.2019 CS-A1150 Tietokannat 2.4.2019 1 / 44 Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten tietokannan taulujen (relaatioiden) määrittelyt kirjoitetaan SQL:llä. Osaat päivittää

Lisätiedot

ASTERI-OHJELMIEN SQL-ERIKOISKURSSI LUENTOKALVOT

ASTERI-OHJELMIEN SQL-ERIKOISKURSSI LUENTOKALVOT ASTERI-OHJELMIEN SQL-ERIKOISKURSSI LUENTOKALVOT MIKSI SQL? - voit tehdä rajattomasti erilaisia tilastoja, raportteja ja tulosteita juuri omaan tarpeeseesi, esim. o yritysjohdon tarpeisiin o myyntitilastot

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

Lisätiedot

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

Helsingin yliopisto/ tktl D Tietokantojen perusteet, s 2000 Relaatioalgebra. Harri Laine 1. Relaatioalgebra. Tietokantaoperaatiot tiedon haku kyselyt miten märitellään haettava tieto ylläpito-operaatiot lisäys, poisto, muuttaminen Kyselyt: lähtökohtana tietokannan tila joukkona relaatioita kyselyn tuloksena yksi

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

Tietokannat II -kurssin harjoitustyö

Tietokannat II -kurssin harjoitustyö Tietokannat II -kurssin harjoitustyö Jyri Lehtonen (72039), jkoleh@utu.fi Azad Hajipour (72187), azhaji@utu.fi 10.6.2007 Sisältö 1. Tietokannan kuvaus... 1 1.1 Tietokannan rakenne... 1 1.2 Relaatiokaava

Lisätiedot

TIETOKANNAT JOHDANTO

TIETOKANNAT JOHDANTO TIETOKANNAT JOHDANTO JOUNI HUOTARI & ARI HOVI 2000-2011 Tieto TAUSTAA Yritykselle tiedot ovat tärkeä resurssi päätöksenteon tukena (JIT) varastointi ja käyttö vaativat investointeja vrt. energia (lähde,

Lisätiedot

Python-ohjelmointi Harjoitus 2

Python-ohjelmointi Harjoitus 2 Python-ohjelmointi Harjoitus 2 TAVOITTEET Kerrataan tulostuskomento ja lukumuotoisen muuttujan muuttaminen merkkijonoksi. Opitaan jakojäännös eli modulus, vertailuoperaattorit, ehtorakenne jos, input-komento

Lisätiedot

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

KOOSTEFUNKTIOT. Viisi standardifunktiota: Esim. montako henkilöä on henkilo-taulussa: FUNKTIOT Viisi standardifunktiota: AVG -- keskiarvo MIN -- pienin arvo MAX -- suurin arvo SUM -- summa COUNT -- lukumäärä KOOSTEFUNKTIOT Esim. montako henkilöä on henkilo-taulussa: SELECT Count(*) AS Lkm

Lisätiedot

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

VINKKI: Katso Kentät Muistioon -painikkeella, mikä on taulukon nimen oikea kirjoitusasu. RATKAISUJA PULMAILMOITUKSIIN ASTERIOHJELMIEN SQLKYSELYISSÄ Virhe kyselyssä: Microsoft Jet tietokantamoduuli ei löydä syötetaulukkoa tai kyselyä Laskut. Varmista, että se on luotu ja että kirjoitit nimen

Lisätiedot

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

4.3.1 SQL tietokanta SQL:n kirjoitusasu SQL määrittelykielenä... 36 TIETOKANTOJEN PERUSTEET, OPETUSMONISTE OSA 2 SQL- TIETOKANNAN RAKENNE JA MÄÄRITTELYT Harri Laine 4.3 SQL TIETOKANTAKIELI... 33 4.3.1 SQL tietokanta... 34 4.3.2 SQL:n kirjoitusasu... 36 4.3.3 SQL määrittelykielenä...

Lisätiedot

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

Tällä viikolla. Kotitehtävien tarkistus Upotettu SQL Indeksi-harjoitus täydennetään pelifirman tietokantamallia SQL-tehtäviä Tällä viikolla Kotitehtävien tarkistus Upotettu SQL Indeksi-harjoitus täydennetään pelifirman tietokantamallia SQL-tehtäviä Seuraavissa harjoituksissa käytetään tukkukauppa-kantaa. 1. Hae kaikki toimittajat

Lisätiedot

2. Käsiteanalyysi ja relaatiomalli

2. Käsiteanalyysi ja relaatiomalli 2. Käsiteanalyysi ja relaatiomalli lehtori Pasi Ranne Metropolia ammattikorkeakoulu E-mail: pasi.ranne@metropolia.fi sivu 1 Tietokannan suunnitteluprosessin osat sivu 2 Käsiteanalyysi ER-mallinnus, tietomallinnus

Lisätiedot

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 S2008 Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT Jouni Huotari S2008 2 Proseduurit Ohjelmamoduuleita, jotka voidaan tallettaa tietokantaan (DBMS:n tietohakemistoon)

Lisätiedot

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

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009 PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009 PROSEDUURIT Ohjelmamoduuleita, jotka voidaan tallettaa tietokantaan (DBMS:n tietohakemistoon)

Lisätiedot

ITKA204 Tietokannat ja tiedonhallinnan perusteet

ITKA204 Tietokannat ja tiedonhallinnan perusteet ITKA204 Tietokannat ja tiedonhallinnan perusteet Kevä t 2016 To n i Ta i p a l u s Jy v ä s k y l ä n y l i o p i s t o Opettaja Työskennellyt Jyväskylän yliopistossa erilaisissa opetus- ja tutkimustehtävissä

Lisätiedot

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

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1 Tietokannan hallinta Kevät 2004 Jan Lindström R&G Chapter 1 Tietokannan hallinta 1. Johdanto (käsitteitä) 2. Tietokannan talletusrakenteet 3. Tietokannan hakemistorakenteet 4. Kyselyiden käsittely ja optimointi

Lisätiedot

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

HAAGA-HELIA TIKO - Heti09 1 (22) ICT05 Tiedonhallinta ja Tietokannat E.Räty, O.Virkki, M.Laiho HAAGA-HELIA TIKO - Heti09 1 (22) SQL SQL... 2 Historiaa... 2 Standardit... 3 Käyttö... 4 Sql-komentojen kirjoittaminen... 5 DDL... 7 Tietokantaobjektien määrittely... 7 SQL:n keskeiset tietotyypit... 8

Lisätiedot

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI Tarkastellaan Tietokannan fyysistä suunnittelua Menetelmän vaihetta 4 Looginen suunoitelma muutetaan toimiviksi tauluiksi Id enimi snimi muuta 1 Aki Joki xxx

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

Lisätiedot