SQL kieli --------- Structured Query Language Rakenteellinen/kuvauksellinen kysely kieli DML kieli Data Manipulation Language Tapahtumat tietokannassa: - kyselyt SELECT - muutokset UPDATE - lisäykset INSERT - poistot DELETE Kyselyt: -------- SELECT * FROM taulun_nimi; -> näyttää kaikki tiedot taulusta SELECT etunimi, sukunimi, puhelin FROM taulun_nimi; -> näyttää etunimi, sukunimi ja puhelin sarakkeiden tiedot SELECT etunimi, sukunimi, puhelin FROM taulun_nimi WHERE sukunimi='koivisto'; -> näyttää etunimi, sukunimi ja puhelin sarakkeiden tiedot niistä joiden sukunimi on koivisto SELECT etunimi, sukunimi, puhelin FROM taulun_nimi WHERE sukunimi='koivisto' ORDER BY etunimi; -> näyttää etunimi, sukunimi ja puhelin sarakkeiden tiedot niistä joiden sukunimi on koivisto ja järjestää tuloksen etunimen mukaan tietojen päivittäminen: ----------------------- UPDATE taulun_nimi SET sukunimi='koivisto' WHERE sukunimi='kekkonen'; -> kaikki joiden sukunimi on kekkonen muutetaan koivistoksi UPDATE taulun_nimi SET sukunimi='koivisto', etunimi='mauno' WHERE sukunimi='kekkonen' AND etunimi='urho'; -> kaikki joiden sukunimi on kekkonen ja etunimi urho muutetaan siten että sukunimi on koivisto ja etunimi on mauno tietojen lisääminen: -------------------- INSERT INTO taulun_nimi VALUES ('koivisto', 'mauno', '040-5612345'); -> lisää VALUES avainsanan jälkeen olevat tiedot tauluun uudelle riville INSERT INTO taulun_nimi (sukunimi, etunimi, puhelin) VALUES ('koivisto', 'mauno', '040-5612345'); -> lisää VALUES avainsanan jälkeen olevat tiedot tauluun uudelle riville, niihin sarakkeisiin jotka on mainittu taulun_nimen jälkeen sulkeissa tietojen poistaminen: --------------------- DELETE FROM taulun_nimi WHERE sukunimi='koivisto'; -> poistaa kaikki tietueet (rivit) joissa sukunimi on koivisto Taulujen käsittely: ------------------- CREATE TABLE taulun_nimi ( Sarake1 tietotyyppi(10), Sarake2 tietotyyppi(10), Sarake3 tietotyyppi(10), Sarake4 tietotyyppi(10) ); CREATE TABLE Asiakas ( AsiakasNro INT, Etunimi VARCHAR(30), Sukunimi VARCHAR(40), Osoite VARCHAR(50), Postinumero VARCHAR(5), Toimipaikka VARCHAR(20) ); -> luo Asiakas nimisen taulun jossa on AsiakasNro, Etunimi, Sukunimi, Osoite, Postinumero ja Toimipaikka nimiset sarakkeet. Sarakenimen perässä on tietotyyppi. CREATE TABLE POSTINUMERO ( PostiNro VARCHAR(30) NOT NULL , Toimipaikka VARCHAR(30) NOT NULL , Maakunta VARCHAR(30) NOT NULL , Lääni VARCHAR(30) NOT NULL , CONSTRAINT PostiNro_PK PRIMARY KEY (PostiNro) ); -> Luodaan POSTINUMERO niminen taulu johon määritetään PostiNro sarake Primary Keyksi. NOT NULL tietotyypin jälkeen kertoo ettei tässä kohdassa suvaita tyhjiä kenttiä. CREATE TABLE YRITYS ( YTunnus VARCHAR(30) NOT NULL , Nimi VARCHAR(30) NOT NULL , Toimiala VARCHAR(30) NOT NULL , Osoite VARCHAR(30) NOT NULL , PostiNro VARCHAR(30) NOT NULL , YhtHlo VARCHAR(30) NOT NULL , Email VARCHAR(30) NOT NULL , GSM VARCHAR(30) NOT NULL , Puhelin VARCHAR(30) NOT NULL , Lisätieto VARCHAR(30) NOT NULL , CONSTRAINT YTunnus_PK PRIMARY KEY (YTunnus), CONSTRAINT PostiNro_FK FOREIGN KEY (PostiNro) REFERENCES POSTINUMERO(PostiNro) ); -> Luodaan YRITYS niminen taulu johon määritetään YTunnus sarake Primary Keyksi. Lisäksi luodaan relaatio PostiNro kentän ja POSTINUMERO taulussa olevan PostiNro kentän välille Tehtävä: Luo "yritys" niminen taulu jossa on y-tunnus, nimi, osoite, postinumero ja -toimipaikka sekä toimiala Olemassa olevan taulun muokkaaminen ----------------------------------- ALTER TABLE taulun_nimi ADD sarake_nimi INTEGER; -> lisää taulun_nimi tauluun sarake_nimi sarakkeen ja määrittää sen tietotyypiksi kokonaisluvun ALTER TABLE taulun_nimi ADD PRIMARY KEY (sarake_nimi); -> tekee sarake_nimi sarakkeesta perusavaimen ALTER TABLE taulun_nimi ADD FOREIGN KEY (sarake_nimi) REFERENCES toisen_taulun_nimi(sarake_nimi); -> luo yhteyden kahden taulun välille Taulun poistaminen ------------------ DROP TABLE taulun_nimi; -> poistaa halutun taulun tietokannasta Harjoituksia: ------------- Luo sopivat SQL-lauseet: Hae henkilöstö taulusta kaikkien niiden etu- ja sukunimet joiden osasto on ATK-osasto SELECT Etunimi, Sukunimi FROM Henkilosto WHERE osasto='ATK'; Hae henkilöstö taulusta nimitiedot niistä joiden palkka on pienempi kuin 1200 euroa SELECT Etunimi, Sukunimi FROM Henkilosto WHERE palkka<1200; Hae henkilöstö taulusta kaikkien vakituisten työntekijöiden nimi ja taloontulopäivä SELECT Etunimi, Sukunimi, TuloPvm FROM Henkilosto WHERE tyosuhde='vakinainen'; tai: SELECT Etunimi, Sukunimi, TuloPvm FROM Henkilosto WHERE vakinainen=true; Miten järjestää haku? --------------------- SELECT etunimi, sukunimi, puhelin FROM taulun_nimi WHERE sukunimi='koivisto' ORDER BY etunimi ASC; -> nouseva järjestys etunimen mukaan SELECT etunimi, sukunimi, puhelin FROM taulun_nimi WHERE sukunimi='koivisto' ORDER BY etunimi DESC; -> laskeva järjestys etunimen mukaan SELECT * FROM Persons WHERE FirstName LIKE 'O%' -> hakee kaikki joiden etunimi alkaa O-kirjaimella. % merkki toimii jokerimerkkinä Koostefunktiota: ---------------- Keskiarvo AVG Summa SUM Lukumäärä COUNT Pienin arvo MIN Suurin arvo MAX Lisää tietoa: ------------- http://www.w3schools.com/sql/ Kotiläksy :) http://www.w3schools.com/sql/sql_join.asp