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

Samankaltaiset tiedostot
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

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

SQL-kielen perusteet. Tietokantojen perusteet

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

Kyselyn yleisrakenne:

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

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

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

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

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

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

4.3.4 SQL kyselyt... 45

5 SQL TIETOKANTAKIELI...33

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

4.3.1 SQL tietokanta SQL:n kirjoitusasu SQL määrittelykielenä... 36

SQL - STRUCTURED QUERY LANGUAGE

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

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

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

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

Relaatioalgebra. Kyselyt:

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

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

SELECT-lauseen perusmuoto

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

3. Taulujen määrittely ja muuttaminen

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

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

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

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

HAAGA-HELIA TIKO-05 1 (19) ICT23a Tietokannan suunnittelu ja toteutus O.Virkki

Tietokantakurssit / TKTL

CSE-A1200 Tietokannat

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (12) Outi Virkki Tiedonhallinta

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

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

Liitokset - haut useaan tauluun

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

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

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

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

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

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

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

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

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

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Relaation tyhjyyden testaaminen

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

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

SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

Yleinen SQL. Yleinen SQL. SQL:n kehitys

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

HELIA 1 (11) Outi Virkki Tiedonhallinta

On autoja, henkilöitä, Henkilöllä on nimi Autolla on omistaja, joka on henkilö. Taulu AUTO(rekno, malli) Taulu HENKILO(nimi, )

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

HAAGA-HELIA TIKO - Heti09 1 (22) ICT05 Tiedonhallinta ja Tietokannat E.Räty, O.Virkki, M.Laiho

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

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

Tietomallit. Näkökulmat tietoon. Näkökulmat tietoon. Mitä malleja olisi tarjolla? Abstraktiotasot tiedon käsittelyssä

OpenOffice.org Base 3.1.0

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

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

Lohdutus - tietokantadokumentti

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

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

Helsingin yliopisto/tktl Kyselykielet, s 2006 Relaatiokalkyylit. Harri Laine 1

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

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

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta

Relaatiomalli ja -tietokanta

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Relaatiomallin peruskäsitteet Harri Laine 1. Relaatiotietokannat DONOTP

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

Tietomallit. Näkökulmat tietoon. Näkökulmat tietoon. Näkökulmat tietoon. Abstraktiotasot tiedon käsittelyssä

SQL:N PERUSTEET MARKKU SUNI

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

HELIA 1 (17) Outi Virkki Tiedonhallinta

2. Käsiteanalyysi ja relaatiomalli

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 relaatiomalli Harri Laine 1.

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

CSE-A1200 Tietokannat

Yhdiste, leikkaus, erotus ym.

Helsingin yliopisto/tktl Tietokantojen perusteet, k 2003 Relaatiomallin peruskäsitteet Harri Laine 1. Tietomallit. Näkökulmat tietoon

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

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Näkymät ja tiedon suojaus

Treenitietokannan suunnitteludokumentti

millainen on se kohde, jota tiedoilla pitäisi kuvata asiat, joita pitäisi esittää Mitä tietoelementtien arvot tarkoittavat

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

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

TIEDONHALLINTA - SYKSY Luento 2. Pasi Ranne /8/17 Helsinki Metropolia University of Applied Sciences

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

Tietokanta projektin alussa: create table kurssin_tila ( NOT NULL VARCHAR2(60) create table kurssin_tyyppi ( create table opintojakson_tyyppi (

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

Transkriptio:

SQL tietokantakieli SQL:llä voidaan... määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta näytölle tai tiedostoon sovellusohjelman käyttöön tehdä päivityksiä tietokantaan (muuttaa dataa) vuorovaikutteisesti sovellusohjelman kautta 1

SQL SQL on standardoitu viimeisin standardi vuodelta 1999 toteutukset noudattavat enimmäkseen vuoden -92 standardia ja sitäkin vain osittain murteita - yhteinen suppeahko ydin 2

SQL-tietokanta SQL-tietokanta muodostuu yhden tai useamman kaavion (schema) määrittelemistä tauluista (table) Kullakin kaaviolla on omistaja, joka omistaa myös kaavion määrittelemät taulut. Taulu muodostuu riveistä (row) Taulu vastaa relaatiomallin relaatiota, mutta sallii etenkin kyselyiden tuloksissa samanlaisen rivin toistumisen (duplikaatit) matemattisesti monijoukko (multiset) 3

SQL SQL määrittelykieli (DDL) käyttäjät ja oikeudet tietokannan rakenne tietokantaproseduurit Käsittelykieli (DML) kyselyt ylläpito-operaatiot 4

SQL SQL-kielessä avainsanat, taulu- käyttäjä- ja sarakenimet voi kirjoittaa joko suur- tai pienaakkosina eli select merkki SELECT MerKKI Tietokannassa olevan datan suhteen kieli on kuitenkin herkkä kirjainmuodolle eli Merkki= Ford on eri kuin Merkki= FORD 5

SQL tiedonmäärittelykieli Tiedonmäärittelykielessä lauseita tietokantaelementtien {user, role, schema, table, domain, procedure, function, trigger, } luontiin, muokkaukseen ja poistoon create -luo alter - muokkaa drop - poistaa 6

SQL taulun luonti create table määrittelee taulun rakenteen create table tablename ( column definition 1,., column definition n [, constraint 1, ] ) sarakemäärittely ::= column_name datatype [not null] [default value] [ column constraint ] 7

Table definition create table Ordered ( OrderId integer not null, ); WhenMade Customer WayIssued date not null, integer not null, varchar(20), PaymentBy varchar(20) not null, TotalPrice decimal(6,2) not null, constraint pk_order primary key (OrderId), constraint fk_ordercustomer foreign key (Customer) references Customer 8

); WayIssued varchar(20), PaymentBy varchar(20) not null, TotalPrice decimal(6,2) not null, constraint pk_order primary key (OrderId), constraint fk_ordercustomer foreign key (Customer) references Customer kokonaisluku päiväys (tässä on kyseessä create table Ordered ( OrderId integer not null, Oracle, joten timestamp) WhenMade date not null, Customer integer not null, vaihtuvamittainen merkkijono desimaaliluku kokonaispituus 6, desimaaliosa 2 9

Taulun määrittely create table Ordered ( ); OrderId WhenMade Customer integer not null, date not null, integer not null, WayIssued varchar(20), PaymentBy varchar(20) not null, TotalPrice decimal(6,2) not null, pakollinen constraint pk_order primary key (OrderId), constraint fk_ordercustomer foreign key (Customer) references Customer avain viiteavain 10

SQL tiedonmäärittely Aikoja Date päiväys Time kellonaika Timestamp päiväys ja kellonaika ( Oraclella Date on oikeastaan Timestamp) Interval aikaero Aikoja voidaan verrata ja niillä voi laskea this_day date, this_day + 3 on kolmen päivän päästä 11

SQL tiedonmäärittely Viiteavainmäärittelyyn voidaan liittää toimintasääntö, mitä tehdään operaation rikkoessa viite-eheyden foreing key (sarakkeet) references taulu [(sarakkeet2)] [ on delete {restrict cascade nullify} ] [ on update {restrict cascade nullify} ] viitteen kohde katoaa: restrict estää rikkovan operaation (oletus) cascade vyöryttää, poistaa tai muuttaa viittaavat rivit nullify tyhjentää viittaukset 12

SQL kysely Kyselyn yleisrakenne: select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta] Kysely tuottaa nimettömän tulostaulun. 13

SQL-kysely Taulu: AUTO(rekno, merkki, vmalli, vari) Kysely: select merkki, reknro from auto where vmalli=1996 and vari = punainen and merkki like Fo% order by merkki, reknro Vuoden 1996 mallia olevien punaisten merkiltään Fo -alkuisten autojen merkki ja rekisterinumero merkin ja saman merkin sisällä rekisterinumeron mukaan järjestettynä 14

SQL kysely select merkki, reknro from auto where vmalli=1996 and vari = punainen and merkki like Fo% order by merkki, reknro miltein projektio valinta Vuoden 1996 mallia olevien punaisten merkiltään Fo -alkuisten autojen merkki ja rekisterinumero merkin ja saman merkin sisällä rekisterinumeron mukaan järjestettynä 15

SQL-kysely Tulostietomäärittelyn elementeille lasketaan normaalitapauksessa arvo jokaista valintaehdot täyttävää riviyhdistelmää kohden select merkki from auto where vmalli=1996 and vari = punainen and merkki like Fo% order by merkki Jos taulussa auto on 3 punaista vuoden 1996 Fordia tulee merkki Ford tulostauluun 3 kertaa. Toimii siis toisin kuin relaatioalgebran projektio, joka poistaa tuplat 16

SQL-kysely ABC-123 Ford 1966 punainen BCA-222 BMW 1966 musta CCC-777 Ford 1971 punainen CIA-105 Ford 1966 punainen FBI-106 Ford 1966 punainen 17

SQL-kysely ABC-123 Ford 1966 punainen BCA-222 BMW 1966 musta CCC-777 Ford 1971 punainen CIA-105 Ford 1966 punainen FBI-106 Ford 1966 punainen 18

SQL-kysely ABC-123 Ford 1966 punainen BCA-222 BMW 1966 musta CCC-777 Ford 1971 punainen CIA-105 Ford 1966 punainen FBI-106 Ford 1966 punainen Kyselyn tulos: Ford Ford Ford 19

SQL kysely Projektion kaltainen toistuvien arvojen karsinta saadaan aikaan liittämällä tulostietomäärittelyn alkuun avainsana distinct select distinct merkki from auto where vmalli=1996 and vari = punainen and merkki like Fo% order by merkki Kyselyn tulos: Ford 20

SQL kysely Tulostietomäärittelyssä *-merkki select * from auto where vmalli=1996 and vari = punainen and merkki like Fo% order by merkki Kyselyn tulos: ABC-123 Ford 1966 punainen CIA-105 Ford 1966 punainen FBI-106 Ford 1966 punainen 21

SQL-kysely Kyselyn ehto-osassa voidaan verrata saraketta tai vakiota tai funktion arvoa sarakkeeseen, vakioon, funktion arvoon asiakasnro>99, length(nimi)>=10 length(etunimi) = length(sukunimi), 1=2, 1<2 hinta>alehinta arvojoukkoon luku in (1,2,3), luku between 1 and 3 maskiin nimi like P% Voidaan myös tutkia sarakkeen tyhjyyttä puhnro is null, puhnro is not null 22

SQL-kysely Jos vertailun toisena osapuolena on tyhjäarvo on tulos tuntematon. Rivi tulee valituksi tulokseen vain jos ehdon arvo on tosi (true). A B 1 3 2 NULL 3 2 4 5 23

SQL-kysely Jos vertailun toisena osapuolena on tyhjäarvo on tulos tuntematon. Rivi tulee valituksi tulokseen vain jos ehdon arvo on tosi (true). A B 1 3 true 2 NULL unknown 3 2 false 4 6 true Kyselyn ehto-osassa: WHERE A<B 24

SQL kyselyt Totuusarvot tosi (true) ja epätosi (false) käyttäytyvät loogisissa lausekkeissa kuten ohjelmointikielten yhteydessä Kolmas totuusarvo tuntematon käyttäytyy seuraavasti ( ehto1 and ehto2, NOT ehto, ehto1 or ehto2): AND true false unknown NOT true true false unknown true false false false false false false true unknown unknown false unknown unknown unknown 25

SQL-kyselyt OR true false unknown true true true true false true false unknown unknown true unknown unknown Sarake is null: tuottaa tuloksen true, jos sarakkessa on tyhjäarvo, muuten false Sarake is not null: tuottaa tuloksen false, jos sarakkessa on tyhjäarvo, muuten true 26

SQL kyselyt Tietotyypistä riippuen sarakearvoilla voi tulostietomäärittelyissä ja ehdoissa suorittaa laskentaoperaatioita (merkkijonoille katenaatio (perään laittaminen)) alehinta < 0.5*hinta, pvm+3 etunimi sukunimi --> Olli Opiskelija Merkkijonovakiot hipsuihin, numeeriset ilman etunimi= Olli and sukunimi= Opiskelija ika > 20 27

SQL kyselyt On mahdollista käyttää myös skalaarifunktioita esim. merkkijonon pituus length(sarake) funktiovalikoima vaihtelee 28

SQL -kyselyt Kyselyn from osassa yksi tai useampi taulu (tai alikysely) FROM Auto FROM Auto, Omistaja FROM (select ) -- tähän palataan myöhemmin Jos tauluja on vain yksi on kyseessä valinta Select reknro from Auto where vmalli=2003; Select nimi from Omistaja where reknro like ABC- 123 ; Select nimi from Omistaja where reknro= ABC- 123 29

SQL -kyselyt Jos tauluja on monta on kyseessä ristitulo ellei ehto-osassa ole liitosehtoa (hyvin harvoin halutaan tulokseksi ristitulo) select * from opiskelija, suoritus;???? Jos tauluja on monta ja ehto-osassa on liitosehto, on kyseessä liitos muista siis liitosehto select * from opiskelija, suoritus where opiskelija.hetu=suoritus.hetu; select * from opiskelija, suoritus, kurssi where opiskelija.hetu=suoritus.hetu and suoritus.kkoodi=kurssi.kkoodi; 30

SQL-kysely Tyypillinen virhe liitoksissa on jättää jokin liitosehto pois, jolloin tuloksen rivijoukko tulee huomattavasti suuremmaksi kuin pitäisi jos from-osassa on n kpl liitettäviä tauluja tarvitaan vähintään n-1 liitosehtoa. Taulujen liittäminen voi perustua useaan sarakkeeseen, jolloin ehtolausekkeessa tarvittavien alkeisehtojen määrä voi moninkertaistua. 31

SQL-kysely Tyypillinen virhe liitoksissa on jättää jokin liitosehto pois, jolloin tuloksen rivijoukko tulee huomattavasti suuremmaksi kuin pitäisi jos from-osassa on n kpl liitettäviä tauluja tarvitaan vähintään n-1 liitosehtoa. Taulujen liittäminen voi perustua useaan sarakkeeseen, jolloin ehtolausekkeessa tarvittavien alkeisehtojen määrä voi moninkertaistua. 32

SQL-kysely Yleensä kyselyt rakentuvat siten, että niissä on jokin keskeinen taulu johon, muita liitetään. Voi olla, ettei tuosta keskeisestä taulusta tule mitään dataa tulokseksi liitokset Keskeinen taulu 33

Kyselyn rakentaminen opettaja opetunnus nimi puhelin tyohuone harjoitusryhma kurssikoodi ryhmanro viikonpaiva alkamisaika sali ilmoittautuminen kurssikoodi ryhmanro Opisknro ilm_aika opettaja Kurssi koodi nimi opintoviikot luennoija opiskelija onumero nimi paa_aine kaupunki aloitusvuosi 34

Kyselyn rakentaminen Laadi raportti kurssin Java-ohjelmointi harjoitusryhmistä Mitä halutaan tulokseen: Ryhmän numero (taulussa harjoitusryhmä) Ohjaajan nimi (taulussa opettaja) kokoontumispäivä (taulussa harjoitusryhmä) alkamisaika (taulussa harjoitusryhmä) opiskelijan nimi (taulussa opiskelija) Taulut opettaja, harjoitusryhmä ja opiskelija on välttämättä otettava kyselyn from osaan Taulu ilmoittautuminen tarvitaan opiskelijoiden kytkemiseksi ryhmiin ja taulu kurssi, jotta saataisiin selville Java ohjelmoinnin kurssikoodi 35

Kyselyn rakentaminen opettaja opetunnus nimi puhelin tyohuone harjoitusryhma kurssikoodi ryhmanro viikonpaiva alkamisaika sali ilmoittautuminen kurssikoodi ryhmanro Opisknro ilm_aika opettaja Kurssi koodi nimi opintoviikot luennoija opiskelija onumero nimi paa_aine kaupunki aloitusvuosi 36

Kyselyn rakentaminen opettaja opetunnus nimi puhelin tyohuone harjoitusryhma kurssikoodi ryhmanro viikonpaiva alkamisaika sali ilmoittautuminen kurssikoodi ryhmanro Opisknro ilm_aika opettaja Kurssi koodi nimi opintoviikot luennoija opiskelija onumero nimi paa_aine kaupunki aloitusvuosi 37

Kyselyn rakentaminen opettaja opetunnus nimi puhelin tyohuone opetunnus= opettaja harjoitusryhma kurssikoodi ryhmanro viikonpaiva alkamisaika sali ilmoittautuminen kurssikoodi ryhmanro Opisknro ilm_aika opettaja kurssikoodi= koodi Kurssi koodi kurssikoodi= kurssikoodi and ryhmanro= ryhmänro opisknro= onumero nimi opintoviikot luennoija opiskelija onumero nimi paa_aine kaupunki aloitusvuosi 38

Kyselyn rakentaminen select H.ryhmanro rno, Ope.nimi ope, H.viikonpaiva, H.alkamisaika, O. Nimi opiskelija from Harjoitusryhma H, opettaja Ope, opiskelija O, ilmoittautuminen I, kurssi K where H.kurssikoodi=K.koodi and I.kurssikoodi=H.kurssikoodi and I.ryhmanro=H.ryhmanro and Ope.Opetunnus=H. Opettaja and I.Opisknro=O.onumero and K.nimi= Java ohjelmointi order by H.ryhmanro, O.nimi 39

Alikyselyt Alikyselyllä tarkoitetaan kyselyyn upotettua toista kyselyä. Upotettua kyselyä voidaan käyttää kyselyn from osassa mutta myös where osassa valintaehtojen operandina. Alikyselykin tuottaa tuloksenaan taulun Alikyselyiden käyttöön valintaehdoissa on omia predikaatteja ja lisätarkenteita, jotka määrittelevät, miten ehdon operandia sovelletaan alikyselyn tulokseen IN; NOT IN; tarkenteet any,some, all; EXISTS, NOT EXISTS 40

Alikyselyt Vuoden 92 standardissa from-osaan sallittiin normaalien taulujen myös alikyselyiden tulostaulut from (alikysely) [[as] alias [( sarakeluettelo)] ] alikysely on normaali kysely sarakeluettelo uudelleennimeää alikyselyn tulossarakkeet tästä rakenteesta on hyötyä, jos halutaan yhdistää yksityiskohtaista tietoa ja yhteenvetotietoa tai eri perustein laskettuja yhteenvetotietoja samalle riville. Yksityiskohtien kyselyssä rakennetta ei tarvita. yleensä rakenteen käyttö vain sotkee asioita - VÄLTÄ 41

Alikyselyt Opettajat, jotka luennoivat jotain kurssia select nimi from opettaja where opetunnus in (select luennoija from kurssi) order by nimi; Opettajat, jotka eivät luennoi mitään kurssia select nimi from opettaja where opetunnus not in (select luennoija from kurssi) order by nimi; alikysely voidaan suorittaa erillään pääkyselystä 42

Alikyselyt Luennoivat opettajat, kytketyllä alikyselyllä select nimi from opettaja where exists (select luennoija from kurssi where luennoija= opettaja.opetunnus) order by nimi; alikysely on evaluoitava erikseen jokaista opettajariviä kohti 43