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



Samankaltaiset tiedostot
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-yhteenvetofunktiot. SQL-yhteenvetofunktiot

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

SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito

Kyselyn yleisrakenne:

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

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

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

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

SQL - STRUCTURED QUERY LANGUAGE

TIETOKANTOJEN PERUSTEET MARKKU SUNI

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

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

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

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

SQL-kielen perusteet. Tietokantojen perusteet

4.3.4 SQL kyselyt... 45

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

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

CSE-A1200 Tietokannat

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

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

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

3. Taulujen määrittely ja muuttaminen

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

5 SQL TIETOKANTAKIELI...33

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

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

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

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

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

Liitokset - haut useaan tauluun

Java ja tietokannan käsittely (JDBC)

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

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

Tietokanta projektin alussa: create table kurssin_tila ( NOT NULL VARCHAR2(60) create table kurssin_tyyppi ( create table opintojakson_tyyppi (

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

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

SELECT-lauseen perusmuoto

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

Tietokannat II -kurssin harjoitustyö

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

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

Tietokantakurssit / TKTL

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

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

HELIA 1 (14) Outi Virkki Tiedonhallinta

Denormalisointia turvallisesti. Ougf syysseminaari Pörssitalo Helsinki Timo Raitalaakso

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

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

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

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

1 YLEISTÄ (KS) SQL-TRAINER - KUVAUS NYKYISESTÄ JÄRJESTELMÄSTÄ (HL,KS) JATKOKEHITYKSEN VAATIMUKSET (HL,KS)...7

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

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

Yhteenvetofunktiot Näkymät Tietokannan ylläpito Tietokantatapahtumat... 88

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

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

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

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

HELIA 1 (11) Outi Virkki Tiedonhallinta

Opintopiiritehtävä 3: Verkkohuutokauppa

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

2. Käsiteanalyysi ja relaatiomalli

Näkymät ja tiedon suojaus

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

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

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

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

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

Opiskeluoikeuksien maaran tiedonkeruu

HELIA 1 (12) Outi Virkki Tiedonhallinta

INSERT INTO koulutus VALUES ( Helsinki, 22.6, 4);

Yhdiste, leikkaus, erotus ym.

SQL:N PERUSTEET MARKKU SUNI

Lohdutus - tietokantadokumentti

Ylläpitodokumentti. Oppimistavoitteiden hallintajärjestelmä harri

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

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia.

D B. Tietokannan hallinta - kurssin tavoite. Kurssilla opitaan periaatteet. Edellytyksenä osallistumiselle on Tietokantojen perusteiden hallinta

HAAGA-HELIA Heti-09 1 (14) ICT05: Tiedonhallinta ja Tietokannnat O.Virkki Transaktionkäsittely

Treenitietokannan suunnitteludokumentti

Relaatiomalli ja -tietokanta

Tietokannat II -kurssin harjoitustyö

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

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

OUTER JOIN se vanha kunnon kaveri

HELIA 1 (14) Outi Virkki Tiedonhallinta

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

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

Tietotekniikan laitos Käki-projekti TIETOKANTASUUNNITELMA. 1. Johdanto

Transkriptio:

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 into taulu [(sarakenimet)] values (arvot) tällä muodolla lisätään yksi rivi ja arvot annetaan vakioina tai vakioihin perustuvina lausekkeina insert into taulu [(sarakenimet)] kysely tällä muodolla kyselyn tulosrivit lisätään tauluun 2

CREATE TABLE kurssi ( koodi numeric(8) NOT NULL, nimi varchar(40) NOT NULL, opintoviikot numeric(5,1) NOT NULL, luennoija varchar(12), PRIMARY KEY (koodi ), FOREIGN KEY (luennoija) REFERENCES opettaja) insert into kurssi values (1234, Tietokantojen perusteet,2, HLAINE ); lisää tauluun kokonaisen rivin 3 Jos luennoijaa ei tiedetä voidaan lisäys tehdä seuraavasti: insert into kurssi values (1234, Tietokantojen perusteet,2,null); tai insert into kurssi (koodi, nimi, opintoviikot) values (1234, Tietokantojen perusteet,2); sarakeluetteloa käytetään siis silloin kun annetaan vain osa sarakkeista käytöllä voi myös varautua taulun rakenteen muutoksiin (sarakeluetteloa ei toistaiseksi voi käyttää Trainer-harjoituksissa) 4

Jos luennoijan tunnusta ei tiedetä, voitaisiin lisäys tehdä seuraavasti (kaikki kyselyn tulosrivit lisätään): insert into kurssi select (1234, Tietokantojen perusteet, 2, opetunnus) from opettaja where nimi= Laine Harri ; Tämä toimii odotetusti, jos kannassa on vain yksi tämän niminen opettaja, muuten lisäys kaatuu avaimen yksikäsitteisyysvirheeseen, sillä lisäys epäonnistuu, jos se rikkoo eheysehtoja 5 Kurssille Ohjelmoinnin perusteet ilmoittautuneiden opiskelijoiden kopiointi kurssin Java-ohjelmointi vastaaviin ryhmiin: CREATE TABLE ilmoittautuminen ( kurssikoodi numeric(8) not null, ryhmanro numeric(2) not null, opisknro numeric(5) NOT NULL, ilm_aika date NOT NULL, PRIMARY KEY (opisknro, kurssikoodi), FOREIGN KEY (kurssikoodi, ryhmanro) REFERENCES harjoitusryhma on delete cascade, FOREIGN KEY (opisknro) REFERENCES opiskelija ) 6

Oracle-SQL:llä Insert into ilmoittautuminen select java.kurssikoodi, ryhmanro, opisknro, sysdate from kurssi java, kurssi ohpe, ilmoittautuminen where java.nimi= Java-ohjelmointi and ohpe.nimi= Ohjelmoinnin perusteet and ohpe.koodi=ilmoittautuminen.kurssikoodi; Luodaan uusia rivejä ilmoittautuminen tauluun: ryhmä- ja opiskelijanumero otetaan Ohjelmoinnin perusteet kurssin liittyviltä ilmoittautumisriveiltä, kurssikoodiksi otetaan javaohjelmoinnin kurssikoodi ja päiväykseksi nykyhetki. 7 Rivien muutokset (update) update taulu set sarake1=lauseke1 [, sarake2=lauseke2, ] [where kohteen rajausehdot] samalla kertaa voi muuttaa useiden sarakkeiden sisältöä, muutetaan kaikki where-ehdon täyttävät rivit jos ehto puuttuu muutetaan kaikki taulun rivit 8

Muutetaan kurssin Java-ohjelmointi opintoviikkomäärä opintopisteiksi kertomalla määrä kahdella update kurssi set opintoviikot=opintoviikot*2 where nimi= Java ohjelmointi ; Muutos epäonnistuu, jos se rikkoo eheysehtoja. 9 Oraclessa uusi arvo myös kyselyllä Oracle special: update taulu set (sarakelista) = (alikysely) where rajausehdot alikysely on tyypillisesti kytketty alikysely ja sen pitää tuottaa yksi rivi jokaista rajausehdon täyttävää riviä kohden, esim. update henkilo set (palkka) = (select korotus from korotukset where korotus.hetu= henkilo.hetu) where hetu in (select hetu from korotukset) 10

Rivien poisto (delete) delete from taulu [where poistettavien rajausehdot ]; Poistetaan kaikki ehdon täyttävät rivit Jos ehto puuttuu, poistetaan kaikki rivit Poisto epäonnistuu, jos eheysehdot rikkoutuvat (ellei muuta ole määritelty) 11 Poistetaan harjoitusryhmät, joihin ei ole ilmoittautuneita: delete from harjoitusryhma where (kurssikoodi, ryhmanro) not in (select kurssikoodi, ryhmanro from ilmoittautuminen); 12

Rivien siirtoa taulusta toiseen tarvitaan esimerkiksi siirrettäessä tietoja aktiivisesta taulusta historiatauluihin. Tämä suoritetaan kopioimalla (lisäämällä) rivit kohdetauluun ja sen jälkeen poistamalla ne lähtötaulusta: insert into ilmohistoria select * from ilmoittautumiset where ilm_aika< 1.1.1999 ; delete from ilmoittautumiset where ilm_aika< 1.1.1999 ; 13 Tietokantatapahtumalla tarkoitetaan yhtenä jakamattomana kokonaisuutena pidettävää tietokantaoperaatioiden joukkoa, esimerkiksi tilisiirto: update tili set saldo=saldo-500 where tilinumero=123456; update tili set saldo=saldo+500 where tilinumero=654321; 14

Tkhj takaa, että tapahtuma suoritetaan kokonaan eikä vain osaa siitä (ei siis vain tililtäottoa) Muut käyttäjät näkevät vain kokonaisen tapahtuman aiheuttamat muutokset (ulkopuolinen ei voi nähdä tilannetta, jossa tililtä 123456 on otettu 500 mutta tilille 654321 ei sitä ole vielä viety) tapahtuman suorituksen aikana tehdyt muutokset kantaan on peruttavissa siihen asti kunnes tapahtumaan on sitouduttu kun tapahtumaan on sitouduttu (se on valmis) muutokset jäävät pysyviksi ja näkyvät myös muille. 15 Tapahtuma päätetään onnistuneesti komennolla commit [work] Tapahtuma voidaan päättää myös perumalla sen aikaansaamat muutokset komennolla rollback [work] Tilisiirtotapahtuma olisi kokonaisuudessaan siis update tili set saldo=saldo-500 where tilinumero=123456; update tili set saldo=saldo+500 where tilinumero=654321; commit; 16

Järjestelmät voidaan määritellä toimimaan auto-commit tilassa, jolloin jokaiseen ylläpitooperaatioon sitoudutaan välittömästi (tällöin tilisiirtoa ei voida koota transaktioksi) Normaalitilassa tapahtumia kuitenkin kootaan commit-operaatioiden avulla. Kahden commit:in välissä olevat operaatiot muodostavat tapahtuman. 17 Yritetään poistaa tyhjät harjoitusryhmät, oletetaan, että ilmoittautumisten viiteavaimeen liittyy on delete cascade -määre commit; select count(*) from ilmoittautumiset; >> 3500 << delete from harjoitusryhma where ryhmanro is not null; select count(*) from ilmoittautumiset; >>> 0 <<< (oho!) rollback; select count(*) from ilmoittautumiset; Ei ole ihan oikein >> 3500 << 18