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

Samankaltaiset tiedostot
SQL - STRUCTURED QUERY LANGUAGE

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

SELECT-lauseen perusmuoto

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

Koostefunktiot. Viisi standardifunktiota: Esim. montako henkilöä on henkilo-taulussa:

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

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

CSE-A1200 Tietokannat

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

CSE-A1200 Tietokannat

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

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

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

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

Kyselyn yleisrakenne:

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto

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

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta]

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

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

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

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

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

TIETOKANTOJEN PERUSTEET MARKKU SUNI

SQL:N PERUSTEET MARKKU SUNI

KOOSTEFUNKTIOT. Viisi standardifunktiota: Esim. montako henkilöä on henkilo-taulussa:

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

CS-A1150 Tietokannat CS-A1150 Tietokannat / 39

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

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

Relaation tyhjyyden testaaminen

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

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

Liitokset - haut useaan tauluun

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

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

CSE-A1200 Tietokannat

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

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

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

HELIA 1 (11) Outi Virkki Tiedonhallinta

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

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

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

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta

Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, tentin päiväys, oma nimesi, syntymäaikasi ja nimikirjoituksesi.

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

2. Haet työntekijöiden tiedot etunimen mukaan nousevasti järjestettyinä. (ORDER BY) SELECT * FROM employees ORDER BY firstname ASC;

HELIA 1 (13) Outi Virkki Tietokantasuunnittelu

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

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

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

Kyselyt: Lähtökohtana joukko lukuja Laskukaava kertoo miten luvuista lasketaan tulos soveltamalla laskentaoperaatioita

Relaatioalgebra. Relaatioalgebra. Relaatioalgebra. Relaatioalgebra - erotus (set difference) Kyselyt:

Helsingin yliopisto/ tktl DO Tietokantojen perusteet, s 2000 Relaatioalgebra Harri Laine 1. Relaatioalgebra

Tällä viikolla. Kotitehtävien tarkistus Upotettu SQL Indeksi-harjoitus täydennetään pelifirman tietokantamallia SQL-tehtäviä

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Relaatioalgebra. Kyselyt:

SQL-kielen perusteet. Tietokantojen perusteet

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

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

OUTER JOIN se vanha kunnon kaveri

Opiskeluoikeuksien maaran tiedonkeruu

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

TIETOKANNAT JOHDANTO

Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta

Access-kyselyt. Luetteloinnin kehittämispäivä Mia Kujala

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

VINKKI: Katso Kentät Muistioon -painikkeella, mikä on taulukon nimen oikea kirjoitusasu.

ASTERI-OHJELMIEN SQL-ERIKOISKURSSI LUENTOKALVOT

Näkymät ja tiedon suojaus

3. Taulujen määrittely ja muuttaminen

17 BUDJETOINTI. Asiakaskohtainen Budjetti Ylläpito-ohjelma. Dafo Versio 10 BUDJETOINTI. Käyttöohje. BudgCust Yleistä

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

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

HELIA 1 (15) Outi Virkki Tiedonhallinta

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

HAAGA-HELIA heti09 1 (27) ICT05 Tiedonhallinta ja tietokannat O.Virkki Relaatiomalli

Yhdiste, leikkaus, erotus ym.

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

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

Tietokannan konversio

SISÄLTÖ. Vuokko Vanhala-Nurmi, 2013 Excel jatko

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

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

SQL-KIELEN PERUSTEET

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1

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

Yleinen SQL. Yleinen SQL. SQL:n kehitys

HELIA 1 (14) Outi Virkki Tiedonhallinta

Relaatiomalli ja -tietokanta

joukko operaatioita, joilla relaatioista voidaan muodostaa uusia relaatioita joukko opin perusoperaatiot yhdiste, erotus, ristitulo, leikkaus

Helsingin yliopisto/ tktl D Tietokantojen perusteet, s 2000 Relaatioalgebra. Harri Laine 1. Relaatioalgebra.

Transkriptio:

SQL - perusteet SQL - yleistä Esa Salmikangas InMics SE Oy versio 16.6.2003 SQL - perusteet 1 SQL - perusteet 2 SQL Structured Query Language SQL on tietokantojen käsittelyyn kehitetty kieli yleisimmät SQL:llä hoidettavat toiminnot:! tietokannan rakenteen määrittely ja muuttaminen! kyselyt tietokantaan! laskentaa tietokannan datalla! päivitykset: lisäykset, muutokset ja poistot! valtuuksien käsittely! tapahtumankäsittelyn ohjaaminen Upotettu SQL:! SQL:n käyttö muiden kielien sisältä SQL - perusteet 3 SQL voidaan käyttää useissa SQL-tuotteissa vuorovaikutteisesti antamalla SQL-käskyjä omaan ikkunaan, jolloin tulokset saadaan välittömästi toiseen ikkunaan luonteeltaan ei-proseduraalinen kieli, jossa kerrotaan mitä halutaan tehdä (ei miten) SQL perustuu relaatioalgebraan ja joukko-oppiin Kielestä on eri valmistajilla toisistaan poikkeavia versioita (murteita) SQL:stä useita versioita:! nykystandardi SQL3 eli SQL'99! aikaisempi versio oli SQL-92 eli SQL2 l i ii ä SQ kä k SQL - perusteet 4 SQL:n kaksi osaa DDL ja DML Data Definition Language (DDL):! tietokannan määrittely Data Manipulation Language (DML):! tietokannan käsittely DDL - Data Definition Language PerusSQL:ssä:! CREATE TABLE, ALTER TABLE ja DROP TABLE! CREATE VIEW ja DROP VIEW! CREATE INDEX ja DROP INDEX Käyttökelpoisia esimerkiksi silloin kun on tarve luoda uudestaan sama taulu ja kentät (kysytään esim. käyttäjältä ennen taulujen luontia) lisäksi mm. auktorisointikäskyt:! GRANT ja REVOKE SQL - perusteet 5 SQL - perusteet 6 1

DML - Data Manipulation Language PerusSQL:ssä esim.! SELECT, UPDATE, DELETE ja INSERT lisäksi mm. tietokantamuutosten vahvistus ja peruutus:! COMMIT ja ROLLBACK apu-funktiot:! AVG, SUM, MIN, MAX ja COUNT Eri SQL-palvelimissa omia lisäyksiä! mm. Oraclessa ohjauskäskyt transaktioille, sessiolle ja järjestelmälle, esim. ANALYZE, AUDIT ja COMMENT SQL - perusteet 7 Relaatiotietokannat peruskäsitteet Relaatiotietokanta muodostuu tauluista (table), jotka ovat 2-ulotteisia taulukoita. Taulut puolestaan muodostuvat riveistä (row) ja sarakkeista (column). Yksi rivi kuvaa yhden tietokantaan tallennetun tiedon ominaisuuksien arvot; riviä nimitetään myös nimellä tietue (record). Sarake puolestaan määrittelee tiedon ominaisuuden eli attribuutin. Saraketta kutsutaan myös nimellä kenttä (field). SQL - perusteet 8 SELECT-lause SELECT -lause SQL-kielen keskeinen toiminto on kyselyiden tekeminen tietokantaan Kyselyissä SQL-kielen perusrakenne käsittää kolme avainsanaa: SELECT <lista> FROM <taululista> WHERE <ehdot>! SELECT <lista> valitsee listan mukaiset sarakkeet kyselyyn! FROM <taululista> määrittelee haettavat taulut! WHERE <ehdot> määrittelee ehdot haettaville riveille Huom!! SELECT * hakee kaikki sarakkeet! SELECT ilman WHERE-ehtoa hakee kaikki rivit SQL - perusteet 9 SQL - perusteet 10 SELECT yleinen muoto: SQL-kyselyn yleinen muoto: SELECT [A1, A2,... AN] -- valittavat sarakkeet FROM [T1, T2... TM]-- valittavat taulut WHERE [L1] -- kyselyn ehto GROUP BY [L2] -- ryhmittelyehto HAVING [L3]-- ryhmittely hakuehto ORDER BY [L4] -- lajitteluehto Pari esimerkkiä yksinkertaisista SELECT -kyselyistä SELECT * SELECT * WHERE year = 2000 SELECT name, year, price SELECT name, year, price WHERE id = 5 SQL - perusteet 11 SQL - perusteet 12 2

SELECT tärkeimmät operaatiot SELECT - valinta Tärkeimmät käytännössä toteutettavat tauluoperaatiot ovat:! valinta (selection)! projektio (projection)! liitos (join) toteutettavissa suoraan SELECT -lauseen eri muodoilla. Seuraavissa esimerkeissä on havainnollistettu näitä operaatioita. VALINTA -operaatio, valitaan tietyn ehdon täyttävät rivit SELECT * WHERE year BETWEEN 2000 AND 2002; SQL - perusteet 13 SQL - perusteet 14 SELECT - projektio SELECT - liitos PROJEKTIO -operaatiossa valitaan taulusta tietyt sarakkeet, esimerkiksi : SELECT name, year ; SELECT wine.id, wine.name, deliver.company, wine.year, wine.price, deliver.country, deliver WHERE wine.deliverid=deliver.id; SQL - perusteet 15 SQL - perusteet 16 WHERE ehto voi sisältää vertailuoperaattoreita! <, >, <>, <=, >=,!=,!>,!< BETWEEN IN LIKE IS NULL tai IS NOT NULL AND, OR, NOT operaattorit merkkijonohaut:! % mikä tahansa merkkijono! _ mikä tahansa yksi merkki SQL - perusteet 17 FROM mistä tiedot haetaan voi olla:! yksi taulu, useampi taulu, INNER JOIN, kysely SELECT [type], [name], [price] FROM qcombination WHERE [qcombination].[country]='france' ORDER BY price; SQL - perusteet 18 3

AS uudelleen nimeäminen voit nimetä kentän, taulun tulokseen: ORDER BY - lajittelu SELECT [type] AS tyyppi, [country] AS maa, [name] AS viini, [price] AS hinta, deliver WHERE [wine].[deliverid] = [deliver].[id] ORDER BY type, country, price; SELECT name, year, price ORDER BY price; SQL - perusteet 19 SQL - perusteet 20 GROUP BY - ryhmittely GROUP BY - ryhmittely #2 SELECT type, AVG(price) GROUP BY type; SELECT type, AVG(price) as keskihinta, COUNT(name) as kpl GROUP BY type; SQL - perusteet 21 SQL - perusteet 22 HAVING ehtoja GROUP BY:lle Toistojen poistaminen SELECT type, AVG(price) as keskihinta, COUNT(name) as kpl GROUP BY type HAVING AVG(price) > 5; SELECT DISTINCT country FROM deliver; SQL - perusteet 23 SQL - perusteet 24 4

1 InMics SE / SQL- perusteet Koostefunktiot AVG keskiarvo MIN minimi MAX maksimi SUM summa COUNT lukumäärä AVG keskiarvo Keskiarvo lasketaan määritellystä sarakkeesta SELECT AVG(price) ; SQL - perusteet 25 SQL - perusteet 26 SUM ja taulujen yhdistäminen COUNT lukumäärä Lukumäärä lasketaan määritellystä sarakkeesta SELECT COUNT(name) ; 65,00 SQL - perusteet 27 SQL - perusteet 28 Operaatiot SELECT-lause voi sisältää sarakkeisiin kohdistuvia operaatioita eli laskentaa Laskenta:! SELECT name, price, price * 1.22 AS HintaSisALV Pyöristys: SELECT price, ROUND(price*1.1,0) AS newprice ; Tietotyypin muuntaminen:! eksplisiittisesti numeerisen ja merkkimuotoisen välillä, esim. TO_CHAR (n, [format [,lang]]); SQL - perusteet 29 Liitokset (joins)! muutoin implisiittisesti SQL - perusteet 30 5

Liitokset ristiliitos ulkoliitos vasen laitos oikea liitos täsmäliitos (where joku1 = joku2)! epätäsmäliitos (where joku1 > joku2) taulun liittäminen itseensä Liitoksen yleinen muoto SELECT column(s) FROM table_1, table_2,... WHERE table1.column join_operator table2.columns HUOM! SELECT [wine].[id], [name], [type], [year], [price], [country], [company], deliver WHERE [wine].[deliverid]=[deliver].[id]; taulun nimi annettava jos kentän nimi ei ole yksilöllinen SQL - perusteet 31 SQL - perusteet 32 Ristiliitos, (Cartesian join) Täsmäliitos, tätäkö haettiin SELECT [wine].[id], [name], [type], [year], [price], [country], [company], deliver; SELECT [wine].[id], [name], [type], [year], [price], [country], [company], deliver WHERE [wine].[deliverid]=[deliver].[id]; Miksi 35 tietuetta? Koska kyseessä on ns. kartesinen tulo: 7 x 5 = 35 SQL - perusteet 33 SQL - perusteet 34 INNER JOIN operaatio Combines records from two tables whenever there are matching values in a common field.! FROM table1 INNER JOIN table2 ON table1.field1 compopr table2.field2 SELECT wine.type, deliver.country, wine.name, wine.year, wine.price FROM deliver INNER JOIN wine ON deliver.id = wine.deliverid ORDER BY wine.type, deliver.country, wine.year, wine.price; Kirjallisuutta (book list) suomeksi:! Stephens et al: SQL Tietokantaohjelmointi, ITPress englanniksi:! Stephens et al: Teach Yourself SQl in 21 Days, SAMS! Bowman et al: The Practical SQL Handbook, Addison-Wesley SQL - perusteet 35 SQL - perusteet 36 6