SQL - STRUCTURED QUERY LANGUAGE

Samankaltaiset tiedostot
Liitokset - haut useaan tauluun

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

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

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

SELECT-lauseen perusmuoto

3. Taulujen määrittely ja muuttaminen

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

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

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

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

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

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

CSE-A1200 Tietokannat

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

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

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

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

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

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

SQL-KIELEN PERUSTEET

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

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

Kyselyn yleisrakenne:

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

HELIA 1 (14) Outi Virkki Tiedonhallinta

Relaation tyhjyyden testaaminen

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

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

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

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

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

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

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

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

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

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

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

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

TIETOKANTOJEN PERUSTEET MARKKU SUNI

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

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

CSE-A1200 Tietokannat

SQL:N PERUSTEET MARKKU SUNI

SQL-KIELEN PERUSTEET

SQL-KIELEN PERUSTEET

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

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

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

Jouni Huotari & Tapani Äijänen Kalvot perustuvat pääosin Ari Hovin SQL-oppaaseen (Docendo 2004)

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

CSE-A1200 Tietokannat

Denormalisointia turvallisesti. Ougf syysseminaari Pörssitalo Helsinki Timo Raitalaakso

Kuva 7.2 vastaustaulu harjoitukseen 7.2

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

Opiskeluoikeuksien maaran tiedonkeruu

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

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

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

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

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

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

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

Tietokannat II -kurssin harjoitustyö

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

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

HELIA 1 (12) Outi Virkki Tiedonhallinta

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 K2009

Tietokantakurssit / TKTL

Tietokannat II -kurssin harjoitustyö

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

HELIA 1 (11) Outi Virkki Tiedonhallinta

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

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

Lohdutus - tietokantadokumentti

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

SQL-KIELEN PERUSTEET JOUNI HUOTARI KALVOT PERUSTUVAT PÄÄOSIN ARI HOVIN SQL-OPPAASEEN (DOCENDO 2004) 1. VERSIO: TAPANI ÄIJÄNEN

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

CS-A1150 Tietokannat CS-A1150 Tietokannat / 39

TIETOKANNAT JOHDANTO

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

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

2. Käsiteanalyysi ja relaatiomalli

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

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

Opintopiiritehtävä 3: Verkkohuutokauppa

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

Yhdiste, leikkaus, erotus ym.

Relaatiomalli ja -tietokanta

SQL-kielen perusteet. Tietokantojen perusteet

T Testiraportti TR-3. ETL-työkalu

Näkymät ja tiedon suojaus

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja.

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

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

Käsiteanalyysi prosessina ja tarveanalyysi

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

Transkriptio:

SQL Peruskomentoja

SQL - STRUCTURED QUERY LANGUAGE SQL on tietokantojen käsittelyyn kehitetty kieli Esimerkkejä kielellä hoidettavistaa toiminnoista: Tietokannan rakenteen määrittely ja muuttaminen Kyselyt tietokantaan ja laskenta tietokannan datalla Tietojen ylläpito: lisäykset, muutokset ja poistot Lisäksi SQL:n käyttö ohjelmoinnissa käyttö muiden kielien sisältä API-rajapinnat ohjelmointikieliin

PERUSKYSELYT - SELECT ERI MUODOISSA SQL-kielen keskeinen toiminto on kyselyiden tekeminen tietokantaan Kyselyissä SQL-kielen perusrakenne käsittää kolme avainsanaa, joista SELECT ja FROM ovat pakollisia: SELECT valitsee listan mukaiset sarakkeet (attribuutit) kyselyyn FROM määrittelee haettavat taulut WHERE määrittelee ehdot haettaville riveille (monikoille) SELECT * hakee kaikki sarakkeet SELECT ilman WHERE-ehtoa hakee kaikki rivit

SQL-KÄSKYN ESITYSTAPA JA RAKENNE SQL-kyselyn yleinen muoto: SELECT c1 [, c2, cn ] -- valitut sarakkeet FROM t1 [, t2, tm] -- valitut taulut WHERE [e1 ] -- kyselyn ehto GROUP BY [cx ] -- ryhmittelyehto HAVING [e2 ] -- ryhmittelyn hakuehto ORDER BY [cy ] -- lajitteluehto Kommentit alkavat yleensä kahdella viivalla /* Tällä tavoin voidaan merkitä pidempi kommentti monissa tuotteissa (mm. MySQL, Oracle, SQL Server) */ Monissa tuotteissa käskyn lopussa on puolipiste, mikä kertoo tuotteelle käskyn päättymisestä

SQL-ESIMERKKEJÄ Hae kaikki henkilöt, jotka ovat syntyneet v. 1975: SELECT * FROM henkilo WHERE syntvuosi = 1975 DISTINCT, mikäli mahdolliset toistot halutaan poistaa: SELECT DISTINCT myyja FROM tuote Haetaan kaikki tuotetiedot, lajittelu nimen mukaan: SELECT * FROM tuote ORDER BY TuoteNimi oletus = nouseva eli ASC (ASCENDING) laskeva = DESC (DESCENDING) Kysely, joka lajittelee ensisijaisesti sukunimen mukaan ja toissijaisesti etunimen mukaan, mutta näyttää kuitenkin ensin etunimen; kolmantena lajitteluperusteena palkka (suurin palkka ensin): SELECT etunimi, sukunimi, kunta, tutkinto, palkka FROM henkilo ORDER BY sukunimi, etunimi, palkka DESC

RIVIEN VALINTA: WHERE-EHTO WHERE-ehto voi sisältää vertailuoperaattoreita, <>, <=, >=,!=,!>,!<) BETWEEN -määreen IN -määreen LIKE -määreen AND, OR ja NOT -operaattoreita IS NULL tai IS NOT NULL -ehdon Merkkijonohaut: % = mikä tahansa merkkijono (Accessissa *) _ = joku merkki (Accessissa?) Kirjainkoolla on väliä (paitsi MS:n tuotteissa ja MySQL:ssä)

WHERE-ESIMERKKEJÄ SELECT tuote_nimi, hinta FROM tuote WHERE hinta BETWEEN 100 AND 1000 kaikki tuotenimet niistä tuoteryhmistä, joka päättyy sanaan "levy tai esim. levyt": SELECT tuote_nimi FROM tuote WHERE tuoteryhma LIKE '%levy_' ehtona on, ettei tuoteryhmä kuulu tulostimiin tai skannereihin: SELECT tuote_nimi, hinta FROM tuote WHERE tuoteryhma NOT IN ('tulostimet', 'skannerit') Puuttuva, tuntematon arvo ON null (ei siis välilyönti tms.) Haussa käytettävä IS-määrettä: WHERE sarake IS [NOT] NULL Esimerkiksi jos haetaan kaikki ne tuotteet (nimi ja hinta), joilla on jokin nimi: SELECT tuote_nimi, hinta FROM tuote WHERE tuote_nimi IS NOT NULL

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

KOOSTEFUNKTIOT, HAVING Koostefunktioita käytetään SELECT-lauseen sarakeluettelossa ja HAVING-lauseessa SELECT MAX(hinta), MIN(hinta) -- suurin ja pienin hinta FROM tuote WHERE-lauseessa koostefunktioita ei voi käyttää (vaan ne on laitettava HAVINGlauseeseen), esim. Haetaan myyjät, joiden myymien tuotteiden hinta yhteensä on yli 5000: SELECT myyja, SUM(hinta) -- tuotteiden hintojen summa FROM tuote GROUP BY myyja -- ryhmittely myyjän mukaan HAVING SUM(hinta) > 5000 DISTINCT-rajaus (toimii muissa tuotteissa paitsi Accessissa): SELECT COUNT(DISTINCT city) -- monestako kaupungista FROM authors -- kirjailijoita

RYHMITTELY - GROUP BY GROUP BY -ehdolla tiedot ryhmitellään jonkin sarakkeen tai sarakkeiden mukaan ryhmiin GROUP BY -ehdon ryhmiin kohdistetaan yleensä jokin summafunktio kaikki SELECTlistan lauseet, joissa ei ole funktiota, on lueteltava GROUP BY lauseessa! Esim. kunkin myyjän tuotteiden hintojen keskiarvo: SELECT myyja, AVG(hinta) FROM tuote GROUP BY myyja Kunkin myyjän myymien tuotteiden määrä SELECT myyja, COUNT(myyja) FROM tuote GROUP BY myyja

LIITOKSET - HAUT USEAAN TAULUUN Tavallisin liitos on valintaliitos ehtona =,!=, <=, >=, > yhtäläisyysliitos (=) yleisin (vrt. Inner join) taulut liitetään toisiinsa yleensä avaimilla (perus- ja viiteavain) Esim. SELECT AsiakasNimi, tilausnumero FROM asiakas INNER JOIN tilaus ON asiakas.asiakastunnus = tilaus.asiakastunnus; Kvalifiointi: taulun nimi sarakenimen eteen pakollista, jos saman niminen sarake kahdessa taulussa

PERINTEINEN LIITOS Liitosehto WHERE-lauseessa Esim. hae yrityksen nimi, ko. yrityksen henkilöiden nimet ja palkat yli 2500 tienaavista: SELECT yritys.yrtun, Nimi, -- Hae yrityksen tunnus, nimi Sukunimi, Etunimi, Palkka -- ja henkilön nimi + palkka FROM yritys, henkilo -- näistä tauluista WHERE yritys.yrtun = henkilo.yrtun -- Liitosehto! AND Palkka > 2500 -- Hakuehto palkalle ORDER BY Nimi -- Lajittelu

UUSI LIITOSSYNTAKSI (SUOSITELTAVAMPI) Liitosehto FROM-lauseessa Hae yrityksen nimi, ko. yrityksen henkilöiden nimet ja palkat yli 2500 tienaavista: SELECT yritys.yrtun, Nimi, -- Hae yrityksen tunnus, nimi Sukunimi, Etunimi, Palkka -- henkilön suku- ja etunimi + palkka FROM yritys -- YRITYS taulusta, joka INNER JOIN henkilo -- liitetään HENKILO-tauluun ON yritys.yrtun = henkilo.yrtun -- Liitosehto WHERE Palkka > 2500 -- Hakuehto palkalle ORDER BY Nimi -- Lajittelu

TAULUN LUONTI Taulu luodaan CREATE TABLE käskyllä: CREATE TABLE YRITYS ( YritysID smallint NOT NULL, YritysNimi varchar(80), Toimialakoodi char(10), YrLisaysPvm date DEFAULT Current_date, CONSTRAINT pk_yritysid PRIMARY KEY (YritysID)) Viite-eheys REFERENCES-määreellä, ks. Rajoitteet CONSTRAINT fk_yritys_toimialakoodi FOREIGN KEY (Toimialakoodi) REFERENCES TOIMIALA (Toimialakoodi) Hyvä käytäntö: rajoittimen nimi kertoo, mikä rajoitin on kyseessä ja mihin tauluun ja sarakkeeseen rajoitin kohdistuu

TAULUN MUUTOS Taulu muutetaan ALTER TABLE käskyllä, esim. sarakkeen lisäys (loppuun) ALTER TABLE yritys ADD COLUMN maa char (20) RAJOITTEET ELI PAKOTTEET (CONSTRAINTS) Määritellään CREATE TABLE tai ALTER TABLE - komennoissa Rajoitteita voidaan määritellä sarakkeille tai tauluille Rajoitteita ovat: avaimet: PRIMARY KEY, FOREIGN KEY ja UNIQUE oletusarvot ja raja-arvotarkistukset: DEFAULT ja CHECK esimerkki: ALTER TABLE dept ADD CONSTRAINT pk_deptno PRIMARY KEY (deptno), ADD priority SMALLINT DEFAULT 1, ADD CONSTRAINT chk_sukup CHECK (sukupuoli IN ( M, N ))

TAULUN POISTO Taulun poisto tapahtuu DROP TABLE -käskyllä, esim. DROP TABLE temp

TIETOJEN LISÄÄMINEN INSERT INTO taulu VALUES (arvot) Esim. INSERT INTO tuote(tuotenimi, hinta) VALUES ('SQL-opas', 20) Sarakkeiden nimiä ei tarvitse luetella, jos kaikille annetaan arvo tai niillä on oletusarvo tai ne sallivat Null-arvon; on kuitenkin suositeltavaa luetella ne! Taulusta toiseen: INSERT INTO taulu1 SELECT s1, s2 FROM taulu2

TIETOJEN MUUTTAMINEN ELI PÄIVITTÄMINEN UPDATE taulu SET arvo = uusiarvo [WHERE ehto] Olemassa olevien tietojen päivittäminen UPDATE tuote SET hinta = 120 WHERE tuoteid = 123 -- tuotteen 123 hinnaksi 120 Tai esim. 10 %:n hinnan lisäys: UPDATE tuotteet SET hinta = hinta * 1.1 Päivitys, jossa 2 taulua on liitetty toisiinsa UPDATE tuote SET varastosaldo = 10 FROM tuote INNER JOIN myyja ON tuote.myyjaid = myyja.myyjaid

TIETOJEN POISTAMINEN Rivien poistaminen taulusta DELETE {FROM} [taulun nimi] WHERE [ehto poistettaville riveille]: DELETE FROM tuote WHERE tuotenimi = 'auto'