100 likes | 252 Views
Erilaiset liitokset. FROM-osassa voidaan määritellä relaatio myös erilaisia liitosoperaatioita käyttäen Vasen, oikea ja täysi puoliliitos eli ulkoliitos (OUTER JOIN) Esplisiittinen liitos (JOIN) Puoliliitoksilla on toisinaan käyttöä
E N D
Erilaiset liitokset • FROM-osassa voidaan määritellä relaatio myös erilaisia liitosoperaatioita käyttäen • Vasen, oikea ja täysi puoliliitos eli ulkoliitos (OUTER JOIN) • Esplisiittinen liitos (JOIN) • Puoliliitoksilla on toisinaan käyttöä • Eksplisiittinen liitos on käytännössä aina korvattavissa perusoperaatioilla • Eksplisiittinen liitos on syntaktista sokeria
Puoliliitokset • Ideana liittää kaksi taulua toisiinsa siten, että toisen puolen relaatiosta säilytetään kaikki rivit • Käteviä tietyntyyppisissä kyselyissä
Vasen puoliliitos SELECT * FROM Henkilö LEFT OUTER JOIN Osasto ON OsastoId=Osasto.Id;
Oikea puoliliitos SELECT * FROM Henkilö RIGHT OUTER JOIN Osasto ON OsastoId=Osasto.Id;
Täysi puoliliitos SELECT * FROM Henkilö FULL OUTER JOIN Osasto ON OsastoId=Osasto.Id;
Puoliliitosten käytöstä • Hae kaikki tuotteet, joita ei ole tilattu • Hae kaikkien asiakkaiden nimet sekä heidän mahdollisesti tilaamiensa tuotteiden nimet • Hae ne asiakkaat, jotka eivät ole tilanneet mitään
SQL: funktioita ja operaattoreita • SQL sisältää koko joukon toisinaan hyödyllisiä funktioita ja operaatioita • Merkkijonojen täsmäys • ’abc’ LIKE ’a%’, ’abc’ NOT LIKE ’bc%’ • Tyyppimuunnokset • Esim. päivämäärä merkkijonoksi • Muita funktioita • MD5 • Kannattaa tutustua käyttämänsä TKHJ:n manuaaliin
Merkkijonojen täsmäys • LIKE mahdollistaa merkkijonojen osittaisen täsmäyksen • Muotoa Merkkijono LIKE Hahmo • % vastaa mitä tahansa merkkijonoa (myös tyhjää); ’lkjslkc’ LIKE ’%kc’ • _ vastaa mitä tahansa merkkiä; ’kjdf’ LIKE ’__d_’ • Valitse ne asiakkaat, joiden sukunimi alkaa H:lla
Tyyppimuunnokset • Toisinaan tarpeen siirrettäessä dataa taulusta toiseen • Muotoa CAST (Arvo AS Tyyppi) tai Arvo::Tyyppi • CAST (’1’ AS INT) • CAST (34876 AS TEXT) • Pitkät merkkijonot katkaistaan, jos uuden tyypin pituus ei riitä
MD5 • Salasanoja ei pitäisi säilyttää selkokielisinä, koska tietokanta saattaa joutua vääriin käsiin • MD5-hajautusfunktio tuottaa avaimen, jonka perusteella salasanaa on vaikeaa keksiä • Voidaan käyttää myös kryptausta SELECT Id FROM Asiakas WHERE Tunnus=’jaska’ AND Salasana=MD5(’lkj543’);