SELECT-lauseen perusmuoto

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

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

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

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

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

SQL - STRUCTURED QUERY LANGUAGE

Kyselyn yleisrakenne:

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

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

Relaation tyhjyyden testaaminen

SQL:N PERUSTEET MARKKU SUNI

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

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

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

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

Kuva 7.2 vastaustaulu harjoitukseen 7.2

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

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

CSE-A1200 Tietokannat

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

CSE-A1200 Tietokannat

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

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

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

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

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

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

CS-A1150 Tietokannat CS-A1150 Tietokannat / 39

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

Liitokset - haut useaan tauluun

HELIA SQL-harjoituksia 1(1) atk72d Versiopvm:

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

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

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

Tietokantojen perusteet, syksy 1999 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

Ehto- ja toistolauseet

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

TIETOKANTOJEN PERUSTEET MARKKU SUNI

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

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

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

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

Relaatioalgebra. Kyselyt:

SPARQL(SPARQL Protocol and RDF Query Language)

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

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

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

13. Loogiset operaatiot 13.1

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

Yhdiste, leikkaus, erotus ym.

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

Tietokannat II -kurssin harjoitustyö

ASTERI-OHJELMIEN SQL-ERIKOISKURSSI LUENTOKALVOT

Java-kielen perusteita

2. Käsiteanalyysi ja relaatiomalli

Python-ohjelmointi Harjoitus 5

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

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

Makrojen mystinen maailma lyhyt oppimäärä

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

Excel 2010 ja QlikView. Mihin ja milloin pivot:ia voi käyttää

Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT

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

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

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

OUTER JOIN se vanha kunnon kaveri

13. Loogiset operaatiot 13.1

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

Opiskeluoikeuksien maaran tiedonkeruu

SQL-kielen perusteet. Tietokantojen perusteet

Java-kielen perusteet

SQL:N PERUSTEET MARKKU SUNI

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

Ohjelmoinnin perusteet Y Python

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

HELIA 1 (14) Outi Virkki Tiedonhallinta

1. Logiikan ja joukko-opin alkeet

TIETOKANTOJEN PERUSTEET MARKKU SUNI

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

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

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

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

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Virta_Latausraportti - Tarkistukset

LOGIIKKA johdantoa

Yleinen SQL. Yleinen SQL. SQL:n kehitys

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

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

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

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

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Tietotyypit ja operaattorit

Excel pivot. Sisällys

Ohjelmoinnin perusteet Y Python

RADAR - RANDOM DATA GENERATOR

HARJOITUS 1 Monen taulukkosivun käsittely

Loogiset konnektiivit

Harjoitus 5 (viikko 41)

Transkriptio:

SQL: Tiedonhaku

SELECT-lauseen perusmuoto SELECT <sarakelista> FROM <taululista> WHERE <valintaehdot>; <sarakelista> määrittää ne sarakkeet, joiden halutaan näkyvän kyselyn vastauksessa <taululista> sisältää ne taulut, joita kyselyn toteuttamiseksi tarvitaan Taululistan kaikista tauluista ei tarvitse olla sarakkeita mukana sarakelistassa (eli esiintyä tulostaulussa), niitä voidaan tarvita vain valintaehdoissa. <valintaehdot> kuvaavat kriteerit, jotka täyttävät rivit hyväksytään vastaukseen Tuloksena saadaan taulu, joka koostuu kyselyn määrittämistä sarakkeista ja riveistä Sarakelistan sarakkeiden järjestys määrää missä järjestyksessä sarakkeet ovat tulostaulussa WHERE voi puuttua Pasi Ranne 18.9.2013 Metropolia Ammattikorkeakoulu 3

SELECT FROM peruskysely Sarakkeet valitaan luettelemalla niiden nimet pilkuin erotettuna * -merkkiä käytetään kun halutaan FROM osassa määriteltyjen taulujen kaikki sarakkeet FROM-osassa määritellään taulu tai taulut, joista tietoa haetaan Jos kahdessa taulussa on samannimisiä sarakkeita, sarakkeiden nimiin on lisättävä tieto taulusta SELECT tallenneid, elokuva.elokuvaid FROM tallenne, elokuva; Pasi Ranne 18.9.2013 Metropolia Ammattikorkeakoulu 4

SELECT WHERE Rivit valitaan antamalla looginen lauseke, joka rajaa valittavat rivit Käytettävissä olevat loogiset vertailut : = on sama kuin < pienempi kuin > suurempi kuin <> eri(suuri) kuin <= pienempi ta yhtä kuin >= suurempi tai yhtä kuin Pasi Ranne 18.9.2013 Metropolia Ammattikorkeakoulu 6

SELECT WHERE Loogiset operaatiot x AND y X OR y NOT x Looginen ja Tosi jos ja vain jos x ja y ovat molemmat tosia Looginen tai Tosi jos x tai y tai molemmat tosia Looginen negaatio Tosi jos x on epätosi Arvoalue ja arvojoukko x BETWEEN a AND b x IN (a,b,c,d) Sama kuin (x>=a) AND (x<=b) Sama kuin (x=a) OR (x=b) OR (x=c) OR (x=d) Pasi Ranne 18.9.2013 Metropolia Ammattikorkeakoulu 7

ARVO NULL SQL:ssä on erityinen arvo puuttuvan tiedon käsittelyyn: NULL Loogisen vertailun tulos on epätosi, jos jompikumpi vertailtavista arvoista on NULL Aritmeettisen operaation tulos on NULL, jos jokin operaatioon osallistuvista arvoista on NULL NULL-arvoja voidaan vertailla operaatioilla IS ja IS NOT Esim. Puuttuko asiakkaan nimi? SELECT * FROM asiakas WHERE nimi IS NULL; Pasi Ranne 18.9.2013 Metropolia Ammattikorkeakoulu 8

SELECT-lause: tulosten järjestäminen SELECT <sarakelista> FROM <taululista> WHERE <ehdot> ORDER BY <sarake> [ASC DESC] [,] [ ] merkkien välissä oleva osa valinnainen ORDER BY lausekkeella määritellään, missä järjestyksessä kyselyn tulosrivit listataan: Yhden tai useamman sarakkeen mukaan järjestettynä Nousevassa (ASC) tai laskevassa aakkosjärjestyksessä (DESC) Ilman ORDER BY lauseketta tuloksien esittämisjärjestys on TKHJriippuvainen (sattumanvarainen) Viope oppintunti 8.1 Harjoittelua MySQL / videovuokraamokannalla Pasi Ranne 18.9.2013 Metropolia Ammattikorkeakoulu 10

Hahmontunnistus merkkijonoissa (Viope 17.2.3) WHERE sarake LIKE hahmo WHERE sarake NOT LIKE hahmo hahmo on merkkijono, johon voi sisältyä kaksi erikoismerkkiä: % mikä tahansa merkkijono _ mikä tahansa merkki LIKE K% NOT LIKE K% LIKE K LIKE %a LIKE %abc% Alkaa merkillä K Ei ala merkillä K Alkaa merkillä K, jota seuraa tasan 2 merkkiä Loppuu merkkiin a Sisältää merkit abc (missä tahansa merkkijonoa) Pasi Ranne 25.9.2013 Metropolia Ammattikorkeakoulu 4

Toistuvien arvojen poistaminen tuloksista (Viope 8.2.1) SELECT DISTINCT Esimerkki: asiakas(nimi, kaupunki) SELECT DISTINCT kaupunki FROM asiakas; Pasi Ranne 25.9.2013 Metropolia Ammattikorkeakoulu 5

SQL:n funktiot SQL-kielessä on valmiita funktioita, joiden avulla tauluista löytyvää tietoa voidaan käsitellä edelleen Skalaarifunktiot Kohdistuvat yksittäiseen arvoon ja palauttavat yhden arvon Koostefunktiot Palauttavat yhden arvon, joka lasketaan käyttämällä sarakkeen kaikkia arvoja Pasi Ranne 25.9.2013 Metropolia Ammattikorkeakoulu 7

Skalaarifunktiot esimerkkejä Laaja kirjo, tuotekohtaisia laajennuksia Merkkijonofunktioita UPPER () - muuttaa kirjaimet suuriksi LOWER() - muuttaa kirjaimet pieniksi Päivämääräfunktioita CURRENT_DATE() - nykyinen päivämäärä CURRENT_TIME() - nykyinen kellonaika EXTRACT - päivämäärän osan erottaminen SELECT EXTRACT (YEAR FROM syntaika) Samoin toimivat päivä (DAY) ja kuukausi (MONTH) Numerofunktioita ROUND desimaalien pyöristäminen SELECT ROUND(palkka*1.1,0) FROM henkilo Pasi Ranne 25.9.2013 Metropolia Ammattikorkeakoulu 8

Koostefunktiot Käyttö: SELECT funktio(sarake) FROM taulu Jos SELECT-lauseessa käytetään koostefunktioita, siinä ei voi olla tavallisia sarakkeita (paitsi GROUP BY lauseketta varten) Standardi-SQL:ssä on 5 eri koostefunktiota COUNT(sarake) sarakkeen arvojen lukumäärä (ei NULL) COUNT(DISTINCT sarake) erilaisten arvojen lukumäärä COUNT(*) - taulun rivien määrä AVG(sarake) sarakkeen arvojen keskiarvo SUM(sarake) sarakkeen arvojen summa MIN(sarake) sarakkeen pienin arvo MAX(sarake) sarakkeen suurin arvo Esimerkki henkilo(nimi, palkka) SELECT COUNT(*) FROM henkilo; SELECT AVG(palkka) FROM henkilo; Pasi Ranne 25.9.2013 Metropolia Ammattikorkeakoulu 9

Sarakkeen uudelleen nimeäminen Sarakkeelle voidaan antaa uusi nimi varatun sanan AS avulla Mihin tarvitaan? Jos tietokannassa olevan sarakkeen nimi on huonosti valittu Koostefunktioiden tulosten nimeäminen Tekstin lisääminen tuloksiin Esimerkki henkilo(nimi, palkka) SELECT COUNT(*) AS Työntekijöitä yhteensä: FROM henkilo; SELECT AVG(palkka) AS Keskipalkka FROM henkilo; Pasi Ranne 25.9.2013 Metropolia Ammattikorkeakoulu 10

Haun tulosten ryhmittely - GROUP BY SELECT <sarakelista> FROM <taululista> WHERE <rivien valintaehdot> GROUP BY <sarakelista> GROUP BY ryhmittelee haun tuloksen rivit yhden tai useamman sarakkeen perusteella ryhmiin Ryhmiin liitetään jokin koostefunktio SELECT-lausekkeessa Kaikkia SELECT-sarakelistan tavallisia sarakkeita (niitä joissa ei ole koostefunktiota), on käytettävä GROUP BY sarakelistassa! Esimerkki: proj_henk(ptun, htun, tunnit) SELECT htun, SUM( tunnit) FROM proj_henk GROUP BY htun SELECT ptun, htun, SUM(tunnit) FROM proj_henk GROUP BY ptun, htun Pasi Ranne 25.9.2013 Metropolia Ammattikorkeakoulu 11

Haun tulosten rajaus HAVING SELECT <sarakelista> FROM <taululista> WHERE <rivien valintaehdot> GROUP BY <sarakelista> HAVING <ryhmien valintaehdot> HAVING- ehdossa esiintyvien sarakkeiden täytyy esiintyä SELECTsarakelistassa (joko tavallisena sarakkeena tai koostefunktiona) Esimerkki: proj_henk(ptun, htun, tunnit) SELECT htun, SUM(tunnit) FROM proj_henk GROUP BY ptun, htun HAVING htun >=2000 AND htun <3000 SELECT htun, SUM(tunnit) FROM proj_henk GROUP BY htun HAVING SUM(tunnit) >= 500 Pasi Ranne 25.9.2013 Metropolia Ammattikorkeakoulu 12

Yhteenveto tulosten rajauksesta ja ryhmittelystä Ryhmiteltävä joukko (rivit) valitaan WHERE-lausekkeella Valinnan tulos ryhmitellään GROUP BY -lausekkeella Ryhmiteltyä joukko voidaan vielä rajata HAVINGlausekkeella Koostefunktioiden käyttöä koskevia sääntöjä: Koostefunktioita voi käyttää SELECT- ja HAVINGlausekkeissa Koostefunktioita ei voi käyttää WHERE-lausekkeen valintaehdoissa Koostefunktioita ja tavallisia sarakkeita voidaan käyttää samassa SELECT-lausekkeen sarakelistassa vain jos kaikkia tavallisia sarakkeita käytetään myös GROUP BY -lausekkeessa Pasi Ranne 25.9.2013 Metropolia Ammattikorkeakoulu 13