XQuery tietokannan kyselykielenä

Samankaltaiset tiedostot
Hohde Consulting 2004

Web-teknologiat. XML-datan kysely Topi Sarkkinen

5 XML Query Language. Skeemojen opiskelun myötä olemme polulla joka luontevasti johtaa ajatukseen XMLdokumenteista

5 XML Query Language. Skeemojen opiskelun myötä olemme polulla joka luontevasti johtaa ajatukseen XMLdokumenteista

SELECT-lauseen perusmuoto

XML-datan kysely. Topi Sarkkinen. Seminaarityö. Helsinki HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Helsingin yliopisto/tktl XML-metakieli XPath

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

1. a) Laadi suoraviivaisesti kyselyä vastaava optimoimaton kyselypuu.

HELIA 1 (14) Outi Virkki Tiedonhallinta

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

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

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

SQL - STRUCTURED QUERY LANGUAGE

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

Yhdiste, leikkaus, erotus ym.

XML kielioppi. Elementtien ja attribuuttien määrittely. Ctl230: Luentokalvot Miro Lehtonen

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

CSE-A1200 Tietokannat

Makrojen mystinen maailma lyhyt oppimäärä

EXEC SQL BEGIN DECLARE SECTION

CSE-A1200 Tietokannat

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

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

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

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

Ensimmäiset XPath-lausekkeet

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

Sosiaalihuollon asiakirjastandardi kehittyy. Konstantin Hyppönen Erikoissuunnittelija Tietojenkäsittelytieteen laitos Kuopion yliopisto

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

CS-A1150 Tietokannat CS-A1150 Tietokannat / 39

Tutoriaaliläsnäoloista

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

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

TIEA341 Funktio-ohjelmointi 1, kevät 2008

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

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

Sisältö. XML, XHTML ja CSS XML XML. XML:n ja HTML:n ero. XML kieliä XML XHTML CSS XSL. T Hypermediadokumentin laatiminen 2002

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

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Digitaalisen median tekniikat. JSP ja XML

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

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

Tietokannat II -kurssin harjoitustyö

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

XML sekä dokumentin että tietokannan formaatti

Tietueet. Tietueiden määrittely

13. Loogiset operaatiot 13.1

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

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

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

Julkishallinnon XML-skeemat v0.5 JHS-suositus

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

811120P Diskreetit rakenteet

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Tietotyypit ja operaattorit

Helsingin yliopisto / TKTL XML-Metakieli XML Schema

ITKP102 Ohjelmointi 1 (6 op)

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

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

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

SQL-kielen perusteet. Tietokantojen perusteet

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2000 Tietokantaohjelmointi Harri Laine 1. SQL:n käyttö ohjelmissa

P e d a c o d e ohjelmointikoulutus verkossa

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Luento 5. Timo Savola. 28. huhtikuuta 2006

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

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

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

M. Merikanto 2012 XML. Merkkauskieli, osa 2

811120P Diskreetit rakenteet

Kyselyn yleisrakenne:

Java-kielen perusteet

HELIA TIKO-05 XML ja tietokannat 1 ( 24) ICT03D Tieto ja tiedon varastointi Martti Laiho

TIEA341 Funktio-ohjelmointi 1, kevät 2008

Tietorakenteet ja algoritmit

Metropolia ammattikorkeakoulu TU00BS : ICT-teknologiaosaaminen Tuntitehtävät 7 Pasi Ranne

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

Java-kielen perusteita

StanForD-XML. Juha-Antti Sorsa, Tapio Räsänen, Vesa Imponen

Tietokantakurssit / TKTL

CSE-A1200 Tietokannat

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

Tietokantajärjestelmien tulevaisuuden haasteet. Jan Lindström

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

RDBMS - Yhteyskäytännöt

13. Loogiset operaatiot 13.1

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssien laaja oppimäärä

TIEA341 Funktio-ohjelmointi 1, kevät 2008

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

FinFamily Installation and importing data ( ) FinFamily Asennus / Installation

HELIA TIKO-05 XML ja tietokannat 1 ( 23) ICT03D Tieto ja tiedon varastointi Martti Laiho

Algoritmit 2. Luento 7 Ti Timo Männikkö

12 Mallit (Templates)

SPARQL(SPARQL Protocol and RDF Query Language)

Ohjelmointiharjoituksia Arduino-ympäristössä

Transkriptio:

XQuery tietokannan kyselykielenä Miro Lehtonen 31.10.2007 OUGF-syysseminaari Tietojenkäsittelytieteen laitos

Sisältö Johdanto XQueryn perusteet + esimerkkejä Oracle ja XQuery Miro Lehtonen, XQuery tietokannan kyselykielenä 31.10.2007 2

Johdanto XQuery 1.0: An XML Query Language W3C Recommendation 23 January 2007 Yleisesti tuettu suurimmissa tietokannoissa: - Oracle, IBM, Microsoft Yhdistää dokumentit, tietokannat, web-resurssit Korvaa perinteiset Java-, C++ ohjelmat Vähemmän koodia, helpompi ylläpito Monipuolisempi kuin SQL XML-rakenteisiin kohdistuvat kyselyt Hierarkian luominen kyselyn tulokseen Miro Lehtonen, XQuery tietokannan kyselykielenä 31.10.2007 3

Esimerkki <empset> <emp empno= 21 ename= Scott salary= 50000 /> <emp empno= 22 ename= Jones salary= 100000 /> </empset> Työntekijät, joiden palkka > 80000: Jones for $i in doc( emp.xml )/empset/emp let $j = 80000 where $i/@salary > $j return $i/@ename Miro Lehtonen, XQuery tietokannan kyselykielenä 31.10.2007 4

XQueryn runko: FLWOR-rakenne for, let, where, order by, return Melkein kuin SQL:n SELECT, FROM, WHERE, ORDER BY Kiinteä järjestys - 1) (for let)+, 2) where?, 3) order by?, 4) return Iterointi ja muuttujien sitominen välituloksiin for ja let luovat järjestetyn joukon muuttujiin sidottuja arvoja where suodattaa arvojoukkoa Valinnainen order by järjestää joukon uudelleen return antaa tulosjoukolle rakenteen Miro Lehtonen, XQuery tietokannan kyselykielenä 31.10.2007 5

FLWOR-esimerkki Iteroiden sidotaan muuttuja $d joka osaston numeroon Jokaista $d:n sidontaa kohden sidotaan $e osaston työntekijöihin Suodatetaan pois osastot, joissa alle 10 työntekijää Jäljellejääville määritellään tulosmuoto for $d in fn:doc("depts.xml")/depts/deptno let $e := fn:doc("emps.xml")/emps/emp[deptno = $d] where fn:count($e) >= 10 order by fn:avg($e/salary) descending return <big-dept> {$d, <headcount>{fn:count($e)}</headcount>, <avgsal>{fn:avg($e/salary)}</avgsal>} </big-dept> Miro Lehtonen, XQuery tietokannan kyselykielenä 31.10.2007 6

for-lauseke Tuottaa joukon muuttujiin sidottuja arvoja Iterointi useamman arvon sopiessa muuttujan määrittelyyn Muuttuja sidotaan vuorollaan kuhunkin arvoon for $s in (<one/>, <two/>, <three/>) return <out>{$s}</out> Kolme arvoa kolme sidontaa <out><one/></out> <out><two/></out> <out><three/></out> Miro Lehtonen, XQuery tietokannan kyselykielenä 31.10.2007 7

Useampi muuttuja Järjestysmoodi ordered for $i in (<one/>, <two/>), $j in (<three/>,<four/>) return <out><i>{$i}</i><j>{$j}</j></out> <out><i><one/></i><j><three/></j></out> <out><i><one/></i><j><four/></j></out> <out><i><two/></i><j><three/></j></out> <out><i><two/></i><j><four/></j></out> Miro Lehtonen, XQuery tietokannan kyselykielenä 31.10.2007 8

let-lauseke Tuottaa joukon muuttujiin sidottuja arvoja Muuttuja sidotaan sopiviin arvoihin ilman iterointia Uudet sidonnat lisätään for-lausekkeen tuottamiin let $s := (<one/>, <two/>, <three/>) return <out>{$s}</out> Ilman for-lausekette vain yksi sidonta kaikkiin arvoihin <out><one/><two/><three/></out> Miro Lehtonen, XQuery tietokannan kyselykielenä 31.10.2007 9

where-lauseke Suodatin for- ja let-lausekkeiden tuottamille muuttujasidonnoille Arvotetaan kerran jokaiselle sidonnalle Useita predikaatteja, loogisia operaattoreita, viittauksia sidottuihin muuttujiin Jos boolean-arvo on tosi, sidonta säilytetään Esimerkki: where-lausekkeesta viittaus positio-muuttujaan Positio-muuttujaa edeltää at fn:avg(for $x at $i in $inputvalues where $i mod 100 = 0 return $x) Miro Lehtonen, XQuery tietokannan kyselykielenä 31.10.2007 10

order by -lauseke Järjestää muuttujiin sidotut arvot Lausekkeen puuttuessa järjestyksen määrää for- ja letlausekkeet ja järjestämismoodi Arvoihin perustuva järjestys ascending tai descending stable säilyttää syötteen järjestyksen Tyhjät arvot greatest tai least collation: merkkijonojen vertailun määritys for $b in $books/book stable order by $b/title collation "http://www.example.org/collations/fr-ca", $b/price descending empty least return $b Miro Lehtonen, XQuery tietokannan kyselykielenä 31.10.2007 11

return-lauseke Luo FLWOR-rakenteen tulosteen Sovelletaan jokaiseen muuttujaan sidottuun arvoon Sisältönä: Elementtien ja attribuuttien konstruktoreita Viittauksia sidottuihin muuttujiin Sisäkkäisiä rakenteita Esimerkki: Listaa myydyt tuotteet postinumeron mukaan ryhmiteltynä Miro Lehtonen, XQuery tietokannan kyselykielenä 31.10.2007 12

declare namespace rpt="http://www.example.com/report"; let $orders := doc('ipo.xml')/schema-element(ipo:purchaseorder) [@orderdate ge xs:date("1999-09-01") and @orderdate le xs:date("1999-12-31")] let $items := $orders/items/item let $zips := distinct-values($orders/billto/zip) let $parts := distinct-values($items/@partnum) return <rpt:purchasereport> <rpt:regions> { for $zip in $zips order by $zip return <rpt:zip code="{$zip}"> { for $part in $parts let $hits := $orders[ billto/zip = $zip and items/item/@partnum = $part] let $quantity := sum($hits//item[@partnum=$part]/quantity) where count($hits) > 0 order by $part return <rpt:part number="{$part}" quantity="{$quantity}"/> } </rpt:zip> } </rpt:regions> <rpt:parts> { for $part in $parts return <rpt:part number="{$part}">{ string($items[@partnum = $part]/productname)} </rpt:part> } </rpt:parts> </rpt:purchasereport> Miro Lehtonen, XQuery tietokannan kyselykielenä 31.10.2007 13

Konstruktoreita XML-rakenteen luominen kyselyn sisällä Suorissa konstruktoreissa XML-syntaksi Alkutunniste, attribuutit, elementin sisältö, lopputunniste Laskettavissa konstruktoreissa {määrittely aaltosulkeissa} Arvo lasketaan ja sijoitetaan sulkeiden paikalle Esimerkki: Kopioidaan elementit sisällön arvo tuplattuna element {fn:node-name($e)} {$e/@*, 2 * fn:data($e)} Miro Lehtonen, XQuery tietokannan kyselykielenä 31.10.2007 14

Ehtolausekkeita if lasketaan aina then lasketaan tarvittaessa else lasketaan tarvittaessa if ($widget1/unit-cost < $widget2/unit-cost) then $widget1 else $widget2 Miro Lehtonen, XQuery tietokannan kyselykielenä 31.10.2007 15

XQuery-funktiot XQuery 1.0, XSLT 2.0, XPath 2.0 yhteinen funktiokirjasto Yli 100 sisäänrakennettua funktiota Merkkijonojen ja numeroiden käsittely, ajankäsittely, puurakenteen ja nimien muokkaus, boolean, jne Itse määriteltävät funktiot Funktioita käytetään ajon aikaisessa laskennassa Elementin sisältö: <name>{uppercase($booktitle)}</name> Predikaattilausekkeet (kuten XPath 1.0) For-, let-, where- ja return-lausekkeet Syntaksi: FunctionCall ::= QName "(" (ExprSingle ("," ExprSingle )*)? ")" Miro Lehtonen, XQuery tietokannan kyselykielenä 31.10.2007 16

Käyttäjän määrittelemät funktiot Funktioit määritellään joko kyselyssä tai erillisessä kirjastossa Syntaksi: declare function prefix:function_name($parameter as datatype) as returndatatype { (:...function code here... :) }; Nimessä etuliite XML Scheman tietotyypit Määrittelyn runko aaltosulkeissa Miro Lehtonen, XQuery tietokannan kyselykielenä 31.10.2007 17

Esimerkki: Kyselyssä määritelty funktio Paikallisesti määritellyille funktiolle local-nimiavaruus declare function local:minprice( $price as xs:decimal?, $discount as xs:decimal?) as xs:decimal? { let $disc := ($price * $discount) div 100 return ($price - $disc) }; (: Esimerkki funktiokutsusta :) <minprice>{local:minprice($book/price, $book/discount)}</minprice> Miro Lehtonen, XQuery tietokannan kyselykielenä 31.10.2007 18

Top-Level XQuery XQuery ylimmän tason kyselykielenä Yhdistää XML-dokumentit ja XML-näkymät relaatiodataan Samanaikaisuuden hallinta ja lukitus elementtitasolla Perinteinen SQL upotettu XQuery-kyselyihin Oraclella sqlquery-funktio, joka palauttaa listan rowelementtejä for $i in sqlquery("select * from scott.emp")/row return <emp empno="{$i/empno}"> $i/ename, $i/salary </emp> Miro Lehtonen, XQuery tietokannan kyselykielenä 31.10.2007 19

Oraclen XQuery-ympäristö Tietokannassa SQL*Plus: XQuery-komentorivitulkki (Top-Level XQuery) SQL/XML - XMLQuery, XMLTable, XMLNamespaces XDK Java tukee XQueryn funktioita ja operaattoreita Sovellusohjelman ja tietokannan välissä (mid-tier) XQuery API for Java (XQJ), kuten JDBC/SQL Miro Lehtonen, XQuery tietokannan kyselykielenä 31.10.2007 20

Lisää XQuery-materiaalia Web-tutoriaalit Mm. www.w3schools.com Spesifikaatiot: W3C www.w3.org/xml/query Kirjallisuutta Mm. XQuery from the Experts, Addison-Wesley, 2004. Miro Lehtonen, XQuery tietokannan kyselykielenä 31.10.2007 21