120 likes | 260 Views
SQL. Standardoitu kieli, jonka avulla voidaan Luoda ja hallita tietokantoja Hakea tietoa tietokannasta Muuttaa tietokannan tietoja Standardoinnista huolimatta kukin TKHJ tukee omaa SQL-murrettaan PostgreSQL lähellä standardia MySQL ei lähelläkään standardia. SQL:stä tällä kurssilla.
E N D
SQL • Standardoitu kieli, jonka avulla voidaan • Luoda ja hallita tietokantoja • Hakea tietoa tietokannasta • Muuttaa tietokannan tietoja • Standardoinnista huolimatta kukin TKHJ tukee omaa SQL-murrettaan • PostgreSQL lähellä standardia • MySQL ei lähelläkään standardia
SQL:stä tällä kurssilla • Tietokantojen, käyttäjien ja taulujen luominen ja tuhoaminen • Tietotyypit, viiteavainmäärittelyt • Kyselyt • Peruskyselyt, alikyselyt, aggregaattifunktiot, NULL-arvojen käsittely • Päivitysoperaatiot
SQL:n numeeriset tietotyypit (1) • SMALLINT • Etumerkillinen kokonaisluku, tallennustila 2 tavua • Arvoalue [-32768, 32767] • INTEGER • Etumerkillinen kokonaisluku, tallennustila 4 tavua • [-2147483648, 2147483647] • SERIAL • PostgreSQL:n oma datatyyppi • Sarjanumeroiden (esim. Id:n) generointiin • Monissa TKHJ:ssä oma vastineensa
SQL:n numeeriset tietotyypit (2) • REAL • Reaaliluku, tarkkuus vaihtelee alustan mukaan • DOUBLE • Tarkempi reaaliluku, tarkkuus vaihtelee • DECIMAL(m,n) • Halutun tarkkuuden reaaliluku; m on numeroiden kokonaismäärä ja n desimaalien määrä • Esim. DECIMAL(6,2) voisi kuvata hintaa; suurin arvo 9999.99
SQL:n aikatietotyypit • DATE eli päivämäärä muodossa YYYY-MM-DD • Esim. 2007-01-31 • TIME eli kellonaika muodossa HH:MM:SS • Usein mahdollisuus myös millisekuntien tarkkuuteen • Esim. 14:15:00 • TIMESTAMP eli aikaleima eli tyyppien DATE ja TIME yhdistelmä • Tilauksen tms. ajankohta
SQL:n tekstitietotyypit (1) • CHAR(n) • Korkeintaan n:n pituinen merkkijono • Tallennustilan tarve tallennettavan merkkijonon pituudesta riippumatta aina n tavua • VARCHAR(n) • Korkeintaan n:n pituinen merkkijono • Tallennustila korkeintaan n tavua (sekä lisäksi joitakin tavuja pituutiedon tallentamiseen) • TEXT • Vaihtelevan pituinen merkkijono • Tallennustilan tarve merkkijonon pituus (sekä lisäksi joitakin tavuja)
SQL:n tekstitietotyypit (2) • Tietotyypin valinta riippuu tallennettavasta datasta • Rekisterinumero, sosiaaliturvatunnus tai muu tieto, jonka pituus on käytännössä vakio: CHAR • Nimi, osoite tai muu vaihtelevan pituinen tieto: VARCHAR • Vaihtelevan pituisena tallennettavat merkkijonot säästävät tilaa, mutta pituusinformaation käsittely hidastaa operaatioita • Toisaalta myös tyhjän tilan käsittely hidastaa
Muita tietotyyppejä • Monet TKHJ:t tarjoavat lisäksi muitakin tietotyyppejä • PostgreSQL:ssä geometriset tietotyypit • McKoi SQL:ssä JAVA_OBJECT • Tietotyypit binääridatalle • Taulukot
NULL-arvot • NULL tulkitaan tuntemattomaksi arvoksi • Totuusarvona ”ehkä” • Kokonaislukuna mikä tahansa luku • Merkkijonona mikä tahansa merkkijono • Saattavat aiheuttaa hankaluuksia • Alikyselyt, liitokset
Kolmiarvologiikka (1) • Perinteisten totuusarvojen TRUE ja FALSE lisäksi mukana myös NULL • NOT TRUE = FALSE, NOT FALSE = TRUE ja NOT NULL = NULL • NULL voidaan siis tulkita totuusarvona ”ehkä”
NULL-arvojen käsittely (1) • Miksi totuusarvoiksi evaluoituvat • TRUE OR NULL OR FALSE? • TRUE AND NULL OR FALSE? • TRUE OR NOT NULL • 5 < NULL? • NULL = NULL? • NULL IS NULL? • Jos siis halutaan tutkia onko jokin arvo tosiaan NULL, on käytettävä IS NULL -vertailua