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



Samankaltaiset tiedostot
SQL - STRUCTURED QUERY LANGUAGE

CSE-A1200 Tietokannat

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

SELECT-lauseen perusmuoto

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

TIETOKANNAN NORMALISOINTI JA NORMAALIMUODOT

Tietokantojen suunnittelu, relaatiokantojen perusteita

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

Kyselyn yleisrakenne:

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

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

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

Tietokannat II -kurssin harjoitustyö

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

CSE-A1200 Tietokannat

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

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

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

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

Liitokset - haut useaan tauluun

SQL:N PERUSTEET MARKKU SUNI

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

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

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

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Kuva 7.2 vastaustaulu harjoitukseen 7.2

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

HELIA 1 (14) Outi Virkki Tiedonhallinta

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

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

KÄSITEANALYYSI PROSESSINA JA TARVEANALYYSI

Käsiteanalyysi prosessina ja tarveanalyysi

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

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

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

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

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

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

Näkymät ja hakemistot

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

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

Opintopiiritehtävä 3: Verkkohuutokauppa

Relaation tyhjyyden testaaminen

HELIA SQL-harjoituksia 1(1) atk72d Versiopvm:

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-valintaehto. SQL-valintaehto. Opettajien nimet: Opiskelijoiden pääaineet

CS-A1150 Tietokannat CS-A1150 Tietokannat / 39

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

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

OUTER JOIN se vanha kunnon kaveri

Ohjelmoinnin perusteet Y Python

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.

T Testiraportti TR-3. ETL-työkalu

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

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

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

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

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

2. Käsiteanalyysi ja relaatiomalli

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

Relaatiomalli ja -tietokanta

Johdatus Ohjelmointiin

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

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

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

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla:

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

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

etunimi, sukunimi ja opiskelijanumero ja näillä

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

Yhdiste, leikkaus, erotus ym.

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


A TIETOKANNAT, 4 op Kevät TI09

Tietokannat II -kurssin harjoitustyö

Opiskeluoikeuksien maaran tiedonkeruu

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

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

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

A TIETOKANNAT, 3 op Syksy TI07. Teemu Saarelainen, lehtori Tietotekniikka teemu.saarelainen@kyamk.fi

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

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

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

Tietotyypit ja operaattorit

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

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

Tietueet. Tietueiden määrittely

Ehto- ja toistolauseet

Toteutusdokumentti. Aija. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteenlaitos

SQL-kielen perusteet. Tietokantojen perusteet

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

Sähköisen äänestyksen pilotti

Näkymät ja tiedon suojaus

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

Transkriptio:

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 opintomoniste Eri web-lähteet

SQL-relaatiokanta Relaatiokannassa tieto talletetaan siis tauluihin eli relaatioihin Relaatiot sisältävät rivejä eli monikkoja Relaatio voisi olla esimerkiksi: Opiskelija Opiskelija_ID Etunimi Sukunimi Osoite Puhelinnro Opintopisteet 000123 Olli Opiskelija Opiskelijankatu 1 A 2 045 6789 012 96 000124 Outi Opiskelija Opiskelijankatu 2 A 1 044 5678 901 120 000125 Ilona Insinööri Insinöörintie 42 050 9876 543 240

SELECT-lause Pääasiassa tietokannasta haetaan tietoa eli suoritetaan erilaisia hakuja SQL:ssä hakuja tehdään SELECT-lauseella, joka on yleensä (yksinkertaisesti) muotoa: SELECT <ominaisuuslista> FROM <taulut> WHERE <ehdot>; SELECT:n jälkeisessä ominaisuuslistassa luetellaan ne ominaisuudet, jotka halutaan mukaan tulokseen (*=kaikki) FROM:n jälkeisessä taulut-kohdassa luetellaan ne taulut, joihin haku kohdistuu WHERE:n jälkeen ehdot-osassa kerrotaan, mitkä kriteerit tulokseen tulevien rivien tulee täyttää

SELECT-lause Esimerkiksi äskeiseen Opiskelija-tauluun voitaisiin suorittaa haku: SELECT Etunimi,Sukunimi,Osoite FROM Opiskelija WHERE Sukunimi = Opiskelija ; Tämä haku palauttaisi seuraavan tuloksen: Etunimi Sukunimi Osoite Olli Opiskelija Opiskelijankatu 1 A 2 Outi Opiskelija Opiskelijankatu 2 A 1

SELECT-lause Ehtoihin voidaan sijoittaa useampikin rajoite Jos äskeiseen tauluun suoritetaan haku: SELECT Osoite FROM Opiskelija WHERE Etunimi = Outi AND Sukunimi = Opiskelija ; Saadaan tulos: Osoite Opiskelijankatu 2 A 1

SELECT-lause SELECT-lauseella saatu tuloskin on oikeastaan relaatio Tulosrelaation ominaisuuksien nimet voi myös vaihtaa haluamikseen: SELECT <ominaisuus> AS <uusi_nimi>; Esimerkiksi: SELECT Opiskelija_ID AS Tunnus, Opintopisteet AS op FROM Opiskelija; Tunnus op 000123 96 000124 120 000125 240

SELECT-lause Myös yksinkertaista laskentaa voi tehdä SELECT-lauseessa Esimerkiksi: SELECT Opiskelija_ID AS Tunnus, 2*Opintopisteet/3 AS opintoviikot FROM Opiskelija; Tunnus opintoviikot 000123 64 000124 80 000125 160

Useaan relaation viittaaminen SELECT-lauseessa voi viitata myös useaan relaatioon (FROMkohdassa) Oletetaan että Opiskelija-taulun lisäksi on erillinen taulu ilmoittautumisista kursseille Ilmoittautuminen Opiskelijatunnus Kurssitunnus 000123 A276007 000123 A276117 000124 A276007 Jos halutaan tietyn opiskelijan ilmoittautumiset, niin haun voisi tietysti tehdä kahdessa osassa ensin haettaisiin opiskelijan tunnus nimen perusteella ja sitten kurssit tunnuksen perusteella

Useaan relaation viittaaminen Haut voi kuitenkin yhdistää melko helposti FROM-kentässä listataan ne relaatiot, joiden ominaisuuksia tarvitaan WHERE-kentässä käytetään AND avainsanalla erotettuna kahta ehtoa Näin haku voisi olla: SELECT Kurssitunnus FROM Ilmoittautuminen, Opiskelija WHERE Opiskelijatunnus = Opiskelija_ID AND Name = Olli Opiskelija ; Ja tulokseksi tulisi: Kurssitunnus A276007 A276117

Rivimuuttujat Rivimuuttujilla voidaan relaatioille antaa lyhenteitä (tai aliaksia) seuraavasti: SELECT * FROM <taulun_nimi> AS <rivimuuttuja> WHERE ; Yhdelle relaatiolle voidaan antaa useampia rivimuuttujanimiä Tästä on hyötyä, jos joudutaan vertailemaan saman relaation eri rivejä keskenään Normaalilla kyselyllä tämä ei olisi mahdollista miten erotettaisiin kahden eri rivin samanniminen ominaisuus?

Rivimuuttujat Esimerkiksi voitaisiin hakea opiskelijoista samassa osoitteessa asuvat: SELECT Op1.Etunimi, Op1.Sukunimi, Op2.Etunimi, Op2.Sukunimi FROM Opiskelija AS Op1, Opiskelija AS Op2 WHERE Op1.Osoite = Op2.Osoite AND Op1.Opiskelija_ID < Op2.Opiskelija_ID; Mikäli jälkimmäistä ehtoa ei olisi, tulostuisivat nimet kahteen kertaan: Samassa osoitteessa asuvat opiskelijat löytyvät ensin niin, että Op1 on taulussa ensiksi oleva ja Op2 taulussa jälkimmäisenä oleva sen jälkeen niin, että Op1 on taulussa jälkimmäisenä oleva ja Op2 taulussa ensiksi oleva

Ehto-lausekkeista WHERE-kohdassa voidaan rajata hakua merkeillä: =, <>, <, >, <=, >= Ehtojen yhteydessä voi myös suorittaa laskentaa merkeillä: +, -, *, / Ehdoissa voi verrata asioita sekä relaatioiden attribuutteihin että vakioihin, merkkijonoihin, tms. Muista kuitenkin, että kaikki ominaisuudet, joita käytetään vertailujen yhteydessä pitää löytyä FROM-osan relaatioista

Merkkijonot Merkkijonojen samanlaisuutta voi vertailla LIKE-operaattorilla: SELECT * FROM <taulu> WHERE <ominaisuus> LIKE <kuvaus>; Tässä kuvaus on merkkijonon rakennetta kuvaava kaava, jossa voi käyttää erikoismerkkejä % ja _ Ehtolauseke % vastaa mitä tahansa merkkijonoa _ vastaa yhtä mitä tahansa merkkiä <ominaisuus> LIKE <kuvaus> on tosi, jos verrattava ominaisuus toteuttaa annetun rakennekaavan

SQL:n muita ominaisuuksia Jos kahdella eri relaatiolla on samanniminen ominaisuus, niin ne voidaan erotella käyttämällä relaation nimeä etuliitteenä Eli esimerkiksi: Opiskelija.Etunimi viittaa yksikäsitteisesti Opiskelija-relaation Etunimiominaisuuteen Joskus haun tulokseen voi tulla ns. kaksoiskappaleita (koska tulokset ovat itse asiassa monijoukkoja, eivät joukkoja) Nämä voidaan poistaa käyttämällä DISTINCT-avainsanaa ennen ominaisuuden nimeä: SELECT DISTINCT Sukunimi FROM Opiskelija;

Tuloksen järjestäminen Tuloksen rivit voidaan järjestää ORDER BY-operaattorilla: SELECT <attribuutti> FROM <taulu> ORDER BY <attribuutti>; Järjestys voidaan määritellä myös useamman attribuutin suhteen Järjestys on oletusarvoisesti kasvava (ascending) Järjestyksen voi määrittää laskevaksi lisäämällä DESCavainsana määrittelyn loppuun Esimerkki: SELECT * FROM Opiskelija ORDER BY Sukunimi DESC;

Koosteoperaattorit Koosteoperaattorit laskevat yhden arvon jostakin relaation sarakkeesta Koosteoperaattoreita ovat SUM summa AVG keskiarvo MIN pienin arvo MAX suurin arvo COUNT - sarakkeen arvojen lukumäärä (DISTINCT-määreellä saadaan erilaisten arvojen lukumäärä) Esimerkki: SELECT AVG(Opintopisteet) FROM Opiskelija; Lisäksi määritteellä GROUP BY voidaan tehdä ryhmittelyä tietyn sarakkeen arvon perusteella

Alikyselyt Alikyselyillä voidaan useampia kyselyjä ketjuttaa ja kyselyn osia korvata toisen kyselyn tuloksilla Alikyselyjä voidaan käyttää SELECT-lauseissa, WHERE, HAVING ja SELECT osissa INSERT, DELETE ja UPDATE -lauseissa Alikyselyn sisällä, alikyselyn alikyselyn sisällä, jne. Esimerkki: SELECT Etunimi, Sukunimi FROM Opiskelija WHERE Opintopisteet = (SELECT MAX(Opintopisteet) FROM Opiskelija);

Uuden taulun luonti: CREATE TABLE Uusi taulu voidaan luoda käyttämällä lausetta CREATE TABLE <taulun_nimi> (<attr1_nimi> <attr1_tyyppi>, <attr2_nimi> <attr2_tyyppi>, ); Taululle pitää siis antaa nimi ja määrittää sen ominaisuudet Sulkulausekkeen sisään tulevat taulun ominaisuuksien nimet ja tyypit pareittain pilkulla erotettuna

Uuden taulun luonti: CREATE TABLE Esimerkki: CREATE TABLE Suoritus (Suoritus_ID INT, Op_jakso_ID CHAR(7), Opiskelija_ID INT, Arvosana CHAR(1), Suorituspvm DATE); Tämä luo taulun nimeltään Suoritus, jossa on kaksi kokonaisluvun sisältävää ominaisuutta, yksi 7 merkkiä sisältävä, yksi yhden merkin sisältävä ja yksi päivämäärän sisältävä ominaisuus Mikäli halutaan, että ominaisuus ei saa jäädä tyhjäksi, niin attribuutin tyypin perään pitää lisätä määre NOT NULL

Tiedon lisääminen relaatioon: INSERT INTO Relaatioon voi lisätä uuden rivin käyttämällä lausetta INSERT INTO <taulun_nimi> VALUES (<arvo1>, <arvo2>, ); Lauseelle annetaan taulun nimi sekä määritellään jokaisen ominaisuuden arvo sulkulausekkeen sisään Esimerkki (lisätään edellisen kohdan Suoritukset tauluun): INSERT INTO Suoritukset VALUES(000123, 277007, 000124, S, 2008-10-06); Edellinen lisäisi Suoritukset tauluun seuraavanlaisen rivin Suoritus_ID Op_jakso_ID Opiskelija_ID Arvosana Suorituspvm 000123 277007 000124 S 2008-10-06

Tiedon lisääminen relaatioon: INSERT INTO Toinen vaihtoehto on antaa vain tiettyjen ominaisuuksien arvot: INSERT INTO <taulun_nimi> (<attr1>, <attr2>, ) VALUES (<arvo1>, <arvo2>, ); Esimerkki (lisätään edellisen kohdan Suoritukset tauluun): INSERT INTO Suoritukset (Op_jakso_ID, Opiskelija_ID, Arvosana, Suorituspvm) VALUES(277117, 000123, P, 2008-10-06); Tämä lisäisi Suoritukset tauluun (edellisen perään) seuraavanlaisen rivin Suoritus_ID Op_jakso_ID Opiskelija_ID Arvosana Suorituspvm 000123 277007 000124 S 2008-10-06 277117 000123 P 2008-10-06