Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Tietokannat -kurssi KSAO, Datanomit, käytön tuki kevät 2015 Lauri Tapola.

Samankaltaiset esitykset


Esitys aiheesta: "Tietokannat -kurssi KSAO, Datanomit, käytön tuki kevät 2015 Lauri Tapola."— Esityksen transkriptio:

1 Tietokannat -kurssi KSAO, Datanomit, käytön tuki kevät 2015 Lauri Tapola

2 Datan muokkaus SQL- kielellä, DML komennot Data Manipulation Language: update, insert, delete 17.3.2015 Lauri Tapola

3 DML komennot komennot: update, päivitys insert, lisäys delete, poisto Kun käytät näitä funktioita, niin ole varovainen. Hae ensin päivitettävät tai poistettavat rivit SELECT-komennolla tarkasteluun. Jos tietokannassa on autocommit –ominaisuus käytössä, niin esimerkiksi poistettuja rivejä ei saa palautettua. ”Undo”-ominaisuutta ei tietokannoissa ole! TARKISTA MySQL valikosta – Query– ”Auto-Commit Transactions” onko ruksia. Auto-Commit on hyvä ominaisuus, muuten joudut antamaan COMMIT; -komennon jokaisen päivitys -komennon jälkeen.

4 Esimerkkejä tarvittavista datan päivityksistä: Schema: classicmodels 1. Kaikkien tuotteiden ostohinta nousee 10%. 2. Moottoripyörien ostohinta laskee 20%. Schema: test (kirjasto) 3. Asiakas numero 3 palauttaa kaikki lainaamansa kirjat tänään 4. Hyllyn 1 kirjat siirretään hyllyyn 1B DML komennot, s1 Ohjeita löytyy mm.: http://www.w3schools.com/sql/

5 HUOM. Classicmodels -schemaan ei ole oppilas -tunnuksilla päivitysoikeuksia. 1. Kaikkien tuotteiden ostohinta nousee 10%. UPDATE products SET buyPrice= buyPrice*1.10 2. Moottoripyörien ostohinta laskee 20%. UPDATE products SET buyPrice=buyPrice*0.80 WHERE productline = ”Motorcycles” DML komennot, UPDATE s2

6 Schema: test (kirjasto) Varmista oikea schema komennolla: USE TEST HUOM. TEST-schemaan ON oppilas -tunnuksilla päivitysoikeudet. Ensiksi pitää kuitenkin ottaa MySQLWorkbenchin ”Safe Update” pois päältä. Se hankaloittaa DML-komentojen suoritusta. MySQL valikosta – Edit – Preferences – SQL Editor – ”Safe Update” ei ruksia. Sulje yhteys sen jälkeen (file-exit) ja ota uusi yhteys. DML komennot, UPDATE s3

7 Schema: test (kirjasto) Varmista oikea schema komennolla: USE TEST HUOM. Opiskelijoille omat taulut käyttöön: lainaus_a … lainaus_z. 3. Asiakas numero 3 palauttaa kaikki lainaamansa kirjat tänään. Valitse ensin kaikki asiakkaan numero 3 lainat joita ei ole palautettu: SELECT * FROM lainaus_? WHERE asiakas_id=3 AND ISNULL(palautuspaiva) Tarkista kyselyn tulos. Jos lause palauttaa oikeat rivit päivitä ne: UPDATE lainaus _? SET palautuspaiva= date(now()) WHERE asiakas_id=3 AND ISNULL(palautuspaiva) DML komennot, UPDATE s4

8 4. Hyllyn 1 kirjat siirretään hyllyyn 1B Etsi ensin kirja –taulusta kirjat jotka ovat hyllyssä 1 SELECT * FROM kirja _? WHERE hylly = “1” TARKISTA TULOS, JOS HAKU ON OIKEIN PÄIVITÄ SITTEN: UPDATE kirja _? SET hylly=“1B" WHERE hylly = “1“ TARKISTA ONNISTUIKO PÄIVITYS: SELECT * FROM kirja _? WHERE hylly = “1B" DML komennot, UPDATE, s5

9 5. Hyllyissä jotka alkavat kirjaimella olevat kirjat siirretään hyllyyn 1C. Huom. Kenttä Hylly on tekstimuotoinen, kirjaimet ovat suurempia kuin numerot. Etsitään ensin kirja –taulusta kirjat jotka on kirjaimella alkavissa hyllyissä SELECT * FROM kirja _? WHERE hylly > “9” tai SELECT * FROM kirja_? WHERE hylly >= "a“ TARKISTA TULOS, JOS HAKU ON OIKEIN PÄIVITÄ SITTEN: UPDATE kirja _? SET hylly=“1C" WHERE hylly > “9“ TARKISTA ONNISTUIKO PÄIVITYS: SELECT * FROM kirja _? WHERE hylly = “1C" DML komennot, UPDATE, s6

10 Datan muokkaus – MySQL, s7 6. Monissa tietokantaohjelmissa voi muokata dataa käyttöliittymässäkin, esimerkiksi MySQL:ssä. Pienet korjaukset on kätevintä tehdä niin. Esim. Valitse asiakas –taulu asiakasnimen mukaiseen järjestykseen: SELECT * FROM asiakas_? ORDER BY Asiakas_nimi 7. Korjaile taulun dataa, esimerkiksi Kouvola on jossain kirjoitettu väärin. Postinumero on liian lyhyt, Syntymäajat ovat omituisia ym. HUOM. Kun kaikki korjaukset on tehty paina Apply –painiketta. Muuten korjaukset ei tallennu! Kun olet painanut painiketta, MySQL näyttää tietokantaan tehtävät UPDATE –komennot. TARKISTA !

11 Datan lisäys – insert, s8 MySQL:llä voit syöttää uudet rivit käyttöliittymässä – se on helpoin tapa jos lisättävää dataa on vähän. Jos lisättävää on paljon, kannattaa käyttää SQL komentoja. 8. Lisätään asiakas_a -taulun asiakkaat asiakas_b-tauluun. INSERT INTO asiakas_b SELECT * FROM asiakas_a Saadaan lisättyä tarvittaessa miljoonia rivejä muutamassa sekunnissa.

12 Datan lisäys – insert, s9 9. Jos tauluissa on samoja arvoja avainkentissä, niitä ei voi kopioida, vaan on luotava uudet arvot avainkenttiin. Esimerkiksi Asiakas_id-kenttää ei voi kopioida, vaan pitää käyttää seuraavaa syntaksia: INSERT asiakas_b (Asiakas_nimi, Lahiosoite, Postinumero, Postitoimipaikka, Puhelin, Email, Syntyma_aika) SELECT Asiakas_nimi, Lahiosoite, Postinumero, Postitoimipaikka, Puhelin, Email, Syntyma_aika FROM asiakas_a Tarkista että taulussa johon dataa lisätään on (AI Auto-increment) käytössä. Se luo uuden asiakas-id:n automaattisesti.

13 Datan lisäys – insert, s10 10. Haluat lisätä tauluun dataa esimerkiksi ohjelmallisesti, käytä seuraavaa syntaksia: INSERT INTO asiakas_? (Asiakas_nimi, Lahiosoite, Postinumero, Postitoimipaikka, Puhelin, Email, Syntyma_aika) VALUES ("Pekko Poikala", "Poikalanpolku 2", 45670, "Kouvola", "040- 5566778", "pekka@poikala.fi", "2000-01-15") Asiakas-id -kenttää ei kannata syöttää, koska asiakas taulut on asetettu päivittämään se automaattisesti. (Auto increment)

14 Datan poisto – delete, s11 Tietokannan taulujen (kuten kaiken muunkin ) siivoaminen on tärkeää. Turhat rivit ja turha data pitää poistaa hallitusti. Aina ennen delete komennon suoritusta pitää katsoa select - komennolla mitä ollaan poistamassa. Esimerkiksi: DELETE FROM asiakas_b 11. Poistaa kaikki rivit asiakas_b –taulusta!

15 Datan poisto – delete, s12 Yleensä halutaan poistaa dataa jossa on jotain vikaa, esimerkiksi vanhentunutta tai väärin syötettyä. 12. Poistetaan asiakkaat joiden syntymäaika on tyhjä. Haetaan ensin asiakas-taulun rivit joissa on tyhjä syntymä-aika: SELECT * from asiakas_? WHERE isnull(Syntyma_aika) Jos haku tuottaa oikeanlaisen tuloksen, poistetaan rivit: DELETE from asiakas_? WHERE isnull(Syntyma_aika) Tarkistetaan lopuksi: SELECT * from asiakas_? WHERE isnull(Syntyma_aika)

16 Datan poisto – delete, s13 Tehdään tilaa uusille kirjoille. 13. Poistetaan ennen vuotta 1960 julkaistut kirjat. Valitaan ne ensin: SELECT * FROM kirja_? WHERE Julkaisuvuosi <1960 Jos haku tuottaa oikeanlaisen tuloksen, poistetaan rivit: DELETE FROM kirja_? WHERE Julkaisuvuosi <1960 Tarkistetaan lopuksi: SELECT * FROM kirja_? WHERE Julkaisuvuosi <1960

17 Harjoitustaulu Taulu: Asiakas. Kentät: Asiakas_id, Asiakas_nimi, Lahiosoite, Postinumero, Postitoimipaikka, Puhelin, Email, Syntyma_aika

18 Oppimistehtävä 5 – kysymykset Suunnittele kyselyt seuraaviin tarpeisiin. Käytetään edellisen sivun Asiakas-taulua. Kyselyitä ei tarvitse kotona testata, kunhan ne on suunniteltu! h1. a. Hae Asiakas –taulusta yli 100 vuotta vanhat asiakkaat. b. Poista ne. h2. Lisää seuraava henkilö Asiakas –tauluun INSERT INTO - komennolla: Matti Meikäläinen, Kotipolku 2, 45500, Kouvola, 040-4040404, mmeika@koti.fi, synt.aika: 25.11.1955 mmeika@koti.fi h3. Päivitä asiakas_nimi ”Aku_Ankka” asiakas_id=41, ”Roope Ankka” nimiseksi. h4. Päivitä kaikki Kouvolalaiset Kouvostoliittolaisiksi.


Lataa ppt "Tietokannat -kurssi KSAO, Datanomit, käytön tuki kevät 2015 Lauri Tapola."

Samankaltaiset esitykset


Iklan oleh Google