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



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

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

Liitokset - haut useaan tauluun

SQL - STRUCTURED QUERY LANGUAGE

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

Kuva 7.2 vastaustaulu harjoitukseen 7.2

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

OUTER JOIN se vanha kunnon kaveri

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

Kyselyn yleisrakenne:

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

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

SQL:N PERUSTEET MARKKU SUNI

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

TIETOKANTOJEN PERUSTEET MARKKU SUNI

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

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

HELIA SQL-harjoituksia 1(1) atk72d Versiopvm:

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

SELECT-lauseen perusmuoto

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Tietokannat II -kurssin harjoitustyö

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

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

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

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

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

SQL:N PERUSTEET MARKKU SUNI

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

CSE-A1200 Tietokannat

Visma Business AddOn Tilauksen synkronointi. Käsikirja

OpenOffice.org Base 3.1.0

Oy Oticon Ab. Korvakappale.fi. Käyttöohje

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

Haaga-Helia / TIKO-05 1 (12) Tietokannan suunnittelu ja Toteutus Outi Virkki

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

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

16 IMPROMPTU-RAPORTOINTI HISTORIA-TAULUSTA

TIETOKANNAT JOHDANTO

Palaute - Koha-Suomi - Support #1510 Tukipyynnöt: Kohan raportit

CSE-A1200 Tietokannat

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

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Tietokannat II -kurssin harjoitustyö

Noutotilauksen tekeminen Pacsoft Online -palvelussa

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

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

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

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

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

18 LIITTYMÄT MUIHIN JÄRJESTELMIIN

HELIA 1 (11) Outi Virkki Tiedonhallinta

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

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Aloita kuljetuksen tilaaminen Unifaun Online-kuljetushallintajärjestelmän avulla.

Näkymät ja tiedon suojaus


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

TIETOKANTOJEN PERUSTEET MARKKU SUNI

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

TaikaLaskut. pikaohje

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Tilaajan pikaopas. kotijakelu.onemed.fi

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

TIETOJENKÄSITTELY/TIETOKANTA Tehtävä C

Opiskeluoikeuksien maaran tiedonkeruu

Kortinhaltijoiden valinta (1.vaihe)

Päivityspalvelu. Tietuekuvaus. Tietuekuvaus 1 (5) Päivityspalvelu. Julkinen - Public


Tilausvahvistus. Anttolan Urheilijat HENNA-RIIKKA HAIKONEN KUMMANNIEMENTIE 5 B RAHULA. Anttolan Urheilijat

Varastohotellin käyttöohjeet Voit halutessasi vaihtaa kieltä 2. Lisää käyttäjätunnus 3. Lisää salasana 4.

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

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

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

Automaster tai MBS. 2. ODBC - ajurin asennus (jos ei ole jo asennettu)

Ohjeet kirjautumiseen verkkokauppaan:

itaito Verkkokauppapalvelun Käyttöopas

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

ASTERI TILAUSTENKÄSITTELY Windows-ohjelma. Vuosipäivitys

Tietojärjestelmä tuotantoympäristössä. Sovellusohjelmat Helsingin ammattikorkeakoulu Stadia / Tekniikka ja liikenne Vesa Ollikainen

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

IIO10200 TIETOKANTAOHJELMOINTI (4 OP) OPINTOJAKSON ESITTELY JOUNI HUOTARI

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


SEJO OY VERKKOKAUPAN OHJEET: Tässä linkki verkkokauppamme sivustolle

Palveluseteli- ja ostopalvelujärjestelmän käyttö. Palveluntuottajan tietojen keruu

CS-A1150 Tietokannat CS-A1150 Tietokannat / 39

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

Virta_Latausraportti - Tarkistukset

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

Relaation tyhjyyden testaaminen

Jopox. Viestintäkanavien roolit & Aloitusopas

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

Sovellusarkkitehtuurit

Jouni Huotari OLAP-ohjetekstit kopioitu Microsoftin ohjatun OLAP-kuution teko-ohjeesta. Esimerkin kuvaus ja OLAP-määritelmä

Basware Supplier Portal

Treenitietokannan suunnitteludokumentti

Ryhmäkirjeen hyödyntäminen

Transkriptio:

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 joiden yhteyshenkilö on myyntiedustaja (tehtava-kenttä). SELECT * FROM toimittajat WHERE tehtava='myyntiedustaja' 2. Hae tilaukset, joiden rahti ylittää 2,5 miljoonaa. WHERE rahti>2500000 3. Hae tilaukset, joiden asiakastunnus on 'VINET' ja tilaus on vuodelle 2007. WHERE asiakastunnus='vinet' AND tilauspaiva>'2006-12-31' 4. Hae kaikki toimittajat, joissa yrityksen nimi on lyhyempi kuin 20 merkkiä. SELECT * FROM toimittajat WHERE LENGTH(yritys)<20 5. Hae kaikki toimittajat, joissa yrityksen nimi alkaa "L"-kirjaimella. SELECT * FROM toimittajat WHERE LEFT(yritys,1)='L

6. Hae kaikki tilaukset jotka on tehty ennen 20.7.2006. WHERE tilauspaiva<'2006-07-20' 7. Hae kaikki tilaukset jotka on tehty 20.7.2006 jälkeen. WHERE tilauspaiva>'2006-07-20' 8. Hae kaikki tilaukset jotka on tehty välillä 15.7. - 24.7.2006. WHERE tilauspaiva BETWEEN '2006-07-15' AND '2006-07-24' 9. Hae jokaisesta tilauksesta tilausnro, vastaanottajan nimi sekä toimitusosoitteen postinumero ja postitoimipaikka. SELECT tilausnro,vastaanottaja,postinumero,postitoimipaikka FROM tilaukset 10. Hae jokaisesta tuotteesta tuotteen nimi, yksikköhinta, varastosaldo sekä laske näistä kentistä tuotteelle varastoarvo. SELECT tuotenimi, yksikkohinta,varastossa, yksikkohinta*varastossa AS varastoarvo FROM tuotteet

Upotettu SQL SQL-käskyjä voi sisällyttää eli upottaa ohjelmointikieleen Yleisesti käytetään hyväksi API-rajapintoja ODBC, JDBC, ADO.Net Kolmikanta-arkkitehtuuri: 1) web-käyttöliittymä toimii työasemassa 2) sovellus web-palvelimessa 3) tietokanta omassa palvelimessaan

Upotettu SQL, C#-esimerkki

Upotettu SQL tietokannassa SQL-koodi kirjoitetaan tietokannan StoredProseduuriin tai Funktioon StoredProceduuria tai Funktiota voi kutsua sovellusohjelmasta: EXEC(sp_tietoja_kantaan) Tehokkuusnäkökulma: Tietojen suodatus on aina nopeampaa tietokannan päässä kuin sovellusohjelmassa Esimerkki

1) World-tietokantaan on tehty taulu index_test. Selvitä SELECT-lauseella ja kyselyajan avulla minkä kentän indeksiä kysely hyödyntää. 2) Selvitä samalla tavalla mikä on Sakilatietokannan film-taulun indeksoitu avain. Vaihtele ja yhdistele tämän jälkeen SELECT * FROM film kyselyyn WHERE-ehtoja release_year=2006 language_id=1 film_id=50 Mitä huomaat?

Pelit: lisää kenttä FK kokemus_id Kokemus: kytke Kokemus_Linkki tauluun Henkilo: kytke Koulutus_Linkki tauluun Henkilo: kytke Osastot-tauluun Myynti: lisää FK pvm_id Koulutus: kytke Koulutus_Linkki tauluun Koulutus: kytke Kalenteri-tauluun Lisätään taulu Hankinta, mallia Myynti-taulusta Osastot: kytke pvm_id Kalenteriin Yritys: irroitetaan kenttiä uudeksi tauluksi Tilinpaatos

11. Hae kaikki ruotsalaiset toimittajat joiden yhteyshenkilö on myyntiedustaja. SELECT * FROM toimittajat WHERE tehtava='myyntiedustaja' AND maa='ruotsi' 12. Hae tilaukset, joiden rahti ylittää 2,5 miljoonaa tai asiakastunnus on 'WILMK'. Lajittele tulos rahdin mukaan kalleimmat ensin. WHERE rahti>2500000 OR asiakastunnus='wilmk' ORDER BY rahti DESC 13. Hae tilaukset, joiden asiakastunnus on 'VINET' ja tilaus on vuodelle 2007. WHERE asiakastunnus='vinet' AND tilauspaiva>'2006-12-31' AND tilauspaiva<'2008-01-01 Tai BETWEEN tai YEAR()

14. Hae kaikki yritykset (vain yritys-kenttä), joissa yrityksen nimi on lyhyempi kuin 20 merkkiä sekä kaikista muista yrityksistä yritysnimestä 15 ensimmäistä merkkiä, ":"-merkki ja 4 viimeistä merkkiä (UNION-kysely). SELECT yritys FROM toimittajat WHERE LENGTH(yritys)<20 UNION SELECT CONCAT(LEFT(yritys,15),':',RIGHT(yritys,4)) FROM toimittajat WHERE LENGTH(yritys)>=20 15. Luetteloi tuotenimet, joita L-kirjaimella alkavat toimittajat toimittavat. (huomaa että taulun alias-nimi ei saa olla varattu sana kuten TO) SELECT tu.tuotenimi FROM tuotteet tu INNER JOIN toimittajat s ON tu.toimittajanro=s.toimittajanro WHERE LEFT(s.yritys,1)='L' 16. Hae alikyselyä apuna käyttäen (ei JOINia) kaikki tilaukset jotka on tehty ennen 20.7.2006 ja joiden rahtaajan nimi on 'Federal Shipping'. WHERE tilauspaiva<'2006-07-20' AND rahtaajanro IN ( SELECT rahtaajanro FROM rahtaajat WHERE nimi='federal Shipping')

17. Hae JOIN-kyselyllä kaikki tilausnumerot ja rahtaajan nimet tilauksista, jotka on tehty 20.7.2006 jälkeen. SELECT t.tilausnro, r.nimi FROM tilaukset t INNER JOIN rahtaajat r ON r.rahtaajanro=t.rahtaajanro WHERE t.tilauspaiva>'2006-07-20' 18. Hae kaikki tilaukset jotka on tehty välillä 15.7. - 24.7.2006 ja jotka sisältävät tuotetta 'Chang'. SELECT t.* FROM tilaukset t INNER JOIN tilaustiedot tt ON t.tilausnro=tt.tilausnro INNER JOIN tuotteet tu ON tt.tuotenro=tu.tuotenro WHERE t.tilauspaiva BETWEEN '2006-07-15' AND '2006-07-24' AND tu.tuotenimi='chang' 19. Hae tilauksista vastaanottajan nimien mukaan summattu rahtimaksu. SELECT vastaanottaja, SUM(rahti) FROM tilaukset GROUP BY vastaanottaja 20. Hae tuoteryhmittäin summattu varastoarvo. Kyselyn tuloksessa kentät tuoteryhma ja varastoarvo. SELECT tr.tuoteryhma, SUM(t.yksikkohinta*t.varastossa) AS varastoarvo FROM tuotteet t INNER JOIN tuoteryhmat tr ON tr.tuoteryhmanro=t.tuoteryhmanro GROUP BY tr.tuoteryhma

Käytetään tietokantaa "tukkukauppa 1) Hae työntekijän etunimi ja sukunimi sekä tämän esimiehen etunimi ja sukunimi (taulun JOIN itseensä) 2) Muokkaa rahtaajien puhelinnumeroa siten että suluissa oleva osa jää pois 3) Jatka puhelinnumeron muokkausta niin että väliviivan paikalle tulee välilyönti 4) Laske tilaustiedoista tilauksen rivihinta. Vastauksessa kentät tilausnro, tuotenro ja hinta. Käytä tavallisia laskuoperaattoreita +,-,*,/ 5) Yhdistä edelliseen tehtävään tuotteet-taulusta kenttä tuotenimi 6) Summaa edellisen tehtävän kysely tilausnro:ittain 7) Summaa edellisen tehtävän kysely tuotteittain (tuotenimi ja tuotenumero mukaan) 8) Summaa edellisen tehtävän kysely ilman GROUPpausta ja muunna tulos kokonaisluvuksi

Käytetään tietokantaa "tukkukauppa" 1) Hae työntekijän etunimi ja sukunimi sekä tämän esimiehen etunimi ja sukunimi (taulun JOIN itseensä) SELECT t1.etunimi, t1.sukunimi, t2.etunimi AS EM_etunimi, t2.sukunimi AS EM_sukunimi FROM tyontekijat t1 LEFT OUTER JOIN tyontekijat t2 ON t2.tyontekijanro=t1.esimies 2) Muokkaa rahtaajien puhelinnumeroa siten että suluissa oleva osa jää pois SELECT SUBSTRING(puhelin,7,8) FROM rahtaajat 3) Jatka puhelinnumeron muokkausta niin että väliviivan paikalle tulee välilyönti SELECT CONCAT(LEFT(SUBSTRING(puhelin,7,8),3)," ",RIGHT(SUBSTRING(puhelin,7,8),4)) FROM rahtaajat 4) Laske tilaustiedoista tilauksen rivihinta. Vastauksessa kentät tilausnro, tuotenro ja hinta. Käytä tavallisia laskuoperaattoreita +,-,*,/ SELECT tilausnro, tuotenro, ((yksikkohinta*maara)-(alennus*maara)) AS hinta FROM tilaustiedot 5) Yhdistä edelliseen tehtävään tuotteet-taulusta kenttä tuotenimi SELECT ti.tilausnro, tu.tuotenimi, ti.tuotenro, ((ti.yksikkohinta*ti.maara)-(ti.alennus*ti.maara)) AS summa FROM tilaustiedot ti INNER JOIN tuotteet tu ON tu.tuotenro=ti.tuotenro 6) Summaa edellisen tehtävän kysely tilausnro:ittain SELECT ti.tilausnro, SUM(((ti.yksikkohinta*ti.maara)-(ti.alennus*ti.maara))) AS summa FROM tilaustiedot ti INNER JOIN tuotteet tu ON tu.tuotenro=ti.tuotenro GROUP BY ti.tilausnro 7) Summaa edellisen tehtävän kysely tuotteittain (tuotenimi ja tuotenumero mukaan) SELECT tu.tuotenimi, ti.tuotenro, SUM(((ti.yksikkohinta*ti.maara)-(ti.alennus*ti.maara))) AS summa FROM tilaustiedot ti INNER JOIN tuotteet tu ON tu.tuotenro=ti.tuotenro GROUP BY tu.tuotenimi, ti.tuotenro 8) Summaa edellisen tehtävän kysely ilman GROUPpausta ja muunna tulos kokonaisluvuksi SELECT CAST(SUM(((ti.yksikkohinta*ti.maara)-(ti.alennus*ti.maara))) AS DECIMAL(9,0)) AS summa FROM tilaustiedot ti INNER JOIN tuotteet tu ON tu.tuotenro=ti.tuotenro

Ensi viikon aamun tunneilla vielä kertaillaan kurssilla läpikäytyjä asioita ja viimeisellä tunnilla on teoriakoe. Kokeeseen voi valmistautua kertaamalla Koudatasta aiempien tuntien materiaalit ja harjoittelemalla SQL-kyselyjä. Netistä voi myös poimia täydennystä relaatiotietokantojen perusteista ja SQLkielestä. Valmistelkaa myös oma SQL-oppaanne siihen kuntoon, että voitte sen ensi kerralla printata ja palauttaa. Oppaan ei tarvitse olla pitkä. Tärkeintä on, että SQL-kielestä on poimittu mielestänne keskeisiä kyselyesimerkkejä ja kommentoitu ne muutamalla sanalla. Muuta läksyä ei ole.