PL/SQL -kieli WWW-palveluiden tuottamisessa

Koko: px
Aloita esitys sivulta:

Download "PL/SQL -kieli WWW-palveluiden tuottamisessa"

Transkriptio

1 Janne Autio PL/SQL -kieli WWW-palveluiden tuottamisessa Tietojärjestelmätieteen kandidaatintutkielma Jyväskylän yliopisto Tietojenkäsittelytieteiden laitos Jyväskylä

2 TIIVISTELMÄ Autio, Janne Aleksi PL/SQL kieli WWW-palveluiden tuottamisessa Jyväskylä: Jyväskylän yliopisto, s. Kandidaatintutkielma Lyhenne PL/SQL muodostuu sanoista Prosedural Language / Structured Query Language. Kyseinen ohjelmointikieli on käytännössä Oracle-sidonnainen, proseduraalinen kieli (prosedural language), toisin kuin sen taustalla oleva kuvaileva (declarative) SQL-kieli. PL/SQL-kieltä alettiin kehittää, koska Oracletietokantasovelluksen yhteyteen tarvittiin täsmälleen sen tarpeita vastaava proseduraalinen lisä SQL-kieleen. Tarkoituksena oli mahdollistaa proseduraalisen koodin suorittaminen, joka voisi sisältää muun muassa ehdollisia, iteratiivisia ja jaksollisia käskyjä. PL/SQL-kieli on kehitetty monipuoliseksi välineeksi lähinnä Oracle-tietokannan käyttöä varten, ja tätä käyttötarkoitusta varten sitä käytetään ja kehitetään edelleen aktiivisesti. Siitä löytyy useita oliopiirteitä kuten kapselointi, funktioiden kuormitus ja tiedon piilotus, myöhemmissä versioissa myös esimerkiksi periytyminen. Syntaksiltaan, rakenteeltaan ja datatyypeiltään PL/SQL muistuttaa pitkälti ADA-ohjelmointikieltä, joka on vuonna 1979 kehitetty korkean tason kieli. Oracle-tietokantaa voidaan www-ympäristössä käyttää PL/SQL-kielellä mutta myös Javalla ja esimerkiksi.net-ympäristön tukemalla koodilla, mikä tilanteena antaa aihetta vertailla eri tekniikoita niiden soveltuvuuden ja etuisuuksin kannalta Oraclen käyttöä ajatellen. Tämän tutkielman osalta tarkasteltava tietokantatyyppi on Oracle, ja sen tukemia ohjelmointitekniikoita tarkastellaan lähinnä PL/SQL-kielen näkökulmasta. Tutkielmassa käydään läpi

3 PL/SQL-kielen perusnäkökulmia sekä sivutaan sen erityispiirteitä ja Oracletietokannan hallintajärjestelmään sidoksissa olevia ominaisuuksia. Lukijalle pyritään tarjoamaan käsitys siitä, jolloin sitä voi olla hyödyllistä käyttää yleisesti toteutusvaihtoehtona tai esimerkiksi Javan sijasta, mutta esille tulee myös sen asettamia haasteita www-palveluiden tuottamisessa. Tutkimusongelmana on selvittää, millä tavalla PL/SQL-kieltä tyypillisesti käytetään ominaisuuksiensa puolesta tietokannan käsittelyssä ja erityisesti www-ympäristössä. Tutkielmassa esitellään kyseisen kielen rakennetta ja tiettyjä ominaisuuksia sekä Oracle-tietokannan ja PL/SQL-kielen piirteitä wwwsovelluskehityksessä yleisesti. AVAINSANAT: PL/SQL, Oracle, proseduuri, paketti, www-sovellus

4 Ohjaaja: Jorma Kyppö Tietojenkäsittelytieteiden laitos Jyväskylän yliopisto Tarkastaja: Markku Sakkinen Tietojenkäsittelytieteiden laitos Jyväskylän yliopisto

5 SISÄLLYSLUETTELO 1 JOHDANTO PL/SQL-KIELI JA ORACLE-YMPÄRISTÖ Oracle-tietokanta Oracle PL/SQL-kielen historiaa PL/SQL-kieli työvälineenä PL/SQL-lohkon perusrakenne WWW-PALVELUIDEN KEHITTÄMINEN PL/SQL www-sovelluksen perusominaisuudet Kursoreiden ominaisuudet ja käyttö Pakettien ominaisuudet ja käyttö Parametrien välitys www-sovelluksessa Herättimet osana tietokantaa Tyypillisiä, verkkoa käyttäviä operaatioita PL/SQL-kielessä PL/SQL-KIELI VERRATTUNA JAVAAN ORACLE TIETOKANTAOHJELMOINNISSA ORACLE-TIETOKANNAN HALLINTAJÄRJESTELMÄN TIETOTURVA YHTEENVETO LÄHDELUETTELO... 33

6 6 1 JOHDANTO Useat kehittyneet WWW-palvelut käyttävät jossain muodossa tietokantaan varastoitua tietoa hyväkseen, jolloin tietokannan hallinta on oleellisessa osassa muun muassa sovelluksen toimivuuden, tehokkuuden ja käytettävyyden kannalta. PL/SQL-kieli on Oraclen pitkään kehittelemä työväline lähinnä tietokannan monipuoliseen ja tehokkaaseen hallintaan eri rajapintojen kanssa. Nykyaikaiset www-sovellukset sisältävät ja käyttävät hyvin monipuolisia tekniikoita, jotka pystyvät vastaamaan palveluiden vaatimien ominaisuuksien toteutukseen. Oracle on pyrkinyt pitämään PL/SQL-kielen varteenotettavana vaihtoehtona myös vaativimpien sovellusten kehittämisessä. Lisäksi monet tietokantoja tukevat ohjelmointitekniikat sisältävät olio-ohjelmoinnista tuttuja piirteitä, jotka saattavat olla eräs edellytys ohjelmointiin käytettävän tekniikan tehokkuuteen ja soveltuvuuteen laajempien sovellusten kehittämistä varten. Oracle-yhtiö alkoi saavuttaa menestystä 80-luvun alkupuolella julkaistessaan Oracle-tietokannan hallintajärjestelmästä version 3.0, jonka ominaisuudet riittivät silloiseen relaatiotietokantojen hyödyntämiseen. Myöhemmin Oraclejärjestelmästä on kehittynyt yksi markkinoiden kilpailukykyisimmistä relaatiotietokanta-alustoista, joka tukee useita käyttöjärjestelmiä, ja muun muassa käytettävyyteen ja tietoturvaan liittyviä moderneita tekniikoita hyvin monipuolisesti. PL/SQL-kieli mahdollistaa Oracle-tietokannan käyttämisen proseduraalisesti myös www-ympäristössä. Oracle-yhtiön kontrolloima PL/SQL-kielen kehitystyö on eräs tapa pitää kyseinen ohjelmointikieli hyvin räätälöitynä ja kattavana juuri Oracle-tietokannan hallintajärjestelmän käyttöä varten, mutta myös tietokannan käyttöön liittyvien edistysaskelten liittämisestä PL/SQLtekniikkaan on huolehdittu tarpeen mukaan. Koska Oraclea voidaan käyttää myös eräillä muilla ohjelmointikielillä, on siitä hyötyä niin yritykselle kuin PL/SQL-ohjelmointikielen kehittämisellekin sopivan kilpailuasetelman myötä.

7 7 Kyseessä oleva ohjelmointikieli on ominaisuuksiltaan varsin monimuotoinen, kun sen käytössä otetaan huomioon perusominaisuuksien lisäksi wwwympäristöön liittyvät toiminnot, mutta myös omintakeinen rakenteiltaan ja syntaksiltaan. Ennen PL/SQL-kielen valitsemista työvälineekseen tai sen arvioimiseksi on hyödyllistä perehtyä sen perusrakenteisiin sekä kielikohtaisiin ominaisuuksiin ja termeihin. Tässä tutkielmassa käsitellään kokonaisuutena Oracle-alustan ja PL/SQLohjelmointikielen ominaisuuksia niin erillisinä tekniikoina kuin ominaisuuksiensa puolesta www-sovelluksen kehityksessä. Tutkimusmenetelmänä on pääasiassa käytetty kirjallisuuskatsausta, mutta myös perehtymistä PL/SQL-sovelluksen koodiin. Toisessa luvussa käsitellään lähinnä Oracle-tietokannan hallintajärjestelmän ja PL/SQL-kielen perusominaisuuksia sekä kolmannessa luvussa lisäksi kyseisten tekniikoiden www-ympäristössä usein tarvittuja ominaisuuksia. Neljännessä luvussa otetaan esille PL/SQL-kieleen ja www-sovelluksiin liittyvinä aiheina lisäksi kyseisen ohjelmointikielen vertailua Javaan. Viidennessä luvussa tarkastellaan melko pintapuolisesti Oraclen tietoturvanäkökulmia. Nämä useat aihepiirit vaikuttavat PL/SQL-kielen soveltuvuuteen sen käyttötarkoituksiin, jotka on hyödyllistä huomioida mahdollisen kehitettävän www-palvelun toteutustavan osalta, joka useissa tapauksissa voi olla juuri Oracle-tietokanta ja PL/SQL-kieli.

8 8 2 PL/SQL-KIELI JA ORACLE-YMPÄRISTÖ Tässä luvussa esitellään perusteita Oracle-tietokannasta ja tämän tietokantaohjelmiston käyttöön tarkoitetusta PL/SQL-kielestä. Oracle toimii lähes poikkeuksetta alustana ja tietokantana käytettäessä tätä kyseistä kieltä esimerkiksi www-palvelun toteutuksessa. 2.1 Oracle-tietokanta Oracle on hyvin yleinen relaatiomallinen tietokanta. Ensimmäinen versio siitä kehitettiin vuonna 1978, jolloin sen ominaisuudet olivat vielä varsin suppeat nykyversioon verrattuna. Oracle-nimeä käytetään sekä sen omistavasta yhtiöstä että itse tietokannan hallintaohjelmistosta (puhekielessä myös pelkästä tietokannasta), joka on useiden yritysten ja instituutioiden suosiossa esimerkiksi skaalautuvuutensa, siirrettävyytensä ja luotettavuutensa ansiosta. Oracle tukee kaikkia yleisimpiä tietokoneita ja käyttöjärjestelmiä. Data talletetaan Oracle-tietokannassa loogisesti taulualueisiin ja fyysisesti tiedostoihin. Taulualueet koostuvat erityyppisistä lohkoista (segments), joita voivat olla esimerkiksi indeksilohkot ja datalohkot. Lohkot koostuvat puolestaan yhdestä tai useammista ilmenemistä (extents), jotka ryhmitellään yhtenevien datablokkien (data block) perusteella. Datablokki on tiedontalletuksen perusyksikkö, ja fyysisellä tasolla tiedostot koostuvat yhdestä tai useammasta datablokista, joiden koko voi vaihdella. Datan ohella Oracletietokanta sisältää vähintään yhden instanssin (instance), joka muodostuu lähinnä datan käsittelyyn tarvittavasta muistialueesta ja tietokannan eri osien välisistä taustaprosesseista. Instanssi muodostetaan kun tietokanta käynnistetään.

9 9 Proseduureja ja funktioita voidaan tallentaa Oracle-tietokantaympäristöön, jossa niitä voidaan suorittaa. Näitä tietokannan käsittelyä varten luotavia ohjelmanosia voidaan rakentaa pääasiassa PL/SQL- ja Java-ohjelmointikielillä tietokannan hallintaohjelmiston versiosta riippuen. 2.2 Oracle PL/SQL-kielen historiaa Oracle-yhtiö oli aikaisemmin johtavassa asemassa tietokannan hallintaohjelmistojen markkinoilla tarjotessaan deklaratiivisia, eiproseduraalisia tekniikoita tietokantojen ja niihin liittyvien sovellusten suunnitteluun. Oracle Server tuote on nykypäiviin asti säilyttänyt asemansa tehokkaana, kehittyneenä ja vakaana relaatiotietokantaan pohjautuvana teknologiana. Oracle Serveriin liittyvänä sovelluksena kehitettiin Oracle Forms tietokantasovelluksen suunnittelutyökalu, jonka eräänä kantavana ideana on tarjota korkean tason tuottavuutta kehittäjille. Tässä ohjelmassa sovelluksen suunnittelu on tehty yksinkertaiseksi toimenpiteeksi graafisuutta pitkälti hyödyntäen. Aluksi Oraclen mullistava deklaratiivinen lähestymistapa yhdistettynä relaatiotietokantaan riitti asiakkaille, mutta ohjelmistoalan mentyä eteenpäin odotukset ja vaatimukset nousivat samalla, joten Oraclen oli otettava uusi askel tietokantatuotteidensa kehityksessä. Vuonna 1991 Oracle julkaisi Oracle Version 6.0 nimeä kantavan tietokannan hallintaohjelmiston, jossa relaatiotietokannan aikaisemman käsittelyteknologian tueksi oli kehitetty proseduraalinen tuki nimeltään PL/SQL. Ensimmäinen versio PL/SQL-kielestä oli varsin rajoittunut erityisesti proseduurien ja funktioiden uudelleenkäytettävyyden osalta, koska niitä ei voinut pysyvästi tallentaa. Puutteistaan huolimatta tälle proseduraalista logiikkaa SQL-kielen yhteyteen tuovalle kielelle oli kysyntää. Aluksi havaituista ongelmista muun muassa siirrettävyys on parantunut huimasti nykyversioon mennessä. Pitkän ajan tähtäimenä PL/SQL Version 2.0 julkaisusta lähtien on ollut

10 10 uudelleenkäyttöä entistä paremmin tukeva ohjelmointiympäristö, jossa moduuleita voidaan ongelmitta kutsua ja niiden käyttöoikeuksia hallita. PL/SQL-kielen kehittely on ollut jatkuvaa ja se palveleekin nykyisin hyvin Oracle-sovelluskehityksessä ja tietokannan hallinnassa. 2.3 PL/SQL-kieli työvälineenä Kyseinen ohjelmointikieli on melko läheisesti sidoksissa Oracle-tuotteisiin, joihin se on suunniteltukin eräänlaiseksi tietokannan käsittelytyökaluksi, eli pääasiassa tuotteita laajentavaksi teknologiaksi. SQL-kyselykieli on täysin sulautettuna osana PL/SQL-kieltä, jolloin sitä voidaan yhdistellä melko vapaasti proseduraalisiin ohjelmarakenteisiin. Tämänkaltainen kiinteä integraatio näiden kielten välillä mahdollistaa ottamaan täyden hyödyn irti sekä deklaratiivisesta että proseduraalisesta logiikasta. PL/SQL on melko epätavallinen ohjelmointikieli, joka on toisaalta myös sen vahvuus, koska sen ominaisuudet tukevat erityisen hyvin tietokannan hallintaan liittyviä toimenpiteitä ja ohjelmointirakenteita. SQL-lauseiden lisäksi kyseisestä kielestä löytyy ohjelmoijan työtä helpottamaan esimerkiksi kursorit (cursors), herättimet (triggers) ja paketit (packages). Kursorit auttavat tietokantaan talletetun datan hyödyntämisessä ja herättimet puolestaan ovat pieniä tietokantaan talletettuja ohjelmanpätkiä, jotka lisäävät tietokannan toiminnallisuutta ja älykkyyttä, eli myös tietoturvaa. Paketit mahdollistavat ohjelmistokehittäjälle olio-ohjelmointityylisen suunnittelun. Paketteihin voidaan koota yhteen PL/SQL:n tukemia objekteja, ne tukevat hyvin modulaarisuutta, kapselointia ja uudelleenkäyttöä. Myös mahdollisen businesslogiikan piilottaminen pakettiin voi olla käytännöllistä. Haittana voi olla suurempi muistinkulutus ladattaessa koko paketti muistiin käytettäessä jotain sen sisältämää objektia. Syntaksiltaan PL/SQL on moniin muihin ohjelmointikieliin verrattuna melko

11 11 yksinkertainen. Operaattorit ja merkistö muutenkin ovat suurimmaksi osaksi esimerkiksi Javasta tuttuja. 2.4 PL/SQL-lohkon perusrakenne PL/SQL-lohkon kuten esimerkiksi proseduurin rakenne muodostuu eheästä loogisesta rakenteesta, joka kyseisessä kielessä näyttää myös useimmiten helposti ymmärrettävältä. Seuraavassa on esitetty yksinkertainen ohjelmanpätkä, jolla voidaan päivittää tietokantaa haluttujen ehtojen mukaisesti SQL-kieltä hyväksikäyttäen. PROCEDURE maintain_company (action_in IN VARCHAR2, id_in IN NUMBER, name_in IN VARCHAR2 := NULL) IS BEGIN IF action_in = 'DELETE' THEN DELETE FROM company WHERE company_id = id_in; ELSIF action_in = 'INSERT' THEN INSERT INTO company (company_id, name) VALUES (id_in, name_in); END IF; END; Kun moduulin eli esimerkiksi funktion tai proseduurin (kuten yllä) rakennetta tarkastellaan kokonaisuutena, voidaan siitä tyypillisesti erottaa tietyt rakenteelliset osiot. Nämä alla kuvatut osiot muodostavat kokonaisuutena PL/SQL-lohkon. Toisaalta lohko muodostaa kokonaisuuden loogisesti toisiinsa

12 12 liittyvistä objekteista, kuten muuttujien määrityksistä ja suoritettavista lauseista. Lohkon otsikko (Block Header): Tämä osio on oleellinen vain nimetyille lohkoille eli proseduureille tai funktioille. Lohkot voivat olla myös nimettömiä (anonymous) kokonaisuuksia. Otsikko määrittää miten nimettyä lohkoa kutsutaan. Deklaratiivinen osio (Declarative section): Lohkon osio, joka ilmoittaa muuttujat, kursorit ja alilohkot, joihin voidaan viitata Suoritus- (Execution) ja Poikkeus (Exception) -osioissa. Suoritusosio (Execution section): Tämä lohkon osio sisältää PL/SQL:n ajonaikaisen kääntäjän suorittamat koodilauseet. Poikkeusosio (Exception sektion): Osio, joka käsittelee normaalissa ohjelman suorittamisessa mahdollisesti tapahtuvat poikkeukset eli varoitukset ja virhetilanteet. Luonteeltaan tämä osio on tärkeässä asemassa jokaisen PL/SQLlohkon merkityksessä, koska poikkeuksien käsittelyä voidaan näin paremmin keskittää ja rakentaa tarpeenmukaiseksi. KUVIO 1. PL/SQL-lohko

13 13 Nimettömän lohkon osalta rakenne voi olla seuraava: DECLARE Declaration Section BEGIN Execution Section EXCEPTION Exception Section END; PL/SQL-lohkon järjestys on myös sama, miten PL/SQL-kääntäjä (The PL/SQL Engine) sen suorittaa. Kääntäjä saa lohkon sisältämän suoritettavan koodin Oracle Serveriltä. Proseduraalinen osuus ja SQL-lauseet suoritetaan eri osissa tietojärjestelmää. KUVIO 2. PL/SQL Engine

14 14 3 WWW-PALVELUIDEN KEHITTÄMINEN Rakennettaessa tietokantapohjaista www-palvelua/sovellusta selaimella käytettäväksi, on PL/SQL-kielellä paljon annettavaa, myös verrattuna uudempiin ohjelmointikieliin. Se sisältää monipuolisesti tietokannan webkäyttöä tukevia ominaisuuksia ja mahdollistaa laajalti datan interaktiivisuuden ja dynaamisuuden www-palvelussa. 3.1 PL/SQL www-sovelluksen perusominaisuudet Tyypillisesti PL/SQL-kielellä kehitetty www-sovellus on joukko tallennettuja proseduureja, jotka kommunikoivat interaktiivisesti www-selaimen kanssa HTTP-protokollan välityksellä. Interaktiivinen toiminto voi mahdollisesti olla vaikkapa www-sivulla esitetyn lomakkeen lähetä napin painallus tai linkin klikkaus, jolloin tietokantapalvelin tarvittaessa suorittaa määrätyt proseduurit. Jos esimerkkitilanteena on lomake, jonka lähettämiseen liittyy tallennetun PL/SQL-proseduurin suorittaminen, voidaan käyttäjän syöttämiä tietoja käyttää monipuolisesti parametreina. Parametreja voidaan välittää palvelimelle myös URL-osoitteen yhteydessä. Www-selain näyttää tietokantapalvelimen suorittaman proseduurin mahdollisesti sisältämät ja käyttäjälle näytettävät tulosteet, jotka tulevat selaimen tulkittavaksi HTML-koodina. Www-sivu generoituu täten dynaamisesti riippuen suoritetun proseduurin käyttäytymisestä, johon vaikuttaa tietokannan sisältö ja välitetyt parametrit. Proseduurin generoimalta HTML-sivulta lähetetty kutsu takaisin palvelimen jollekin proseduurille ja sieltä takaisin selaimelle uutena (mahdollisesti erilaisena) HTML-sivuna muodostaa periaatteen dynaamiselle www-käyttöliittymälle PL/SQL-kieltä käytettäessä. PL/SQL-proseduuri voi tulostaa myös esimerkiksi JavaScriptkoodia selaimen tulkittavaksi.

15 15 PL/SQL-kielen käytön vahvuudet dynaamisen www-sovelluksen yhteydessä tulevat esiin erityisesti tietokantaperusteisessa palvelussa, jossa tarvitaan tietokantapalvelimen tarjoamaan tehokkuutta ja joustavuutta. Muistinhallinnaltaan PL/SQL-sovellus on kilpailukykyinen verrattuna vastaaviin palvelinpohjaisiin tekniikoihin kuten CGI:hin (Common Gateway Interface). PL/SQL-sovellus käyttää perinteisen tyylin mukaisesti HTML-tulostukseen Oraclen tietokannan hallintaohjelmiston paketeista löytyviä funktioita, joiden kutsuminen ohjelmakoodissa toimii yleisluontoisella ja yksinkertaisella syntaksilla. Seuraavassa on esitetty kaksi eri tapaa määrittää HTML-sivun otsikko sekä tulostaa kappaleen otsikko ja hieman tekstiä. Ensimmäinen esimerkki käyttää puhtaasti funktioita ilman HTML-tagien tulostusta. owa_util.mime_header('text/html'); htp.htmlopen; htp.headopen; htp.title('html-sivun otsikko'); htp.headclose; htp.bodyopen( cattributes => 'TEXT="#000000" BGCOLOR="#FFFFFF"'); htp.header(1, 'Kappaleen otsikko'); htp.para; htp.print('kappaleen tekstiä.'); htp.bodyclose; htp.htmlclose; Ja toinen ehkä hieman helpompi vaihtoehto toimii tulostamalla HTML-tageja selaimen tulkittavaksi print-funktiolla. htp.print('<html>'); htp.print('<head>'); htp.print('<meta http-equiv="content-type" content="text/html">'); htp.print('<title>html-sivun otsikko</title>'); htp.print('</head>'); htp.print('<body TEXT="#000000" BGCOLOR="#FFFFFF">'); htp.print('<h1>kappaleen otsikko</h1>'); htp.print('<p>kappaleen tekstiä.'); htp.print('</body>'); htp.print('</html>');

16 Kursoreiden ominaisuudet ja käyttö Määritelmältään PL/SQL-kielessä kursori on staattinen objekti, johon voidaan myös määrittää toimimaan kursori-muuttuja osoittimena. Eli käytännössä muuttuja, joka viittaa SQL-operaatioita suorittavaan alueeseen proseduurissa tai funktiossa. Tätä muuttujan sisältämää tietoa on mahdollista käsitellä ohjelmassa. Kursorimuuttujia voidaan välittää proseduureille ja funktioille parametreina, ja proseduurit ja funktiot voivat palauttaa näiden muuttujien arvoja. Kursorimuuttuja voi viitata eri kursoreihin elinaikanaan. Kursoreiden tarjoamiin etuihin kuuluvat myös kapselointi, ylläpidon helppous ja joustavat käyttöoikeudet. Kapselointiin kuuluu tietokantaoperaatioiden keskittäminen siihen tallennettuun proseduuriin, joka avaa kursorimuuttujan. Ylläpitoominaisuuksiltaan kursoria muutettaessa tarvitsee muutos tehdä vain yhteen paikkaan, joka löytyy talletetusta proseduurista. Käyttöoikeuksien puolesta käyttäjällä tarvitsee olla vain suoritusoikeus siihen proseduuriin, joka avaa kursorin, esimerkiksi lukuoikeus kursorin SQL-lauseen käyttämiin tietokantatauluihin ei ole välttämätön. Kursorin sisältämän SQL-kyselyn palauttama tulosjoukko (result set) on tietty määrä tietokantataulun rivejä, joita voidaan prosessoida yhtä kerrallaan. Yksinkertaisimmillaan kursorin määrittäminen ohjelmakoodissa voi näyttää seuraavalta: DECLARE CURSOR kursori1 IS SELECT tyontekija_nro, nimi, virka FROM tyontekija WHERE osasto_nro = 50; Tämä kursori sisältäisi tulosjoukkonaan alla olevan taulukon mukaiset tiedot.

17 17 KUVIO 3. Kursorin tulosjoukko Kursoreitten toimintaa voidaan ohjata useilla eri komennoilla kuten avaaminen, rivin poiminta ja sulkeminen. Kursorin sisältämät rivit voidaan käydä läpi myös FOR-silmukalla. Kursorimuuttujan määrittäminen proseduurin tai funktion yhteydessä vaatii esittelyyn liittyvät käskyt. 3.3 Pakettien ominaisuudet ja käyttö Paketti voidaan määritellä kokoelmaksi PL/SQL-kielen objekteja, kuten proseduureja, funktioita, muuttujia, vakioita, kursoreita ja poikkeuksia. Pakettien käyttö on eräs tapa koota yhteen yksittäisiä proseduureja ja funktioita. Tämä toimenpide tuo mukanaan useita etuja, jotka mahdollistavat sovelluskehityksen organisoinnin tehostamisen, käyttöoikeuksien määrittämisen keskittämisen ja monipuolistamisen, paketin objektien muuttamisen itsenäisesti ilman niihin liittyvien muitten objektien uudelleenkääntämistä ja useiden paketin objektien lukemisen muistiin kerralla. Lisäksi paketti voi sisältää globaaleita muuttujia tai kursoreita, jotka ovat kaikkien paketin sisällä olevien proseduurien ja funktioiden käytössä. Eräänä tärkeänä oliopiirteenä pakettien käytössä on myös proseduurien ja funktioiden kuormittaminen, eli voidaan käyttää samannimisiä proseduureja tai funktioita, joilla on toisistaan tyypiltään tai määrältään eroavat parametrit. Paketin jotain proseduuria tai funktiota kutsuttaessa valitaan parametrien perusteella sopivin käytettäväksi. Seuraavassa esimerkissä näytetään käyttäjän autentikointia varten luotu

18 18 paketti. Ensimmäinen kokonaisuus on paketin esittelyosio (specification) ja seuraavana kokonaisuutena on paketin runko-osio (package body). Esittelyosiossa esitellään paketin yleiset tyypit, muuttujat, vakiot ja aliohjelmat, joita voidaan kutsua paketin ulkopuolelta. Paketin runko-osiossa määritellään esittelyosiossa esitellyt objektit, myös yksityiset objektit, jotka eivät ole näkyvissä tai käytettävissä paketin ulkopuolella. Yleisesti voidaan kutsua paketin sisältämiä objekteja, mikäli omataan suoritusoikeus (Execute) pakettiin tai sen sisältämiin proseduureihin (Execute any procedure). PACKAGE: AUTENTIKOINTI CREATE OR REPLACE PACKAGE autentikointi AS /* Tämä paketti sisältää käyttäjän tunnistamiseen tarvittavat aliohjelmat */ FUNCTION getuserid RETURN VARCHAR2; /* Funktio hakee talletetun evästeen käyttäjän tunnistuksen varmentamiseksi ja palauttaa tunnistautuneena olevan käyttäjän tunnuksen. */ PROCEDURE setuserid(id varchar2 DEFAULT NULL); /* Jos id ei ole NULL, niin proseduuri tallettaa käyttäjän tunnistuksen evästeeksi. Jos id on NULL, niin tunnistus poistetaan. */ FUNCTION UserIdOk RETURN BOOLEAN; /* Tarkastaa käyttäjä tunnistamisen. Palauttaa TRUE, jos tunnistaminen on voimassa muutoin FALSE. */ END; /

19 19 PACKAGE BODY: AUTENTIKOINTI CREATE OR REPLACE PACKAGE BODY autentikointi AS FUNCTION getuserid RETURN VARCHAR2 IS c_cookie OWA_COOKIE.COOKIE; BEGIN c_cookie := OWA_COOKIE.GET('uid'); IF c_cookie.vals.count < 1 THEN RETURN NULL; END IF; IF c_cookie.vals(1) = '' THEN RETURN NULL; END IF; RETURN c_cookie.vals(1); END; PROCEDURE setuserid(id varchar2 DEFAULT NULL) IS BEGIN OWA_UTIL.MIME_HEADER('text/html', FALSE); OWA_COOKIE.SEND('uid',id); OWA_UTIL.HTTP_HEADER_CLOSE; END; FUNCTION UserIdOk RETURN BOOLEAN IS BEGIN IF getuserid IS NOT NULL THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END; END; /

20 Parametrien välitys www-sovelluksessa Jotta PL/SQL-kielellä luodusta www-palvelusta saataisiin dynaamisesti toimiva, on käyttäjän ja palvelimen välinen kommunikointi oltava riittävän interaktiivista. Käyttäjältä pyydettävien tietojen keräämiseen voidaan soveltaa vapaasti käytettävyyteen liittyviä ohjeita, mutta sovelluksen toimivuuden kannalta tärkeintä on saada proseduurin suorituskäsky liikkeelle palvelimelle toimitettavaksi esimerkiksi nappia painamalla, jolloin käyttäjän syöttämä data voidaan välittää samalla eteenpäin. Toinen yleisesti käytetty tapa parametrien välityksessä on URL-osoite, joka on mahdollista määrittää linkin yhteydessä. Selain voidaan ohjata parametreilla täydennettyyn URL-osoitteeseen klikatun linkin kautta tai muuten proseduurin ohjaamana. Seuraavassa esitetään esimerkki ohjelmakoodista, jossa palaute -proseduuri käyttää saamiaan parametreja hyödykseen toiminnassaan. Proseduuri on osa matkatoimiston www-pohjaista varausjärjestelmää. Sen tehtävänä on ohjata käyttäjän täyttämän palautelomakkeen tietojen lähettämiseen ja tietokantaan tallentamiseen liittyvää toimintaa. Palautteen kelpaavuus tarkastutetaan ennen tietokantaan tallentamista tarkastuksen suorittavassa proseduurissa, jonka koodia ei seuraavassa esimerkissä ole näkyvillä. Ohjelmakoodissa usein esiintyvä VARCHAR2 on PL/SQL-kielessä yleisesti käytetty tietotyyppi, joka voi sisältää sekä numeerisia arvoja että kirjainmerkkejä. Sille varattu muistitila voidaan erikseen määrittää suluissa annetulla numeroarvolla. PALAUTE /* Esitellään aluksi proseduurin muuttujat */ CREATE OR REPLACE PROCEDURE palaute(p_palaute_id VARCHAR2 DEFAULT NULL, p_from VARCHAR2 DEFAULT NULL, p_pvm VARCHAR2 DEFAULT NULL,

21 21 p_p_nimi VARCHAR2 DEFAULT NULL, p_p_ VARCHAR2 DEFAULT NULL, p_p_palaute VARCHAR2 DEFAULT NULL, p_p_vastauspyynto VARCHAR2 DEFAULT NULL, p_action VARCHAR2 DEFAULT NULL) AS CURSOR cur_palautteet IS SELECT * FROM palautteet ORDER BY p_pvm; vp_muuttuja NUMBER(1):=0; BEGIN /* Tarkastetaan saadun p_action parametrin sisältö ja toimitaan sen mukaisesti */ IF p_action = 'Lähetä' THEN INSERT INTO palautteet(palaute_id, p_pvm, p_nimi, p_ , p_palaute, p_vastauspyynto) VALUES (palaute_seq.nextval, SYSDATE, p_p_nimi, p_p_ , p_p_palaute, p_p_vastauspyynto); OWA_UTIL.REDIRECT_URL('kiitos_palautteesta'); ELSE apu.pbegin('palaute'); apu.pmenu2('palaute'); apu.pbordersbegin; IF p_action='virhe' then /* Jos tarkasta_palaute on huomannut sivulla virheitä niin sivulle palautetaan p_action parametrissa "virhe" */ htp.p('<p><font color="red"><b>kentissä oli virheitä, tarkasta seuraavat kohdat:</b></font>'); htp.p('<ul><li>nimi-kentässä merkkejä voi olla 2-50,</li>'); htp.p('<li>sähköpostiosoite-kentässä merkkejä voi olla 3-30,</li>'); htp.p('<li>palaute-kentässä merkkejä voi olla </li></ul></p>');

22 22 END IF; htp.p('<p><b>lähetä postia matkatoimiston henkilökunnalle:</b></p>'); --htp.p('<form METHOD="POST">'); htp.p('<form ACTION="tarkasta_palaute" METHOD="POST">'); /* Lomake ei mene tarkastukseen, koska se annetaan oletuksena olevalle sähköpostiohjelmalle, jossa tietoja voi taas muokata. */ htp.p('<b>nimesi: </B><BR>'); htp.p('<input type="text" name="p_p_nimi"><br><br>'); htp.p('<b>sähköpostiosoitteesi: </B><br>'); htp.p('<input type="text" name="p_p_ "><br><br>'); htp.p('<b>palaute: </B><br>'); htp.p('<textarea name="p_p_palaute" rows=8 cols=50> </textarea><br><br>'); htp.p('<input type="checkbox" name="p_p_vastauspyynto" value="1">vastausta pyydetään <BR><BR>'); /* Lomakkeen mukana välitettävät parametrit */ htp.p('<input TYPE=Hidden name="p_from" value="lähetys">'); htp.p('<input TYPE=Hidden name="p_palaute_id" value="p_palaute_id">'); htp.p('<input TYPE=Hidden name="p_pvm" value="p_pvm">'); htp.p('<input TYPE=Submit name="p_action" value="lähetä">'); htp.p('<input TYPE=reset VALUE="Tyhjennä">'); htp.p('</form>'); END IF; IF autentikointi.useridok THEN /* Seuraavat apu-pakettia käyttävät rivit muodostavat HTML-taulukon */ htp.p('<div id="kavennus">'); htp.p('<hr>'); htp.p('<p><b>lähetetyt palautteet:</b></p>'); FOR p_rec IN cur_palautteet LOOP apu.trowb; apu.tbegin(0,0);

23 23 apu.tdatab('0%',10); htp.p('<b>pvm: </b>'); apu.tdatae; apu.tdatab('0%',10); htp.p('<b>' p_rec.p_pvm '</b>'); apu.tdatae; apu.trowe; apu.trowb; apu.tdatab('0%',10); htp.p('palaute-id: '); apu.tdatae; apu.tdatab('0%',10); htp.p(p_rec.palaute_id); apu.trowe; apu.trowb; apu.tdatab('0%',10); htp.p('nimi: '); apu.tdatae; apu.tdatab('0%',10); htp.p(p_rec.p_nimi); apu.trowe; apu.trowb; apu.tdatab('0%',10); htp.p('sähköposti: '); apu.tdatae; apu.tdatab('0%',10); htp.p(p_rec.p_ ); apu.trowe; apu.trowb; apu.tdatab('0%',10); htp.p('palaute: '); apu.tdatae; apu.tdatab('0%',10); htp.p(p_rec.p_palaute); apu.trowe; apu.trowb; apu.tdatab('0%',10);

24 24 htp.p('vastauspyyntö: '); apu.tdatae; apu.tdatab('0%',10); IF p_rec.p_vastauspyynto=1 THEN htp.p('vastausta pyydetään'); ELSE htp.p('ei vastauspyyntöä'); END IF; apu.trowe; apu.trowb; apu.tdatab('0%',10); apu.tdatae; apu.tdatab('0%',10); apu.trowe; apu.tend; htp.p('<hr>'); END LOOP; htp.p('</div>'); END IF; apu.pbordersend; apu.pend; EXCEPTION /* Jos tietoja ei löydy niin ilmoitetaan virheestä käyttäjälle */ WHEN NO_DATA_FOUND THEN apu.errorpage('tietoja ei löydy!'); WHEN OTHERS THEN apu.errorpage('tapahtui järjestelmän sisäinen virhe. Ota yhteys tietokannan ylläpitäjään.'); END; / Www-ympäristössä edellä olevan palaute -proseduurin koodi toimii taustalla seuraavan näköisessä käyttöliittymässä, jossa avoinna on palautesivu.

25 25 KUVIO 4. PL/SQL-kieltä käyttävän www-sovelluksen käyttöliittymä 3.5 Herättimet osana tietokantaa Herätin (Trigger) on tietokantaan tallennettu proseduuri, joka aktivoituu kun haluttu SQL-operaatio suoritetaan. Tyypillisesti SQL-komennoista INSERT, UPDATE tai DELETE komento käynnistää herättimen toiminnan. Oracleympäristössä myös PL/SQL- tai Java-proseduurin suorittaminen voidaan määrittää ehdoksi herättimen aktivoitumiselle. Herätin luodaan komennolla CREATE TRIGGER. Seuraavassa ohjelmanpätkässä esitetään yksinkertainen herätinproseduuri, joka aktivoituu kun tietokantatauluun kohdistuu jokin SQLkäskyistä DELETE, INSERT tai UPDATE. Esimerkki herättimen aktivoivasta SQL-lauseesta: UPDATE Emp_tab SET sal = sal WHERE deptno = 10; Herätinproseduuri: CREATE OR REPLACE TRIGGER Print_salary_changes

26 26 BEFORE DELETE OR INSERT OR UPDATE ON Emp_tab FOR EACH ROW WHEN (new.empno > 0) DECLARE sal_diff number; BEGIN sal_diff := :new.sal - :old.sal; dbms_output.put('old salary: ' :old.sal); dbms_output.put('new salary: ' :new.sal); dbms_output.put_line('difference ' sal_diff); END; / BEFORE-käsky merkitsee sitä, että uudet arvot huomioidaan ennen kuin ne tallennetaan tietokantatauluun, jolloin niitä voidaan muokata tarvittaessa. FOR EACH ROW-käskyllä herätin aktivoidaan jokaisen SQL-komennon kohdalla eli tämä voi tapahtua mahdollisesti useita kertoja saman komennon käynnistämänä. 3.6 Tyypillisiä, verkkoa käyttäviä operaatioita PL/SQL-kielessä PL/SQL-kielen sisäänrakennettujen ominaisuuksien kuten tietokantaoperaatioiden ja ohjelmointilogiikan lisäksi Oraclesta löytyy paketteja, jotka tarjoavat useita Internetissä käytettäviä, verkkoa käyttäviä operaatioita ohjelmoijan työkaluiksi. Sähköpostin lähetys onnistuu esimerkiksi käyttämällä UTL_SMTP-pakettia. SMTP (Simple Mail Transfer Protocol) on yksikertainen, tekstipohjainen protokolla sähköpostien lähettämiseen Internetin välityksellä. Proseduurin muuttujien esittelyn jälkeen, jossa määritellään yleensä palvelimet ja sähköpostiosoitteet, viestin lähetys onnistuu käyttämällä paketin valmiita toimintoja. Esimerkki SMTP-protokollan käytöstä: mail_conn := utl_smtp.open_connection(mailhost, 25); utl_smtp.helo(mail_conn, postipalvelin); utl_smtp.mail(mail_conn, lahettaja); utl_smtp.rcpt(mail_conn, vastaanottaja); utl_smtp.open_data(mail_conn); utl_smtp.write_data(mail_conn, 'Esimerkkiviesti.' chr(13)); utl_smtp.close_data(mail_conn);

27 27 utl_smtp.quit(mail_conn); Samalla periaatteella paketteja käyttämällä voidaan määrittää paikallisen koneen palvelinominaisuuksia, kuten nimi ja IP-osoite. Voidaan avata myös TCP/IP-yhteys muihin verkossa oleviin koneisiin, sekä esimerkiksi lähettää ja vastaanottaa viestejä Socket-rajapintaa käyttäen. Lisäksi on mahdollista kontrolloida monipuolisesti HTTP-protokollaa sisältäen muun muassa evästeet, sessiot, Proxy-palvelimet ja uudelleenohjaukset. Eräänä tekniikkana www-ympäristöä käyttävälle tietokantaohjelmoijalle Oracle-sovellusympäristö tarjoaa PL/SQL Server Pages (PSP) -skriptit, jotka suoritetaan palvelinpäässä. Tämä skriptaustekniikka mahdollistaa dynaamisen sisällön lisäämisen, sisältäen SQL-kyselyiden tulokset, HTML-pohjaiselle wwwsivulle. PSP:tä sisältävien HTML-sivujen tekeminen onnistuu muun muassa siihen erikseen kehitetyllä ohjelmalla, mutta myös tavallisella tekstieditorilla. PSP-koodin suorittava palvelin lähettää lopputuloksena selaimelle HTMLsivun, joka sisältää täysin selaimen ymmärtämää koodia.

28 28 4 PL/SQL-KIELI VERRATTUNA JAVAAN ORACLE TIETOKANTAOHJELMOINNISSA Oracle-tietokanta on perinteisesti tukenut kahta ohjelmointikieltä sisäisesti, PL/SQL:ää ja Javaa. Oracle-sovelluspalvelimessa on implementoituna Javateknologian käyttämä J2EE-alusta (Java 2 Platform, Enterprise Edition), joka tarjoaa sovellusarkkitehtuurin Java-sovelluksien käyttämistä varten. Tämä tilanne aiheuttaa usein vertailua siitä, kumpi kielistä on parempi Oracleohjelmointiin. Käytännössä tilanteen voi ratkaista esimerkiksi ohjelmoijan mieltymykset ja kyvyt tai työtehtävän rooli. Kumpikin teknologia pitää sisällään myös heikkouksia, joita alla olevassa vertailussa otetaan esille. Melko karkealla tasolla määriteltyjä erityisominaisuuksia ovat: PL/SQL Datakeskeinen ja läheisesti sidoksissa tietokantaan. Oraclen itsensä kehittämä kieli, jonka yhteensopivuus muiden tietokannan hallintajärjestelmien kanssa on huono. Vaikea siirtää muihin järjestelmiin. Tietokantaan kohdistuvat dataoperaatiot ovat PL/SQL-kielessä hieman nopeampia kuin Javassa. Syntaksiltaan ja ohjelmointirakenteiltaan lähtökohtaisesti yksikertaisempi käyttää kuin Java, mutta huonommin skaalautuva laajoissa toteutuksissa. Java Avoin standardi eli ei ole räätälöity Oraclea varten eikä ole sen omaisuutta. Vapaasti kehitettävissä, mutta toisaalta kaikkien ominaisuuksien täydellinen yhteensopivuus ei ole taattu.

29 29 Vaatii hieman resursseja tyyppimuunnoksiin Oracle-tietokannan ja Javan tietotyyppijärjestelmien välillä. Kokonaisuudessaan vaikeampi ohjelmointikieli käyttää Oracletietokannan hallintaan.

30 30 5 ORACLE-TIETOKANNAN HALLINTAJÄRJESTELMÄN TIETOTURVA Oracle-yhtiö julkaisee säännöllisesti, pääsääntöisesti neljännesvuosittain päivityksiä tuotteisiinsa. Asiakkaiden käytössä on päivityksistä tiedottava ennakkovaroitusohjelma, joka kertoo päivityksessä paikattavat ohjelmistot. Yleisesti ottaen Oracle-tietokannan hallintajärjestelmän tietoturvaa pidetään korkeatasoisena ja myös suurien organisaatioiden käyttöön sopivana, jolloin datamäärät ovat suuret ja käyttäjät hajaantuneet laajalle alueelle. Luotettavuutta on kasvattanut kymmenien vuosien kehitystyö Oracletuotteissa. Kaikesta huolimatta Oracle-tietokannasta ja PL/SQLkomponenteista on löydetty tasaiseen tahtiin useita kymmeniä haavoittuvuuksia, joita Oracle pyrkii korjaamaan päivityksissään. Viime aikoina erityisesti autentikointiin on liittynyt jopa kriittisiä haavoittuvuuksia. Oraclen tietoturvapäivityskäytäntö on saanut runsaasti kritiikkiä hitaudestaan ja kattamattomuudestaan, jolloin asiakas voi tuntea ohjelmiston turvattomaksi. Oracle Database 10g versiosta lähtien tietokannan kryptaus on jo varsin tehokkaalla tasolla johtuen pitkälti sen tukemasta AES (Advanced Encryption Standard) kryptausalgoritmista, jossa salaus on 256-bittinen. Tietokannan käyttöoikeuksia on kehitetty ja pyritty tarkentamaan entistä monipuolisemmalla oikeuksienhallinnalla. Oracle-tietokannan hallintajärjestelmän yhteyteen on kehitetty useita erillisiä ohjelmia huolehtimaan muun muassa henkilöllisyydenhallinnasta ja käyttäjien autentikoinnista.

31 31 6 YHTEENVETO Oracle-tietokannan hallintajärjestelmä pohjautuu relaatiotietokannan käyttämiseen tietojen tallentamisessa ja SQL-kielisiin komentoihin talletettujen tietojen hyödyntämisessä. PL/SQL-kieli on proseduraalinen lisäteknologia, joka sisältää SQL-kyselyt osana ohjelmointikieltä. PL/SQL-kieli muistuttaa syntaksiltaan varsin paljon ADA-ohjelmointikieltä ja onkin varsin helppo omaksua. Ohjelman rakenteet PL/SQL-kielessä on suunniteltu loogisiksi kokonaisuuksiksi, joissa voidaan käyttää useista ohjelmointikielistä tuttuja ehdollisia, iteratiivisia ja jaksollisia käskyjä. PL/SQL-kielessä ohjelmamoduulina käytetään usein proseduuria, jonka rakenne noudattaa lohkoksi kutsuttua loogista kokonaisuutta. Järjestyksessä lohkon muodostavat sen nimiosio, muuttujia varten oleva määritysosio, ohjelman ydinkoodin suoritukseen tarkoitettu suoritusosio ja lopuksi poikkeusten käsittelyä varten oleva poikkeusosio. Www-sovelluksen kannalta PL/SQL-kielen rakenteisiin voidaan yhdistää sujuvasti selaimen ymmärtävää HTML-kieltä, ja yleisesti Oracle-palvelimella voidaan suorittaa monimutkaisiakin PL/SQL-sovelluksia, jotka palauttavat lopputuloksena selaimelle sen ymmärtämää koodia. Parametrien välitys on keskeinen osa PL/SQL-kielen dynaamista ja interaktiivista toimintaa, ja tätä varten kyseisestä ohjelmointikielestä löytyykin muun muassa SQL-kyselyitä sisältäviä kursorimuuttujia ja proseduurien parametrien välitystä tukevia oliopiirteitä. Parametrien välitys onkin usein keskeinen osa www-palvelun toimintaperiaatetta, jolloin käyttäjän antamia syötteitä välitetään palvelimelle ja sieltä takaisin selaimelle. Tietokantasovelluksen dynaamisuutta lisäävät herättimet, jotka reagoivat aktivoitumalla tietokantaoperaatioista. Lisäksi www-ominaisuuksiltaan PL/SQL-kieli tukee useita verkkoa käyttäviä operaatioita, joita löytyy runsaasti valmiista paketeista. Paketit ovat eräänlainen

32 32 oliopiirre PL/SQL-kielessä, koska niihin voidaan koota yhteen yleensä jollakin tapaa toisiinsa liittyviä objekteja, joita voidaan kutsua myös paketin ulkopuolelta. Koska Oracle-tietokanta tukee myös muun muassa Javaa eräänä ohjelmointikielenään, verrataan PL/SQL-kieltä ominaisuuksiltaan usein tähän. Kummatkin kielet sisältävät omat vahvuutensa, mutta Oracle pyrkii kehittämään omistamaansa PL/SQL-kieltä niin, että se voisi palvella käyttäjiä ensisijaisena ohjelmointiratkaisuna. Oraclen tietoturvakysymykset ovat herättäneet keskustelua niin Oracle-tietokannan kuin PL/SQL-kielen komponenttien osalta. Suosittuna tietokantaohjelmistona Oraclen on parannettava jatkuvasti tietoturvaansa, jo kilpailuasemansakin säilyttämiseksi. Useat tutkimukset perehtyvät Oracle-tietokantaan ja sen ominaisuuksiin etenkin nykymarkkinoilla, mutta Oracleen sidoksissa olevaa PL/SQL-kieltä on tutkittu huomattavasti vähemmän.

33 33 7 LÄHDELUETTELO Feuerstein, S. & Pribyl, B., Oracle PL/SQL Programming (Second Edition) [online], O'Reilly & Associates. Saatavilla WWW-muodossa < Kirves, A., ITviikko [online]. Saatavilla WWW-muodossa < Meade, K., PL/SQL Loops and the Performance Problem they May Cause [online], Oracle Underground FAQ. Saatavilla WWW-muodossa < Oracle Corporation, Developing Web Applications with PL/SQL [online]. Saatavilla WWW-muodossa < /a96590/adgweb.htm> Oracle FAQ Knowledge Base, PL/SQL [online], Oracle Underground FAQ. Saatavilla WWW-muodossa < Helsingin yliopisto, Oracle tietokanta [online]. Saatavilla WWWmuodossa < &kie=fin&luk=1> Oracle Technology Network, Oracle Database Security and Compliance [online]. Saatavilla WWW-muodossa < Oraclenotes.com, Saatavilla WWW-muodossa < Powell, G., Oracle8i PL/SQL [online]. Saatavilla WWW-muodossa <

34 34 Scalzo, B., Engineering Better PL/SQL [online], Oracle Underground FAQ. Saatavilla WWW-muodossa <

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009 PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009 PROSEDUURIT Ohjelmamoduuleita, jotka voidaan tallettaa tietokantaan (DBMS:n tietohakemistoon)

Lisätiedot

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 S2008 Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT Jouni Huotari S2008 2 Proseduurit Ohjelmamoduuleita, jotka voidaan tallettaa tietokantaan (DBMS:n tietohakemistoon)

Lisätiedot

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

Kirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina Kirjasto Kevät 2001 Auvinen Annemari Niemi Anu Harjoitustyö 7.4.2001 Sisällysluettelo 1. Yleiskuvaus... 3 2. Vaatimukset... 3 2.1. Toiminnalliset... 3 2.1.1. Sisäänkirjautuminen... 3 2.1.2. Nimikkeiden

Lisätiedot

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu 13.11.2000

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu 13.11.2000 HELIA 1 (15) Luento 2.7 Toiminnallisuutta tietokantaan... 2 Deklaratiivinen eheysvalvonta... 2 Proseduraalinen eheysvalvonta... 3 Eheysvalvonnan suunnittelusta... 4 Sääntöjen määrittely... 4 Toteutusvaihtoehdot...

Lisätiedot

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

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 11 TU00AA48-2002 TU10S1E Hannu Markkanen 22.11.2011 9/10/12 Helsinki Metropolia University of Applied Sciences 1 Indeksit Indeksit Taulun

Lisätiedot

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö Tekijät: Eemeli Honkonen Joni Metsälä Työ palautettu: SISÄLLYSLUETTELO: 1 SEMINAARITYÖN KUVAUS... 3 2 TIETOKANTA... 3 2.1 MITÄ TIETOKANNAT SITTEN OVAT?... 3

Lisätiedot

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus 582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus Sisältö Mikä on web-sovellus? Selaimen rooli web-sovelluksessa Palvelimen rooli web-sovelluksessa Aineistopyynnöt Tiedon välittäminen

Lisätiedot

ELM GROUP 04. Teemu Laakso Henrik Talarmo

ELM GROUP 04. Teemu Laakso Henrik Talarmo ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................

Lisätiedot

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas Tiedonhallinnan perusteet Viikko 1 Jukka Lähetkangas Kurssilla käytävät asiat Tietokantojen toimintafilosofian ja -tekniikan perusteet Tiedonsäilönnän vaihtoehdot Tietokantojen suunnitteleminen internetiä

Lisätiedot

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...

Lisätiedot

Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija Opintojaksolla: keskitytään relaatiotietokantojen teoriaan ja toimintaan SQL-kieli kyselykielenä

Lisätiedot

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

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet A271117, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

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

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot) SQL sisältää operaatiot tietokannan sisällön muodostamiseen ja ylläpitoon: insert - uusien rivien vienti tauluun delete - rivien poisto update - rivien muutos 1 Insert lauseella on kaksi muotoa: insert

Lisätiedot

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta Jouni Huotari Martti Laiho (materiaali on osa virtuaaliammattikorkeakoulun Tietokantaosaaja-opintokokonaisuutta) opintokokonaisuutta)

Lisätiedot

HELIA 1 (17) Outi Virkki Tietokantasuunnittelu 21.11.2000

HELIA 1 (17) Outi Virkki Tietokantasuunnittelu 21.11.2000 HELIA 1 (17) Luento 2.8 Talletetut rutiinit... 2 Talletetut rutiinit SQL3:ssa... 3 Ulkopuoliset rutiinit... 4 Talletetut rutiinit Oraclessa... 7 Ohjelmakoodista... 8 Koodin virheet... 8 Virhetilanteiden

Lisätiedot

Maiju Mykkänen (D6297@jamk.fi) Susanna Sällinen (E0941@jamk.fi)

Maiju Mykkänen (D6297@jamk.fi) Susanna Sällinen (E0941@jamk.fi) Maiju Mykkänen (D6297@jamk.fi) Susanna Sällinen (E0941@jamk.fi) Tietokannan hallinta-opintojakson selvitysraportti Huhtikuu 2010 Mediatekniikka ICT/Teknologia Tämän teosteoksen käyttöoikeutta koskee Creative

Lisätiedot

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa WWW ja tietokannat WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa tekstiä, kuvia, hyperlinkkejä Staattiset sivut kirjoitettu kerran, muuttaminen käsin ongelmana pysyminen ajantasalla Ylläpito hankalaa,

Lisätiedot

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki PERL TIE-20306 Principles of Programming Languages Ryhmä 4: Joonas Lång & Jasmin Laitamäki 1. Johdanto Perl on ohjelmointikielten perhe, johon kuuluu Perl 5 ja Perl 6. Kielet ovat kuitenkin erilliset ohjelmointikielet

Lisätiedot

Lyseopaneeli 2.0. Käyttäjän opas

Lyseopaneeli 2.0. Käyttäjän opas Lyseopaneeli 2.0 Käyttäjän opas 1. Esittely Lyseopaneeli on Oulun Lyseon lukion käyttäjätietojen hallintapalvelu jonka tarkoitus on niputtaa yhteen muutamia oleellisia toimintoja. 2. Yleistä paneelin käytöstä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services Järjestelmäarkkitehtuuri (TK081702) Standardoidutu tapa integroida sovelluksia Internetin kautta avointen protokollien ja rajapintojen avulla. tekniikka mahdollista ITjärjestelmien liittämiseen yrityskumppaneiden

Lisätiedot

Tutoriaaliläsnäoloista

Tutoriaaliläsnäoloista Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus

Lisätiedot

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä: Linux-harjoitus 6 Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä: http://www.mysql.com/, MySQL-tietokantaohjelman kotisivu. http://www.mysql.com/doc/en/index.html,

Lisätiedot

Visual Basic -sovelluskehitin Juha Vitikka

Visual Basic -sovelluskehitin Juha Vitikka Visual Basic -sovelluskehitin Helsinki 30.10.2000 Seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Visual Basic sovelluskehitin Seminaari: Ohjelmistotuotantovälineet Tietojenkäsittelytieteen

Lisätiedot

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

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC) HAAGA-HELIA ICT1TA006: Ohjelmointi 1 /5 Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC) (Lähteet: Oracle java jdbc Tutorial, Arvo Lipitsäinen: Tietokannan käsittely JDBC:n

Lisätiedot

Dart. Ryhmä 38. Ville Tahvanainen. Juha Häkli

Dart. Ryhmä 38. Ville Tahvanainen. Juha Häkli Dart Ryhmä 38 Ville Tahvanainen Juha Häkli 1.LYHYESTI Dart on luokkapohjainen, yksiperintäinen, puhdas olio-ohjelmointikieli. Dart on dynaamisesti tyypitetty. Sovellukset on organisoitu modulaarisiksi

Lisätiedot

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML AJAX-konsepti AJAX Asynchronous JavaScript And XML Viimeisin muoti-ilmiö web-ohjelmoinissa, termi Ajax tuli käyttöön vuoden 2005 aikana Joukko teknologioita, joiden avulla voidaan toteuttaa uudenlaisen

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 4 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten lauseisiin, lausekkeisiin ja aliohjelmiin liittyvät kysymykset. Tehtävä 1. Mitä

Lisätiedot

TIETOKANTOJEN PERUSTEET MARKKU SUNI

TIETOKANTOJEN PERUSTEET MARKKU SUNI TIETOKANTOJEN PERUSTEET MARKKU SUNI SQL - KIELI TIETOJEN MUOKKAUS MARKKU SUNI Tarkastellaan tauluissa olevien tietojen muokkausta muokkauskäskyjä: INSERT UPDATE DELETE Kysymys kuuluu: Voiko tietoja muokata

Lisätiedot

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari Alkuraportti Avoimen lähdekoodin käyttö WWW-sovelluspalvelujen toteutuksessa Lappeenranta, 30.3.2008,

Lisätiedot

DXL Library ja DXL-kielen olemus. Pekka Mäkinen Pekka.Makinen@softqa.fi SoftQA Oy http/www.softqa.fi/

DXL Library ja DXL-kielen olemus. Pekka Mäkinen Pekka.Makinen@softqa.fi SoftQA Oy http/www.softqa.fi/ DXL Library ja DXL-kielen olemus Pekka Mäkinen Pekka.Makinen@softqa.fi SoftQA Oy http/www.softqa.fi/ DOORS extension Language DXL on DOORSin laajennuskieli, jolla voidaan kehittää lisätoiminnallisuutta.

Lisätiedot

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli TIE-20306 PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli Seminaariesitelmä ryhmä 24 Markku Ahokas Jani Kuitti i SISÄLLYSLUETTELO 1. YLEISTÄ EIFFELISTÄ... 1 1.1 Historia ja tausta... 1 1.2

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

Valppaan asennus- ja käyttöohje

Valppaan asennus- ja käyttöohje Versio Päiväys Muokkaaja Kuvaus 0.9 16.2.2006 Tuukka Laakso Korjattu versio 0.1 Antti Kettunen Alustava versio Sisällysluettelo 1 Johdanto...2 2 Valppaan asennus...3 2.1 Valppaan kääntäminen...3 2.2 Valmiiksi

Lisätiedot

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

4. Lausekielinen ohjelmointi 4.1 4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen,

Lisätiedot

TIE Principles of Programming Languages CEYLON

TIE Principles of Programming Languages CEYLON TIE-20306 Principles of Programming Languages CEYLON SISÄLLYSLUETTELO 1. YLEISTIETOA KIELESTÄ JA SEN KEHITTÄMISESTÄ... 1 2. CEYLONIN OMINAISUUKSIA... 2 2.1 Modulaarisuus... 2 2.2 Tyypit... 2 2.3 Muita

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia. Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka

Lisätiedot

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne

Lisätiedot

EXEC SQL BEGIN DECLARE SECTION

EXEC SQL BEGIN DECLARE SECTION Tietokantaohjelmointi Tietokantaa käytetään harvoin suoraan kyselyliittymän kautta Tyypillisesti käyttö tapahtuu sovellusohjelman kautta Sovellusohjelmaa laadittaessa vaihtoehtoja tietokantakäsitettelyn

Lisätiedot

5/20: Algoritmirakenteita III

5/20: Algoritmirakenteita III Ohjelmointi 1 / syksy 2007 5/20: Algoritmirakenteita III Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/17 Tämän

Lisätiedot

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT KOULUTUKSEN KOHDERYHMÄ SISÄLTÖ Koulutuksen tavoitteena on antaa opiskelijalle valmiudet uusien tietoteknisten menetelmien ja välineiden hyödyntämiseen.

Lisätiedot

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Asennusohje Sahara-ryhmä Helsinki 24.8.2005 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Sanna Keskioja Sampo

Lisätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 8: Pienen ohjelmointikielen tulkki (ohjelmoitava laskin) (mm. SICP 4-4.1.5 osin) Riku Saikkonen 15. 11. 2012 Sisältö 1 Nelilaskintulkki, globaalit muuttujat

Lisätiedot

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne

Lisätiedot

1. Omat operaatiot 1.1

1. Omat operaatiot 1.1 1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

Tekninen kuvaus Aineistosiirrot Interaktiiviset yhteydet iftp-yhteydet

Tekninen kuvaus Aineistosiirrot Interaktiiviset yhteydet iftp-yhteydet Tekninen kuvaus Aineistosiirrot Interaktiiviset yhteydet iftp-yhteydet 15.11.2012 Sisällysluettelo 1 Johdanto... 3 1.2 Interaktiivinen FTP-yhteystapa... 3 1.3 Linkki aineistosiirtopalveluun liittyvät dokumentit...

Lisätiedot

Tietojärjestelmä tuotantoympäristössä. Sovellusohjelmat Helsingin ammattikorkeakoulu Stadia / Tekniikka ja liikenne Vesa Ollikainen

Tietojärjestelmä tuotantoympäristössä. Sovellusohjelmat Helsingin ammattikorkeakoulu Stadia / Tekniikka ja liikenne Vesa Ollikainen Tietojärjestelmä tuotantoympäristössä Tausta ja tavoitteet Tausta Kurssilla on opiskeltu suunnittelemaan ja toteuttamaan tietokanta, joka on pieni perustuu selkeisiin vaatimuksiin on (yleensä) yhden samanaikaisen

Lisätiedot

LINUX-HARJOITUS, MYSQL

LINUX-HARJOITUS, MYSQL LINUX-HARJOITUS, MYSQL Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä: http://www.mysql.com/, MySQL-tietokantaohjelman kotisivu. http://www.mysql.com/doc/en/index.html,

Lisätiedot

T-111.361 Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

T-111.361 Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot T-111.361 Hypermediadokumentin laatiminen -Ohjelmointi Peruskäsitys www-ohjelmoinnin kentästä Tekniikat interaktiivisuuden toteuttamiseen tekniikat tekniikat Tietokannat Juha Laitinen TKK/TML juha.laitinen@hut.fi

Lisätiedot

11/20: Konepelti auki

11/20: Konepelti auki Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon

Lisätiedot

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen Chapel TIE-20306 Ryhmä 91 Joonas Eloranta Lari Valtonen Johdanto Chapel on Amerikkalaisen Cray Inc. yrityksen kehittämä avoimen lähdekoodin ohjelmointikieli. Chapel on rinnakkainen ohjelmointikieli, joka

Lisätiedot

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2 TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos TKT-3200 Tietokonetekniikka I Harjoitustyö 4: Cache, osa 2.. 2010 Ryhmä Nimi Op.num. 1 Valmistautuminen Cache-työn toisessa osassa

Lisätiedot

Ohje luottamuksellista tietoa sisältävien sähköpostiviestien lähettämiseen ja vastaanottamiseen

Ohje luottamuksellista tietoa sisältävien sähköpostiviestien lähettämiseen ja vastaanottamiseen Ohje luottamuksellista tietoa sisältävien sähköpostiviestien lähettämiseen ja vastaanottamiseen Liikenteen turvallisuusvirasto 27.9.2012 Sisällysluettelo Luottamuksellista tietoa sisältävien sähköpostiviestien

Lisätiedot

Action Request System

Action Request System Action Request System Manu Karjalainen Ohjelmistotuotantovälineet seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos 25.10.2000 Action Request System (ARS) Manu Karjalainen Ohjelmistotuotantovälineet

Lisätiedot

Hohde Consulting 2004

Hohde Consulting 2004 Luento 5: XQuery AS-0.110 XML-kuvauskielten perusteet Janne Kalliola XQuery XQuery uudet funktiot sekvenssit muuttujat Iterointi järjestys suodatus järjestäminen Ehtorakenteet Muita toimintoja www.hohde.com

Lisätiedot

Nebula pilvi 9.0 saatavuusalueiden välinen verkkoliikenne

Nebula pilvi 9.0 saatavuusalueiden välinen verkkoliikenne Nebula pilvi 9.0 saatavuusalueiden välinen verkkoliikenne Sivu 2/9 1. Sisällysluettelo 2. Esipuhe 3 2.1. Saatavuusalueet 3 2.1.1. Taustaverkko missä instanssit ovat suoraan fyysisellä liitännällä kiinni

Lisätiedot

ADA. Ohjelmointikieli. Ryhmä 5 Henna Olli, Päivi Hietanen

ADA. Ohjelmointikieli. Ryhmä 5 Henna Olli, Päivi Hietanen ADA Ohjelmointikieli Ryhmä 5 Henna Olli, Päivi Hietanen 1 JOHDANTO Ada on käännettävä ohjelmointikieli, joka kehitettiin vähentämään sulautettujen ja reaaliaikaisten järjestelmien käyttökustannuksia. Kieli

Lisätiedot

Testidatan generointi

Testidatan generointi Testidatan generointi Anu Ahonen Kevät 2008 Tämä työ on tehty Creative Commons -lisenssin alla Työn tarkasti 9.4.2008 Jouni Huotari (JAMK/IT) 1 SISÄLTÖ 1 TYÖN LÄHTÖKOHDAT JA TOTEUTUS...2 2 TESTIDATAN GENEROINTI

Lisätiedot

Office 2013 - ohjelmiston asennusohje

Office 2013 - ohjelmiston asennusohje Office 2013 - ohjelmiston asennusohje Tämän ohjeen kuvakaappaukset on otettu asentaessa ohjelmistoa Windows 7 käyttöjärjestelmää käyttävään koneeseen. Näkymät voivat hieman poiketa, jos sinulla on Windows

Lisätiedot

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin Raimo Nikkilä Aalto-yliopiston sähkötekniikan korkeakoulu - Automaation tietotekniikan tutkimusryhmä 17. tammikuuta 2013

Lisätiedot

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Asennusohje Sahara-ryhmä Helsinki 31.8.2005 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Sanna Keskioja Sampo

Lisätiedot

Sähköpostitilin käyttöönotto

Sähköpostitilin käyttöönotto Sähköpostitilin käyttöönotto Versio 1.0 Jarno Parkkinen jarno@atflow.fi Sivu 1 / 16 1 Johdanto... 2 2 Thunderbird ohjelman lataus ja asennus... 3 3 Sähköpostitilin lisääminen ja käyttöönotto... 4 3.2 Tietojen

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman

Lisätiedot

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla 2.5. YDIN-HASKELL 19 tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla kirjaimilla. Jos Γ ja ovat tyyppilausekkeita, niin Γ on tyyppilauseke. Nuoli kirjoitetaan koneella

Lisätiedot

Kielioppia: toisin kuin Javassa

Kielioppia: toisin kuin Javassa Object Pascal Pascal kielen oliolaajennus (Inprise/Borland:n oma) luokat Voit uudelleenkäyttää luomiasi objekteja esim. komponentteja Periytyminen Kielioppia: toisin kuin Javassa Ei eroa isojen ja pienien

Lisätiedot

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32 HSMT Tietokannoista Ville Leppänen HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h)

Lisätiedot

Oracle-tietokanta. Riku Nykänen 1/2010

Oracle-tietokanta. Riku Nykänen 1/2010 Oracle-tietokanta Riku Nykänen 1/2010 Sisältö Oraclen historiaa Tietokannan rakenne ja arkkitehtuuri Oraclen ominaisuuksia Tietokannan hallintatyökalut DB configuration assistant (DBCA) Enterprise Manager

Lisätiedot

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

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5) Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat Järjestelmäarkkitehtuuri (TK081702) SOA yleistyvät verkkopalveluissa Youtube Google... Avaavat pääsyn verkkopalvelun sisältöön. Rajapintojen tarjoamia tietolähteitä yhdistelemällä luodaan uusia palveluja,

Lisätiedot

SQLite selvitysraportti. Juha Veijonen, Ari Laukkanen, Matti Eronen. Maaliskuu 2010

SQLite selvitysraportti. Juha Veijonen, Ari Laukkanen, Matti Eronen. Maaliskuu 2010 SQLite selvitysraportti Juha Veijonen, Ari Laukkanen, Matti Eronen Maaliskuu 2010 Opinnäytetyö Kuukausi Vuosi 1 SISÄLTÖ 1. YLEISTÄ SQLITE:STA... 2 2. HISTORIA... 2 3. SQLITEN KÄYTTÖ... 3 3.1 SQLiten asennus

Lisätiedot

Makrojen mystinen maailma lyhyt oppimäärä

Makrojen mystinen maailma lyhyt oppimäärä Makrojen mystinen maailma lyhyt oppimäärä Makrot osana SAS-teknologiaa Yleiskuva Jouni Javanainen Aureolis lyhyesti Aureolis on jatkuvia Business Intelligence -palveluita tuottava asiantuntijaorganisaatio

Lisätiedot

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu HELIA 1 (21) Luento 4.1 Oliot ja Relaatiot... 2 Relaatiomalli... 2 Oliomalli... 2 Termejä... 4 Yhteensovituksen 3 tapaa... 5 1) Oliot relaatioina / tauluina ja RDBMS... 6 Olioluokka... 7 Olion identiteetti...

Lisätiedot

Written by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36

Written by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36 !!!!! Relaatiotietokannat ovat vallanneet markkinat tietokantojen osalta. Flat file on jäänyt siinä kehityksessä jalkoihin. Mutta sillä on kuitenkin tiettyjä etuja, joten ei se ole täysin kuollut. Flat

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

Lisätiedot

Luento 5. Timo Savola. 28. huhtikuuta 2006

Luento 5. Timo Savola. 28. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 5 Timo Savola 28. huhtikuuta 2006 Osa I Shell-ohjelmointi Ehtolause Lausekkeet suoritetaan jos ehtolausekkeen paluuarvo on 0 if ehtolauseke then lauseke

Lisätiedot

Luento 4. Timo Savola. 21. huhtikuuta 2006

Luento 4. Timo Savola. 21. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 4 Timo Savola 21. huhtikuuta 2006 Osa I Shell Lausekkeet Komentoriville kirjotettu komento on lauseke echo "foo" echo $USER MUUTTUJA=1 ls -l Rivinvaihto

Lisätiedot

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

Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT Agenda Regular Expression - funktiot Case-insensitive Sort Case-insensitive Seach Merge muutokset Tree-walking in 10g DML Returning Values

Lisätiedot

18 LIITTYMÄT MUIHIN JÄRJESTELMIIN

18 LIITTYMÄT MUIHIN JÄRJESTELMIIN 18 MUIHIN JÄRJESTELMIIN Prospekti DAFOon rakennettu liittymiä muiden ohjelmiston toimittajien järjestelmiin. Tässä yhteydessä ei tarkoiteta siirtotiedoston muodostamista, kuten reskontraan siirto tai lappujen

Lisätiedot

Zeon PDF Driver Trial

Zeon PDF Driver Trial Matlab-harjoitus 2: Kuvaajien piirto, skriptit ja funktiot. Matlabohjelmoinnin perusteita Numeerinen integrointi trapezoidaalimenetelmällä voidaan tehdä komennolla trapz. Esimerkki: Vaimenevan eksponentiaalin

Lisätiedot

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja

Lisätiedot

Tietokannan konversio

Tietokannan konversio Tampereen ammattikorkeakoulu Tietojenkäsittelyn koulutusohjelma Juho Kangas Opinnäytetyö Tietokannan konversio Oracle-pohjaisen tietokannan muunnos PL/SQL-tietokantaohjelmointikielellä Työn ohjaaja Petri

Lisätiedot

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Viimeksi muokattu 5. toukokuuta 2012 Maastotietokannan torrent-jakeluun sisältyy yli 5000 zip-arkistoa,

Lisätiedot

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

Lisätiedot

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja.

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja. laskutus_index http://media.stadia.fi/~0700527/laskutus/laskutus_index.html Sivu 1/1 13.12.2007 Laskutus -tietokanta Henkilöiden tiedot: Lisää uuden henkilön tiedot Muuta tai poista henkilön tiedot Selaa

Lisätiedot

Ohjelmointiharjoituksia Arduino-ympäristössä

Ohjelmointiharjoituksia Arduino-ympäristössä Ohjelmointiharjoituksia Arduino-ympäristössä Yleistä Arduino-sovelluksen rakenne Syntaksi ja käytännöt Esimerkki ohjelman rakenteesta Muuttujat ja tietotyypit Tietotyypit Esimerkkejä tietotyypeistä Ehtolauseet

Lisätiedot

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

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

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); Tietokannat SQL-peruskomentojen pikaopas CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); INSERT INTO table VALUES(val1,val2,... ); Lisää tauluun

Lisätiedot

Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa

Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1 Oliot ja luokat Javaohjelmoinnissa Vesa Laakso 22.9.2012 Sisällysluettelo Sisällysluettelo... 1 Johdanto... 2 1. Luokka... 2 2. Olio... 2 3. Luokan

Lisätiedot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Johdatus ohjelmointiin 81122P (4 ov.) 30.5.2005 Ohjelmointikieli on Java. Tentissä saa olla materiaali mukana. Tenttitulokset julkaistaan aikaisintaan

Lisätiedot

Maestro Sähköpostilähetys

Maestro Sähköpostilähetys Maestro Sähköpostilähetys Maestrossa on toiminut sähköpostin lähetysmahdollisuus käyttäen SMTP-protokollaa. Tällöin sähköposti lähtee suoraan Maestrosta eikä käytä käyttäjän sähköpostitiliä. Elisan asiakkaiden

Lisätiedot

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

Lisätiedot

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

C-ohjelmoinnin peruskurssi. Pasi Sarolahti C! C-ohjelmoinnin peruskurssi Pasi Sarolahti Mitä haluan oppia C-kurssilla? ja miksi? Tutustu lähimpään naapuriin Keskustelkaa miksi halusitte / jouduitte tulemaan kurssille 3 minuuttia è kootaan vastauksia

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702)

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri (TK081702) yleistyvät verkkopalveluissa Youtube Google... Avaavat pääsyn verkkopalvelun sisältöön. Rajapintojen tarjoamia tietolähteitä yhdistelemällä luodaan uusia palveluja,

Lisätiedot

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro1 29.10.2013

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro1 29.10.2013 Virtualisointi Pertti Pennanen DOKUMENTTI 1 (5) SISÄLLYSLUETTELO Virtualisointi... 2 Virtualisointiohjelmia... 2 Virtualisointitapoja... 2 Verkkovirtualisointi... 2 Pertti Pennanen DOKUMENTTI 2 (5) Virtualisointi

Lisätiedot

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

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); Tietokannat SQL-peruskomentojen pikaopas CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); INSERT INTO table VALUES(val1,val2,... ); Lisää tauluun

Lisätiedot