Et objektorientert spørrespr. rrespråk: Object Query Language (OQL)

Størrelse: px
Begynne med side:

Download "Et objektorientert spørrespr. rrespråk: Object Query Language (OQL)"

Transkript

1 INF3100 Databasesystemer Et objektorientert spørrespr rrespråk: Object Query Language (OQL) Inneholder lysark laget av Arthur M. Keller, Vera Goebel, Pål Halvorsen, Ragnar Normann

2 Oversikt OQL Spørringer (Queries/sub-queries) Returtyper Kvantorer Generering av objekter Aggregering Bruk av vertsspråk Operatorer på set- eller bag-objekter Gruppering Ragnar Normann, Ifi, UiO Ark 2 av 43

3 Object Query Language (OQL) Motivasjon: Relasjonelle språk lider av impedance mismatch når vi prøver å koble dem til konvensjonelle språk som COBOL, C, C++ eller Java Datamodellene til C og SQL er radikalt forskjellige, eksempelvis har ikke C relasjoner, set eller bag som primitive typer OQL er spørrespråket i ODMG-standarden OQL er et forsøk fra OO-samfunnet på å utvide språk som C++ med et SQL-likt, relasjon-om-gangen vokabular Som SQL, er OQL et deklarativt (og ikke prosedyralt) språk Ragnar Normann, Ifi, UiO Ark 3 av 43

4 OQL bruker ODL OQL er designet for å operere på data beskrevet i ODL: For hver klasse kan vi deklarere en extent = navn på mengden av objekter av klassen som til en hver tid måtte finnes Husk: I OQL refererer vi alltid til extent (og ikke til klassenavnet) Ragnar Normann, Ifi, UiO Ark 4 av 43

5 OQL: Objekt- og verdilikhet To objekter av samme type (instanser av samme klasse) kan ikke være like, men de kan ha de samme verdiene Eksempel: Anta at objektene O 1 og O 2 er to instanser av samme klasse OQL-uttrykket O 1 = O 2 er alltid FALSE OQL-uttrykket *O 1 = *O 2 kan være TRUE hvis de to objektene har samme state, dvs. parvis de samme verdiene i alle attributter Ragnar Normann, Ifi, UiO Ark 5 av 43

6 OQL: Beregninger Foranderlige (mutable) objekter manipuleres ved å eksekvere metoder som er definert for denne klassen Select i OQL kan ha sideeffekter, dvs. at den kan forandre databasens state I motsetning til SQL har ikke OQL noen egen update-funksjon Metoder kalles ved å navigere langs stier; det er ingen forskjell på å adressere attributter, relasjoner og metoder Ragnar Normann, Ifi, UiO Ark 6 av 43

7 OQL: Typer Basistyper: string, integer, float, boolean, character, enumerations osv. Type-konstruktører: Struct for strukturer Collection types : set, bag, list, array (MERK: dictionary er ikke tillatt i OQL) Set(Struct()) og Bag(Struct()) spiller spesielle roller (tilsvarende hva de gjør for relasjoner) Ragnar Normann, Ifi, UiO Ark 7 av 43

8 OQL: Stiuttrykk (Path Expressions) Vi aksesserer komponenter ved å bruke prikk-notasjon La x være et objekt av klassen C: Hvis a er et attributt i C, så er x.a verdien til a i objektet x Hvis r er en relasjon i C, så er x.r verdien som x er knyttet til via r, som, avhengig av typen til r, enten er et objekt eller en samling objekter Hvis m er en metode i C, så er x.m( ) resultatet av å anvende m i x Et stiuttrykk kan inneholde flere prikker, men bare det siste elementet kan være en samling) OQL tillater piler som synonymer for prikker, dvs. at xa betyr det samme som x.a, i motsetning til i eksempelvis C Ragnar Normann, Ifi, UiO Ark 8 av 43

9 ODL for Bar-Beer-Sell (BBS) eksemplet class Bar (extent Bars) { attribute string name; attribute string addr; relationship Set<Sell> beerssold inverse Sell::bar; } class Beer (extent Beers) { attribute string name; attribute string manf; relationship Set<Sell> soldby inverse Sell::beer; } class Sell (extent Sells) { attribute float price; relationship Bar bar inverse Bar::beersSold; relationship Beer beer inverse Beer::soldBy; void raise_price(float price); } Ragnar Normann, Ifi, UiO Ark 9 av 43

10 Stiuttrykk i BBS-eksemplet La s være en variabel av type Sell s.price er prisen i objektet s (et ølmerke solgt i denne baren) s.raise_price(x) øker prisen på s.beer in s.bar med x s.bar er en peker til baren som dette ølmerket selges i s.bar.addr er addressen til denne baren NB: to prikker er OK fordi s.bar er et objekt, og ikke en samling La b være en variabel av type Bar b.name er navnet på baren b.beerssold er en mengde ølmerker som denne baren selger (mengde pekere til Sell) Eksempel på ulovlig bruk av stiuttrykk: b.beerssold.price Dette er ulovlig fordi b.beerssold er en mengde av objekter Vanlig bruk: Hvis x er et objekt, kan stiuttrykket utvides (forlenges) slik s forlenges til s.beer og s.beer.name ovenfor Hvis x er en samling (som b.beerssold ovenfor) kan den brukes overalt hvor samlinger kan brukes (som i FROM-uttrykk), hvis du vil aksessere attributtene til x Ragnar Normann, Ifi, UiO Ark 10 av 43

11 OQL: Select-From-Where SQL-aktig syntaks: SELECT <liste av verdier> FROM <liste av samlinger og typiske medlemmer> WHERE <betingelse> Samlingene i FROM kan være: 1. Ekstensjoner (deklarert som extent av en klasse) 2. Uttrykk som evaluerer til en samling Etter hver samling følger navn på et typisk medlem, eventuelt med nøkkelordet AS foran Merk: Mange forskjellige spørringer kan gi samme svar Ragnar Normann, Ifi, UiO Ark 11 av 43

12 OQL BBS-eksempel eksempel: : Select-From-Where Finn menyen hos Joe s med fokus på Sells-objekter: SELECT s.beer.name, s.price FROM Sells s WHERE s.bar.name = "Joe's" Merk at OQL bruker doble anførselstegn rundt strenger (SQL bruker enkle) Finn Joe s meny, denne gang med fokus på Bar-objekter: SELECT s.beer.name, s.price FROM Bars b, b.beerssold s WHERE b.name = "Joe's" Legg merke til hvordan det typiske objektet b i den første samlingen i FROM brukes til å definere den andre samlingen (dette erstatter join) Ragnar Normann, Ifi, UiO Ark 12 av 43

13 OQL: Sammenligningsoperatorer Verdier kan sammenlignes ved bruk av operatorer: = : likhet!= : forskjellig fra < : mindre enn > : større enn <= : mindre eller lik >= : større eller lik I tillegg har vi følgende operatorer for sammenligning av tekst: IN sjekker om et tegn er i en tekststreng: <c> IN <text> LIKE sjekker om to tekster er like: <text 1 > LIKE <text 2 > <text 2 > kan inneholde spesialtegn: _ eller? : et vilkårlig tegn * eller % : en vilkårlig tekststreng Ragnar Normann, Ifi, UiO Ark 13 av 43

14 OQL BBS-eksempel eksempel: Sammenligningsoperatorer Eksempel: Finn navn og pris på alle ølmerker solgt på Joe s som starter med B og inneholder tekststrengen ud SELECT s.beer.name, s.price FROM Bars b, b.beerssold s WHERE b.name = "Joe's" AND s.beer.name LIKE "B*" AND s.beer.name LIKE "*ud*" AND Merknad 1: Navnet på baren er Joe s Merknad 2: Ølnavnet starter med B fulgt av vilkårlig mange vilkårlige tegn Merknad 3: Ølnavnet inneholder ud med vilkårlig mange vilkårlige tegn både foran og bak Ragnar Normann, Ifi, UiO Ark 14 av 43

15 OQL: Kvantorer Vi kan teste om alle medlemmer, minst ett medlem, noen medlemmer osv. tilfredsstiller en betingelse Boolske uttrykk til bruk i WHERE-betingelser: Alle: FOR ALL x IN <collection> : <condition> Minst en: EXISTS x IN <collection> : <condition> EXISTS x Bare en: UNIQUE x Noen: <collection> <comparison> SOME/ANY <condition> hvor <comparison > er <, >, <=, >=, eller = Uttrykket har verdien TRUE hvis betingelsen holder NOT gir motsatt boolsk verdi (NOT TRUE = FALSE og NOT FALSE = TRUE) Ragnar Normann, Ifi, UiO Ark 15 av 43

16 OQL BBS-eksempel eksempel: Kvantorer - I Eksempel: Finn alle barer som selger en eller annen øl for mer enn $5 SELECT b.name FROM Bars b WHERE EXISTS s IN b.beerssold : s.price > 5.00 Eksempel: Hvordan finner man barer som bare selger øl for mer enn $5? SELECT b.name FROM Bars b WHERE FOR ALL s IN b.beerssold : s.price > 5.00 Ragnar Normann, Ifi, UiO Ark 16 av 43

17 OQL BBS-eksempel eksempel: Kvantorer - II Eksempel: Finn de barene som ikke selger øl for mer enn $5 bortsett fra de som er produsert av Pete s SELECT b.name FROM Bars b WHERE FOR ALL be IN be.manf = "Pete's" Merknad 2: alle disse dyre ølmerkene må være produsert av Pete s ( SELECT s.beer FROM b.beerssold s WHERE s.price > 5.00 ) : Merknad 1: finn alle ølmerker i en bar hvor prisen er mer enn $5 Ragnar Normann, Ifi, UiO Ark 17 av 43

18 OQL: Resultattyper Normaltilfellet: bag av struct-er, feltnavnene taes fra slutten av stinavnene i SELECT-uttrykket Eksempel: Menyen hos Joe s : SELECT s.beer.name, s.price FROM Sells s WHERE s.bar.name = "Joe's" har resultattype: Bag(Struct(name: string, price: real)) Ragnar Normann, Ifi, UiO Ark 18 av 43

19 OQL: Renavning av felt Resultattypen Bag(Struct(name: string, price: real)) har muligens ikke helt passende navn på attributtene Da kan vi renavne ved å prefikse stien med ønsket navn og et kolon Eksempel: Renavning av attributtene i Joe s meny: SELECT beername: s.beer.name, s.price FROM Bars b, b.beerssold s WHERE b.name = "Joe's har type: Bag(Struct(beername: string, price: real)) Ragnar Normann, Ifi, UiO Ark 19 av 43

20 OQL: Andre samlingstyper - I En bag av struct-er (default) er ikke alltid det vi ønsker som svar på en SFW-query Bruk SELECT DISTINCT for å få et set av struct-er Eksempel: SELECT DISTINCT s.beer.name, s.price FROM Bars b, b.beerssold s WHERE b.name = "Joe's" Ragnar Normann, Ifi, UiO Ark 20 av 43

21 OQL: Andre samlingstyper - II Bruk ORDER BY for å få en liste av struct-er Eksempel: joemenu = SELECT s.beer.name, s.price FROM Bars b, b.beerssold s WHERE b.name = "Joe's" ORDER BY s.price ASC ASC = ascending (default); DESC = descending Vi kan hente informasjon fra en liste som om den var en array, f.eks. cheapest_beer = joemenu[0].name; Ragnar Normann, Ifi, UiO Ark 21 av 43

22 OQL: Subqueries Brukes når det er rimelig at et mellomresultat er en samling, det vil hovedsaklig si i FROM-leddet og med kvantorer som EXISTS, FOR ALL, osv. Eksempel: subquery i FROM: Finn produsentene av øl som serveres hos Joe's SELECT DISTINCT b.manf FROM ( SELECT s.beer FROM Sells s WHERE s.bar.name = "Joe's" ) b Ragnar Normann, Ifi, UiO Ark 22 av 43

23 OQL: Å gi verdier til vertsspråkvariable I motsetning til SQL, hvor man må flytte data mellom tupler og variable, passer OQL naturlig inn i et vertsspråk Select-From-Where lager samlinger av objekter Det er mulig å gi enhver variabel av rett type en verdi som er resultatet av en OQL-spørring Eksempel (C++ og Java-aktig): Navn på barer som bare selger øl for mer enn $5 Set<string> expensive_bars; expensive_bars = SELECT DISTINCT b.name FROM Bars b WHERE FOR ALL s IN b.beerssold : s.price > 5.00 Ragnar Normann, Ifi, UiO Ark 23 av 43

24 OQL: Henting av medlemmer i samlinger I En samling med et enkelt medlem: Ta ut medlemmet med ELEMENT Eksempel: Finn prisen Joe s tar for Bud og legg resultatet inn i variabelen p: p = ELEMENT( SELECT s.price FROM Sells s WHERE s.bar.name = "Joe's" AND s.beer.name = "Bud") Ragnar Normann, Ifi, UiO Ark 24 av 43

25 OQL: Henting av medlemmer i samlinger II Å hente alle medlemmene i en samling, en om gangen: 1. Gjør samlingen om til en liste 2. Ta ut medlemmene fra listen med <list_name>[i] Eksempel (C-aktig): Skriv ut Joe's meny, ordnet etter pris, med øl med samme pris listet alfabetisk L = SELECT s.beer.name, s.price FROM Sells s WHERE s.bar.name = "Joe's" ORDER BY s.price, s.beer.name; Merknad 1: Lag en liste printf("beer\tprice\n\n"); Merknad 2: Element nr i i L hentes fra L[i-1] Indeksen i starter på 0 for( i=0; i<=count(l); i++) printf("%s\t%f\n", L[i].name, L[i].price); Ragnar Normann, Ifi, UiO Ark 25 av 43

26 OQL: Å lage nye objekter En Select-From-Where spørring tillater oss å lage nye objekter hvis type er definert av typene returnert av SELECT-setningen Eksempel SELECT beername: s.beer.name, s.price FROM Bars b, b.beerssold s Merk: Definerer et nytt objekt WHERE b.name = "Joe's Bar" Bag<Struct( beername: string, price: integer)> Constructor-funksjoner: lager nye forekomster av en klasse eller andre definerte typer (detaljene avhenger av vertsspråket) Eksempel: legg inn et nytt ølmerke newbeer = Beer(name: "XXX", manufacturer: "YYY") Effekt: Lager et nytt Beer objekt som blir med i ekstensjonen Beers Verdien til vertsspråkvariabelen newbeer blir dette objektet Ragnar Normann, Ifi, UiO Ark 26 av 43

27 OQL: Aggregering De fem operatorene avg, sum, min, max og count kan brukes på alle samlinger så lenge operatoren har mening for elementtypen Eksempel: Finn gjennomsnittsprisem på øl hos Joe s x = AVG( SELECT s.price FROM Sells s WHERE s.bar.name = "Joe's"); Merk: Resultatet av SELECT ovenfor er teknisk sett en bag av 1-felts struct-er som identifiseres med bag-en av verdiene til feltet Ragnar Normann, Ifi, UiO Ark 27 av 43

28 OQL: Union, snitt og differanse Vi kan anvende union-, snitt- differanse-operatorer på alle objekter av Set eller Bag type Bruk henholdsvis nøkkelordene UNION, INTERSECT og EXCEPT Resultattypen er en Bag hvis (minst) en av objektene er en Bag; ellers Set Eksempel: Finn navnet på alle øltyper servert hos Joe s som ikke serveres hos Steve s ( SELECT s.beer.name FROM Sells s WHERE s.bar.name = "Joe's ) EXCEPT ( SELECT s.beer.name FROM Sells s WHERE s.bar.name = "Steve's ) Merknad 1: Finn alle øltyper servert hos Joe s Merknad 2: Finn alle øltyper servert hos Steve s Merknad 3: Fjern øltyper servert hos Steve s fra øltypene servert hos Joe s Ragnar Normann, Ifi, UiO Ark 28 av 43

29 OQL: Gruppering I OQL har med noen forskjeller samme gruppering som SQL Eksempel i SQL: Finn gjennomsnittsprisen på øl i alle barer SELECT bar.name, AVG(price) FROM Sells GROUP BY bar; Er bar-verdien navnet ( name ) på gruppen, eller den felles verdien på bar-komponenten i alle tuplene i gruppen? I SQL spiller det ingen rolle, men i OQL kan du lage grupper basert på verdiene til enhver funksjon, ikke bare attributter Følgelig identifiseres grupper av felles verdier, og ikke navn Eksempel: Grupper etter første bokstav i barnavnet (her trengs en metode) Ragnar Normann, Ifi, UiO Ark 29 av 43

30 OQL: Gruppering II Generell form: GROUP BY f 1 : e 1, f 2 : e 2,..., f n : e n I OQL er altså syntaks for gruppering: Nøkkelordene GROUP BY fulgt av en kommaseparert liste av partisjonsattributter: navn kolon uttrykk (expression) Eksempel: SELECT... FROM... GROUP BY barname: s.bar.name Ragnar Normann, Ifi, UiO Ark 30 av 43

31 OQL: Grupperingsprosessen Initiell samling: definert av FROM, WHERE Grupper etter funksjonsverdier Mellomresultatsamling: funksjonsverdier og partisjon Resultatsamlingen Presenter termene i SELECT-listen Merknad 1: De utvalgte objektene (WHERE) fra samlingen av objekter i FROM, teknisk er det en Bag av struct-er Merknad 2: Verdien som returneres fra Initiell samling når GROUP BY uttrykket utføres, er en Struct(f 1 :v 1,..., partition:p). De første feltene definerer gruppen; P er en bag av verdier som tilhører denne gruppen Merknad 3: SELECT-listen kan velge fra Mellomresultatsamling, dvs. fra f 1,f 2,..,f n og partition men verdier fra medlemmene i bag-en P kan bare refereres til via aggregatfunksjoner Ragnar Normann, Ifi, UiO Ark 31 av 43

32 OQL BBS-eksempel eksempel: Gruppering I Eksempel: Finn gjennomsnittsprisen på øl i hver bar SELECT FROM GROUP BY barname, avgprice: AVG(SELECT p.s.price FROM partition p) Sells s barname: s.bar.name Ragnar Normann, Ifi, UiO Ark 32 av 43

33 OQL BBS-eksempel eksempel: Gruppering II SELECT barname, avgprice: AVG( SELECT p.s.price FROM partition p) FROM Sells s GROUP BY barname: s.bar.name 1. Initiell samling: Sells Rent teknisk er det en bag av struct-er på formen Struct(s: s1) hvor s1 er et objekt av klassen Sell Merk at det ene feltet har navnet s. Generelt er det et felt for hvert av de typiske objektene i FROM-listen Ragnar Normann, Ifi, UiO Ark 33 av 43

34 OQL BBS-eksempel eksempel: Gruppering III SELECT barname, avgprice: AVG( FROM Sells s GROUP BY barname: s.bar.name SELECT p.s.price FROM partition p) 2. Mellomresultatsamling En funksjon: s.bar.name avbilder Sell-objekter s til verdien av navnet på baren referert til av s Mellomresultatsamling er en mengde av struct-er av type: Struct{barName:string, partition:set<struct{s:sell}>} For eksempel: Struct(barName = "Joe's",partition = {s 1,,s n }) hvor s 1,,s n er alle struct-er med ett felt, kalt s, hvis verdi er et Sell-objekt som representerer at Joe's Bar selger et ølmerke Ragnar Normann, Ifi, UiO Ark 34 av 43

35 OQL BBS-eksempel eksempel: Gruppering IV SELECT barname, avgprice: AVG( SELECT p.s.price FROM partition p) FROM Sells s GROUP BY barname: s.bar.name 3. Resultatsamling: Består av bar-gjennomsnittpris-par, en for hver struct i mellomresultatsamlingen Strukturtype i resultatet: Struct{barName: string, avgprice: real} Merk at i subquery-en i SELECT-listen refereres variablene i partisjonen via aggregatfunksjonen AVG Vi lar p variere over alle struct-er i partition. Hver av disse structene innholder et enkelt felt kalt s og har et Sell-objekt som verdi. Følgelig vil p.s.price dra ut prisen fra et av Sell-objektene som tilhører akkurat dene baren. Typisk eksempel på en resultatsamling: Struct(barName = "Joe's", avgprice = 2.83) Ragnar Normann, Ifi, UiO Ark 35 av 43

36 Et annet OQL BBS-eksempel eksempel: Gruppering I Eksempel: Finn, for hvert øl, antall barer som tar en lav pris ( 2.00) og en høy pris ( 4.00) for det ølet Strategi: Grupper med tre ting: Ølnavnet, en boolsk funksjon som er sann hvis prisen er lav, og en boolsk funksjon som er sann hvis prisen er høy SELECT beername, low, high, count: COUNT(partition) FROM Beers b, b.soldby s GROUP BY beername: b.name, low: s.price <= 2.00, high: s.price >= 4.00 Ragnar Normann, Ifi, UiO Ark 36 av 43

37 Et annet OQL BBS-eksempel eksempel: Gruppering II SELECT FROM GROUP BY bname, low, high, count: COUNT(partition) Beers b, b.soldby s bname: b.name, low: s.price <= 2.00, high: s.price >= Initiell samling: Par (b, s), hvor b er et Beer-object, og s er et Sell-object (b.soldby) som representerer at det ølet selges i en bar Typen til medlemmene i samlingen: Struct{b: Beer, s: Sell} Ragnar Normann, Ifi, UiO Ark 37 av 43

38 Et annet OQL BBS-eksempel eksempel: Gruppering III SELECT bname, low, high, count: COUNT(partition) FROM Beers b, b.soldby s GROUP BY bname: b.name, low: s.price <= 2.00, high: s.price >= Mellomresultatsamlingen: Kvadrupler som består av ølnavn, to boolske verdier som sier om denne gruppen er for høye eller lave priser, og en partition for denne gruppen partition er en mengde struct-er av type: Struct{b: Beer, s: Sell} En typisk partition-verdi: Struct(b:objekt(name="Bud"),s:et Sell-object som angår Bud) Ragnar Normann, Ifi, UiO Ark 38 av 43

39 Et annet OQL BBS-eksempel eksempel: Gruppering IV 2. Mellomresultatsamlingen (fortsatt): Kvadruplene i mellomresultatsamlingen er av følgende type: Struct{ bname: string, low: boolean, high: boolean, partition: Set<Struct{b: Beer, s:sell}>} Typiske struct-er i mellomresultatsamlingen: bname low high partition Bud TRUE FALSE S low Bud FALSE TRUE S high Bud FALSE FALSE S mid Merknad 5: Partisjonen med low = high = TRUE må være tom og vil ikke opptre Merknad 1: S X er mengdene av beer-sell par (b, s) Merknad 2: S low : prisen er lav ( 2) Merknad 3: S high : prisen er høy ( 4) Merknad 4: S mid : medium pris (mellom 2 og 4) Ragnar Normann, Ifi, UiO Ark 39 av 43

40 Et annet OQL BBS-eksempel eksempel: Gruppering V SELECT bname, low, high, count: COUNT(partition) FROM Beers b, b.soldby s GROUP BY bname: b.name, low: s.price <= 2.00, high: s.price >= Resultatsamling: De tre første komponentene i hver gruppes struct kopieres til resultatet Den siste (partition) telles Et eksempel på et resultat: bname low high count Bud TRUE FALSE 27 Bud FALSE TRUE 14 Bud FALSE FALSE 36 Ragnar Normann, Ifi, UiO Ark 40 av 43

41 OQL: Having GROUP BY kan følges av HAVING for å eliminere noen av gruppene generert av GROUP BY HAVING-betingelsen anvendes på partition-feltet i hver struktur (gruppe) i mellomresultatsamlingen Hvis betingelsen i HAVING er FALSE, vil ikke gruppen bidra til resultatsamlingen Ragnar Normann, Ifi, UiO Ark 41 av 43

42 OQL BBS Eksempel: : Having Eksempel: Finn gjennomsnittsprisen på øl i hver bar, men bare i barer hvor det dyreste ølet koster mer enn 10$ SELECT FROM barname,avgprice: AVG(SELECT p.s.price FROM partition p) Sells s GROUP BY barname: s.bar.name HAVING MAX( SELECT p.s.price FROM partition p) > 10 Merknad 1: Finner, som før, gjennomsnittsprisen på øl i en bar Merknad 2: Velg bare de gruppene hvor maksimumprisen er større enn 10 Ragnar Normann, Ifi, UiO Ark 42 av 43

43 Oppsummering OQL Queries/subqueries Select-From-Where Returtype bag-er, set eller lister Kvantorer for all, exists, osv. Objektgenerering både nye elementer og som svar på queries Aggregering count, max, min, avg, sum Bruk av vertsspråk OQL passer naturlig inn i språket Operatorer på set- eller bag-objekter union, intersect, except Gruppering med egenskaper group by with having Ragnar Normann, Ifi, UiO Ark 43 av 43

OQL Object Query Language

OQL Object Query Language UNIVERSITETET I OSLO OQL Object Query Language ODMGs spørrespråk INF3100 25.2.2008 Ragnar Normann Institutt for Informatikk 1 Hva OQL er OQL er spørrespråket i ODMG-standarden OQL utvider objektorienterte

Detaljer

UNIVERSITETET I OSLO SQL. Structured Query Language. (The intergalactic dataspeak) Institutt for Informatikk. INF Ragnar Normann 1

UNIVERSITETET I OSLO SQL. Structured Query Language. (The intergalactic dataspeak) Institutt for Informatikk. INF Ragnar Normann 1 UNIVERSITETET I OSLO SQL Structured Query Language (The intergalactic dataspeak) Institutt for Informatikk INF3100 1.2.2005 Ragnar Normann 1 SQL SQL Structured Query Language er et deklarativt språk for

Detaljer

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ragnar Normann 1

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ragnar Normann 1 UNIVERSITETET I OSLO SQL Structured Query Language (forts.) Institutt for Informatikk INF3100 7.2.2005 Ragnar Normann 1 null Resultatet av å evaluere et uttrykk som produserer en skalar verdi, kan være

Detaljer

Alle attributter har NULL som mulig verdi. mulige verdier for integer: NULL, 0, 1, 2, 3...

Alle attributter har NULL som mulig verdi. mulige verdier for integer: NULL, 0, 1, 2, 3... NULL verdier Alle attributter har NULL som mulig verdi mulige verdier for integer: NULL, 0, 1, 2, 3... Dog mulig å lage tabeller med attributter som forbyr NULL Ulik bruk: manglende informasjon («vet ikke

Detaljer

SPARQL. Daniel Reinholdt. Trondheim Daniel Reinholdt (NTNU) SPARQL Trondheim / 17

SPARQL. Daniel Reinholdt. Trondheim Daniel Reinholdt (NTNU) SPARQL Trondheim / 17 SPARQL Daniel Reinholdt Trondheim 30.09.16 Daniel Reinholdt (NTNU) SPARQL Trondheim 30.09.16 1 / 17 Oversikt 1 SPARQL Hva er SPARQL? Fordeler med et språk som SPARQL 2 Grunnleggende informasjon Joseki

Detaljer

INF1300 Relasjonsalgebra. Et matematisk fundament for å forstå SQL-setninger

INF1300 Relasjonsalgebra. Et matematisk fundament for å forstå SQL-setninger INF1300 Relasjonsalgebra Et matematisk fundament for å forstå SQL-setninger Innhold Relasjonsalgebraen Operatorene i relasjonsalgebraen Relasjonsalgebratolkning av select-setningen Kostbare operasjoner

Detaljer

INF1300 Relasjonsalgebra og SQL, mengder og bager. Lysark for forelesning v. 2.1

INF1300 Relasjonsalgebra og SQL, mengder og bager. Lysark for forelesning v. 2.1 INF1300 Relasjonsalgebra og SQL, mengder og bager. Lysark for forelesning v. 2.1 Dagens temaer Relasjonsalgebraen Renavning Algebra Heltallsalgebra Klassisk relasjonsalgebra Mengdeoperatorer Union Snitt

Detaljer

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

UNIVERSITETET I OSLO SQL. Structured Query Language. (forts.) Institutt for Informatikk. INF Ellen Munthe-Kaas 1 UNIVERSITETET I OSLO SQL Structured Query Language (forts.) Institutt for Informatikk INF3100 11.2.2008 Ellen Munthe-Kaas 1 null Resultatet av å evaluere et uttrykk som produserer en skalar verdi, kan

Detaljer

UNIVERSITETET SQL. Structured Query Language (forts.) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

UNIVERSITETET SQL. Structured Query Language (forts.) Institutt for Informatikk. INF Ellen Munthe-Kaas 1 UNIVERSITETET IOSLO SQL Structured Query Language g (forts.) Institutt for Informatikk INF3100 9.2.2009 Ellen Munthe-Kaas 1 null Resultatet av å evaluere et uttrykk som produserer en skalar verdi, kan

Detaljer

Spørsmålskompilering del 1

Spørsmålskompilering del 1 UNIVERSITETET I OSLO Spørsmålskompilering del 1 Parsering Logiske spørreplaner uttrykt i relasjonsalgebra Optimalisering ved hjelp av algebraiske lover Institutt for Informatikk INF3100 - V18 - Evgenij

Detaljer

Spørsmålskompilering del 1

Spørsmålskompilering del 1 UNIVERSITETET I OSLO Spørsmålskompilering del 1 Parsering Logiske spørreplaner uttrykt i relasjonsalgebra Optimalisering ved hjelp av algebraiske lover Institutt for Informatikk INF3100-11.4.2016 - Ellen

Detaljer

Relasjonsalgebra Kopi av lysark om relasjonsalgebra. Vi går igjennom denne for å lage et matematisk fundament for forståelsen av hvordan

Relasjonsalgebra Kopi av lysark om relasjonsalgebra. Vi går igjennom denne for å lage et matematisk fundament for forståelsen av hvordan Relasjonsalgebra Kopi av lysark om relasjonsalgebra. Vi går igjennom denne for å lage et matematisk fundament for forståelsen av hvordan select-setningen virker. Temaer som blir tatt inn i SQL-notatet:

Detaljer

Metaspråket for å beskrive grammatikk

Metaspråket for å beskrive grammatikk 1 SQL-syntaks Korrekt språkbruk bygger på et sett av regler. Eksempler: En SQL utvalgsspørring inneholder alltid ordene SELECT og FROM, mens WHERE og tilhørende betingelse er valgfri. Etter SELECT kan

Detaljer

Repetisjon: Normalformer og SQL

Repetisjon: Normalformer og SQL IN2090 databaser og datamodellering Repetisjon: Normalformer og SQL Mathias Stang og Stein Michael Storleer 21. november 2018 1 Agenda Normalformer Funksjonelle avhengigheter Nøkler Finne hvilke normalformer

Detaljer

Oppgave: Finn navn og tittel på alle som har arbeidet på prosjektet «Vintersalg»

Oppgave: Finn navn og tittel på alle som har arbeidet på prosjektet «Vintersalg» Skjema Prosjekt(PId, Pnavn, KId, Pleder, StartDato) Ansatt(AId, Navn, Tittel, Fdato, Pnr, AnsDato) Timeliste(AId, Dato, PId, Timer) Kunde(KId, Knavn, Adresse) Oppgave: Finn navn og tittel på alle som har

Detaljer

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser UNIVERSITETET I OSLO INF1300 Introduksjon til databaser Dagens tema: Relasjonsalgebraen Oversettelse av select-from-where til relasjonsalgebra SQL: union, snitt, differanse, kartesisk produkt INF1300 22.10.2007

Detaljer

INF1300 Det meste av resten av SQL. Utleggsark v. 2.0

INF1300 Det meste av resten av SQL. Utleggsark v. 2.0 INF1300 Det meste av resten av SQL Utleggsark v. 2.0 Dagens temaer Sammenligning med tekstmønstre Aggregeringsfunksjoner Nestede spørsmål Gruppering Relasjonssammenligninger: View JDBC exists in any all

Detaljer

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser UNIVERSITETET I OSLO INF1300 Introduksjon til databaser Dagens tema: Det meste av resten av SQL Sammenligning med tekstmønstre Aggregeringsfunksjoner Gruppering Kvantorer Nestede spørsmål View JDBC INF1300

Detaljer

UNIVERSITETET I OSLO SQL. Structured Query Language. (The intergalactic dataspeak) Institutt for Informatikk. INF Ellen Munthe-Kaas 1

UNIVERSITETET I OSLO SQL. Structured Query Language. (The intergalactic dataspeak) Institutt for Informatikk. INF Ellen Munthe-Kaas 1 UNIVERSITETET I OSLO SQL Structured Query Language (The intergalactic dataspeak) Institutt for Informatikk INF3100 6.2.2005 Ellen Munthe-Kaas 1 SQL SQL Structured Query Language er et deklarativt språk

Detaljer

UNIVERSITETET I OSLO SQL. Structured Query Language. (The intergalactic dataspeak) INF Ellen Munthe-Kaas 1. Institutt for Informatikk

UNIVERSITETET I OSLO SQL. Structured Query Language. (The intergalactic dataspeak) INF Ellen Munthe-Kaas 1. Institutt for Informatikk UNIVERSITETET I OSLO SQL Structured Query Language (The intergalactic dataspeak) Institutt for Informatikk INF3100 5.2.2008 Ellen Munthe-Kaas 1 SQL SQL Structured Query Language er et deklarativt språk

Detaljer

INF1300 Det meste av resten av

INF1300 Det meste av resten av INF1300 Det meste av resten av SQL Utleggsark v. 1.0 Tekstmønstre I SQL kan vi bruke like for å sammenligne et tekst-attributt med et tekstmønster Et tekstmønster er en tekstkonstant hvor to tegn, kalt

Detaljer

Relasjonsalgebraen. Algebra

Relasjonsalgebraen. Algebra Relasjonsalgebraen Definerer en mengde av operasjoner på relasjoner Gir oss et språk til å beskrive spørsmål om innholdet i relasjonene Språket er prosedyralt: Vi sier hvordan svaret skal beregnes. Alternativet

Detaljer

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015 Beskrivelse av programmeringsspråket Compila15 INF5110 - Kompilatorteknikk Våren 2015 Her beskrives syntaksen og den statiske semantikken (hva som skal sjekkes av kompilatoren) til språket Compila15. Den

Detaljer

SQL Structured Query Language

SQL Structured Query Language SQL Structured Query Language Litt tabellterminologi Definere tabeller Fylle tabeller med data Hente data fra tabeller select-from-where distinct order by Relasjoner terminologi relasjonsnavn Personale

Detaljer

Relasjoner terminologi

Relasjoner terminologi Relasjoner terminologi Kopi av lysark fra forelesningen 1. september. Dette er utdrag fra et notat som snart blir publisert. Dette notatet egner seg bedre til repetisjon og selvstudium enn disse arkene.

Detaljer

SQL Structured Query Language. Definere tabeller Skranker Fylle tabeller med data

SQL Structured Query Language. Definere tabeller Skranker Fylle tabeller med data SQL Structured Query Language Definere tabeller Skranker Fylle tabeller med data Lage en tabell med SQL create table R (A 1 D 1 [S 1 ],... A n D n [S n ], [liste av skranker] R er navnet på relasjonen/tabellen

Detaljer

Objektorienterte databasesystemer (OODBS)

Objektorienterte databasesystemer (OODBS) Objektorienterte databasesystemer (OODBS) 17.2.2004 Inneholder lysark laget av Arthur M. Keller, Vera Goebel, Pål Halvorsen og Ragnar Normann INF3100 17.2.2004 Ragnar Normann, Ifi, UiO Ark 1 av 43 Oversikt

Detaljer

UNIVERSITETET I OSLO SQL. Structured Query Language. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

UNIVERSITETET I OSLO SQL. Structured Query Language. Institutt for Informatikk. INF Ellen Munthe-Kaas 1 UNIVERSITETET I OSLO SQL Structured Query Language Institutt for Informatikk INF3100 2.2.2012 Ellen Munthe-Kaas 1 SQL SQL Structured Query Language er et deklarativt språk for spørringer mot relasjonsdatabaser

Detaljer

Databaser. Relasjonsmodellen 2 Læreboka: Kap. 2 Relasjonsmodellen

Databaser. Relasjonsmodellen 2 Læreboka: Kap. 2 Relasjonsmodellen Databaser Relasjonsmodellen 2 Læreboka: Kap. 2 Relasjonsmodellen Tema for dagen Hva er relasjonsalgebra? Seleksjon Projeksjon Produkt Indre forening Ytterforening Settoperasjoner: union, snitt, differanse

Detaljer

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser UNIVERSITETET I OSLO INF1300 Introduksjon til databaser Dagens tema: Det meste av resten av SQL Sammenligning med tekstmønstre Aggregeringsfunksjoner Nestede spørsmål Gruppering Relasjonssammenligninger:

Detaljer

UNIVERSITETET SQL. Structured Query Language. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

UNIVERSITETET SQL. Structured Query Language. Institutt for Informatikk. INF Ellen Munthe-Kaas 1 UNIVERSITETET IOSLO SQL Structured Query Language Institutt for Informatikk INF3100 8.2.2011 Ellen Munthe-Kaas 1 SQL SQL Structured Query Language er et deklarativt språk for spørringer mot relasjonsdatabaser

Detaljer

Databaser fra et logikkperspektiv

Databaser fra et logikkperspektiv Databaser fra et logikkperspektiv Evgenij Thorstensen IFI, UiO Høst 2013 Evgenij Thorstensen (IFI, UiO) Databaser fra et logikkperspektiv Høst 2013 1 / 31 Outline 1 Logikk som verktøy 2 Relasjonsdatabaser

Detaljer

SQL. SQL-standarder. Flere standarder: ANSI SQL SQL2 (SQL-92) SQL3 (SQL-99) = SQL2 + objekt-relasjonelle egenskaper mm

SQL. SQL-standarder. Flere standarder: ANSI SQL SQL2 (SQL-92) SQL3 (SQL-99) = SQL2 + objekt-relasjonelle egenskaper mm SQL SQL Structured Query Language er et deklarativt språk for spørringer mot relasjonsdatabaser Uttrykkskraften er omtrent som den i relasjonsalgebraen utvidet med tilleggsoperatorene SQL inneholder også

Detaljer

INF1300 SQL Structured Query Language del 1. Stoff som blir/ble forelest i oktober 2013

INF1300 SQL Structured Query Language del 1. Stoff som blir/ble forelest i oktober 2013 INF1300 SQL Structured Query Language del 1 Stoff som blir/ble forelest i oktober 2013 Dagens tema SQLs definisjonsspråk SQLs spørrespråk select-from-where distinct order by SQLs manipulasjonsspråk Indekser

Detaljer

UNIVERSITETET RELASJONSALGEBRA. Regning g med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

UNIVERSITETET RELASJONSALGEBRA. Regning g med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas 1 UNIVERSITETET IOSLO RELASJONSALGEBRA Regning g med relasjoner Institutt for Informatikk INF3100-7.2.2011 Ellen Munthe-Kaas 1 Relasjonsalgebraen definerer en mengde av operasjoner på relasjoner gir oss

Detaljer

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ragnar Normann

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ragnar Normann UNIVERSITETET I OSLO RELASJONSALGEBRA Regning med relasjoner Institutt for Informatikk 1 Relasjonsalgebraen definerer en mengde av operasjoner på relasjoner gir oss et språk til å beskrive spørsmål om

Detaljer

Integritetsregler i SQL

Integritetsregler i SQL UNIVERSITETET I OSLO Integritetsregler i SQL INF3100 8.2.2005 Ragnar Normann 1 Integritetsregler i SQL Kandidat- og primærnøkler Referanseintegritet - fremmednøkler Domenebegrensende integritetsregler

Detaljer

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas 1 UNIVERSITETET I OSLO RELASJONSALGEBRA Regning med relasjoner Institutt for Informatikk INF3100-8.2.2010 Ellen Munthe-Kaas 1 Relasjonsalgebraen definerer en mengde av operasjoner på relasjoner gir oss et

Detaljer

IN2090 Databaser og datamodellering. 09 Aggregering og sortering

IN2090 Databaser og datamodellering. 09 Aggregering og sortering IN2090 Databaser og datamodellering 09 Aggregering og sortering Leif Harald Karlsen leifhka@ifi.uio.no Universitetet i Oslo 1 / 30 Enklere syntaks for joins Jeg lærte noe nytt forige uke! Man kan bruke

Detaljer

UNIVERSITETET I OSLO SQL. Structured Query Language. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

UNIVERSITETET I OSLO SQL. Structured Query Language. Institutt for Informatikk. INF Ellen Munthe-Kaas 1 UNIVERSITETET I OSLO SQL Structured Query Language Institutt for Informatikk INF3100 3.2.2015 Ellen Munthe-Kaas 1 SQL SQL Structured Query Language er et deklarativt språk for spørringer mot relasjonsdatabaser

Detaljer

UNIVERSITETET I OSLO SQL. Structured Query Language. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

UNIVERSITETET I OSLO SQL. Structured Query Language. Institutt for Informatikk. INF Ellen Munthe-Kaas 1 UNIVERSITETET I OSLO SQL Structured Query Language Institutt for Informatikk INF3100 10.2.2014 Ellen Munthe-Kaas 1 SQL SQL Structured Query Language er et deklarativt språk for spørringer mot relasjonsdatabaser

Detaljer

Introduksjon til objektorientert programmering

Introduksjon til objektorientert programmering Introduksjon til objektorientert programmering Samt litt mer om strenger og variable INF1000, uke6 Ragnhild Kobro Runde Grunnkurs i objektorientert programmering Strategi: Splitt og hersk Metoder kan brukes

Detaljer

SQL, del 1 - select. Hva er SQL?

SQL, del 1 - select. Hva er SQL? LC238D http://www.aitel.hist.no/fag/_dmdb/ SQL, del 1 - select Hva er SQL? side 2 Eksempelbase side 3 SELECT-setningen, syntaks side 4-5 Operatorer side 6 Å hente ut et radintervall fra resultatsettet

Detaljer

Enklere syntaks for joins. IN2090 Databaser og datamodellering. 09 Aggregering og sortering. Eksempel: Variable i delspørringer (1)

Enklere syntaks for joins. IN2090 Databaser og datamodellering. 09 Aggregering og sortering. Eksempel: Variable i delspørringer (1) IN2090 Databaser og datamodellering 09 Aggregering og sortering Leif Harald Karlsen leifhka@ifi.uio.no Enklere syntaks for joins Jeg lærte noe nytt forige uke! Man kan bruke USING () fremfor ON

Detaljer

IN2090 Databaser og datamodellering. 09 Aggregering og sortering

IN2090 Databaser og datamodellering. 09 Aggregering og sortering IN2090 Databaser og datamodellering 09 Aggregering og sortering Leif Harald Karlsen leifhka@ifi.uio.no Universitetet i Oslo 1 / 30 Enklere syntaks for joins Jeg lærte noe nytt forige uke! 2 / 30 Enklere

Detaljer

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser UNIVERSITETET I OSLO INF1300 Introduksjon til databaser Dagens tema: SQL SQLs definisjonsspråk SQLs spørrespråk: select-from-where distinct order by SQLs manipulasjonsspråk Indekser Filmdatabasen INF1300

Detaljer

INF1300 Introduksjon til databaser: SQL Structured Query Language. En første introduksjon Lysark til forelesning mandag 14.

INF1300 Introduksjon til databaser: SQL Structured Query Language. En første introduksjon Lysark til forelesning mandag 14. INF1300 Introduksjon til databaser: SQL Structured Query Language En første introduksjon Lysark til forelesning mandag 14. september 2009 Dagens tema SQLs definisjonsspråk SQLs spørrespråk select-from-where

Detaljer

INF1300 Introduksjon til databaser: SQL Structured Query Language. En første introduksjon Lysark til forelesning onsdag 22.

INF1300 Introduksjon til databaser: SQL Structured Query Language. En første introduksjon Lysark til forelesning onsdag 22. INF1300 Introduksjon til databaser: SQL Structured Query Language En første introduksjon Lysark til forelesning onsdag 22. september 2010 Dagens tema SQLs definisjonsspråk SQLs spørrespråk select-from-where

Detaljer

SQL Structured Query Language. Repetisjon av select spørringer Nestede select spørringer Mengdeoperasjoner Views Flere operatorer

SQL Structured Query Language. Repetisjon av select spørringer Nestede select spørringer Mengdeoperasjoner Views Flere operatorer SQL Structured Query Language Repetisjon av select spørringer Nestede select spørringer Mengdeoperasjoner Views Flere operatorer Generelt utseende av SQL-spørsmål select [ distinct ]

Detaljer

UNIVERSITETET I OSLO. Objektdatabaser. ODMGs objektmodell og ODL (Object Definition Language)

UNIVERSITETET I OSLO. Objektdatabaser. ODMGs objektmodell og ODL (Object Definition Language) UNIVERSITETET I OSLO Objektdatabaser ODMGs objektmodell og ODL (Object Definition Language) INF3100 19.2.2008 Ragnar Normann Institutt for Informatikk 1 Databaser vs objektorientering Det er en inherent

Detaljer

Integritetsregler i SQL. Primærnøkler

Integritetsregler i SQL. Primærnøkler Integritetsregler i SQL Kandidat- og primærnøkler Referanseintegritet - fremmednøkler Domenebegrensende integritetsregler skranker på attributter og tupler Interrelasjonsskranker assertions Triggere INF212

Detaljer

Objektorientert programmering i Python. Resten av semesteret. Innhold uke 9 Mer komplekse strukturer. Referanser og objekter, inkl Mentimeter spørsmål

Objektorientert programmering i Python. Resten av semesteret. Innhold uke 9 Mer komplekse strukturer. Referanser og objekter, inkl Mentimeter spørsmål Innhold uke 9 Mer komplekse strukturer Objektorientert programmering i Python IN1000 Høst 2018 uke 9 Siri Moe Jensen Referanser versus objekter (repetisjon) "Dot-notasjon" Spesielle metoder i egendefinerte

Detaljer

Oppgave 1 (Opprett en database og en tabell)

Oppgave 1 (Opprett en database og en tabell) Oppgave 1 (Opprett en database og en tabell) 1) I «Object Explorer» (i «SQL Server Management Studio»), høyreklikk over Databases : 1 2 2) Skriv så databasenavnet og klikk OK: 3) Plasser så kursoren på

Detaljer

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser UNIVERSITETET I OSLO INF1300 Introduksjon til databaser Dagens tema: SQL SQLs spørrespråk: select-from-where distinct order by Indekser INF1300-15.10.2007 Ellen Munthe-Kaas 1 SQL The Intergalactic Dataspeak

Detaljer

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas UNIVERSITETET I OSLO RELASJONSALGEBRA Regning med relasjoner Institutt for Informatikk 1 Relasjonsalgebraen definerer en mengde av operasjoner på relasjoner gir oss et språk til å beskrive spørsmål om

Detaljer

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen INF1000 EKSTRATILBUD Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen PLAN FOR DAGEN gjennomgå stoff fra uke 1-5(6), men med en litt annen tilnærming kun gjennomgått stoff, men vekt på konsepter og

Detaljer

Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

Arv. Book book1 = new Book(); book1. title = Sofies verden class Book { String title; } class Dictiona ry extends Book { Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere

Detaljer

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19 Prosedyrer Lars Vidar Magnusson October 26, 2011 Lars Vidar Magnusson () Forelesning i DAS 11.10.2011 October 26, 2011 1 / 19 Repetisjon om triggere og prosedyrer Triggere og prosedyrer ligner på hverandre

Detaljer

UNIVERSITETET I OSLO SQL. Structured Query Language. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

UNIVERSITETET I OSLO SQL. Structured Query Language. Institutt for Informatikk. INF Ellen Munthe-Kaas 1 UNIVERSITETET I OSLO SQL Structured Query Language Institutt for Informatikk INF3100 9.2.2010 Ellen Munthe-Kaas 1 SQL SQL Structured Query Language er et deklarativt språk for spørringer mot relasjonsdatabaser

Detaljer

Databaser & objektorientering.

Databaser & objektorientering. Databaser & objektorientering. Noen grunnbegreper innen objektorientering. Klasser og forekomster klasser beskriver strukturen for noe. Beskrivelsen inneholder: et navn attributter /egenskaper / tilstander

Detaljer

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays Oversikt C programmering 1 C programmering Introduksjon Kildekode Kompilering Hello world Hello world med argumenter 2 Funksjoner 3 Datatyper 4 Pekere og arrays 5 Kontrollstrukturer Lars Vidar Magnusson

Detaljer

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; } Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere

Detaljer

SQL: SELECT-spørringer

SQL: SELECT-spørringer SQL: SELECT-spørringer Evgenij Thorstensen V19 Evgenij Thorstensen SQL: SELECT-spørringer V19 1 / 28 SQL Det intergalaktiske dataspeaket har flere del-språk: Data Query Language: SELECT-spørringer Data

Detaljer

Del 3: Evaluere uttrykk

Del 3: Evaluere uttrykk Del 3: Evaluere uttrykk Hva skal vi gjøre? Hvordan lagre Asp-verdier Hvilke operasjoner må jeg implementere? Er operasjonen lovlig? Utføre operasjonen Strukturen til interpreten vår f.asp 3&4 Interpret

Detaljer

UNIVERSITETET SQL-99. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

UNIVERSITETET SQL-99. Institutt for Informatikk. INF Ellen Munthe-Kaas 1 UNIVERSITETET IOSLO Objektrelasjonelle DBMSer. SQL-99 Institutt for Informatikk INF3100 2.3.2009 Ellen Munthe-Kaas 1 Objektrelasjonelle DBMSer ORDBMS = Object-Relational Database Management System Motivasjon:

Detaljer

Object interaction. Innhold. Abstraksjon 03.09.2007. Grunnleggende programmering i Java Monica Strand 3. september 2007.

Object interaction. Innhold. Abstraksjon 03.09.2007. Grunnleggende programmering i Java Monica Strand 3. september 2007. Object interaction Grunnleggende programmering i Java Monica Strand 3. september 2007 1 Innhold Til nå: Hva objekter er og hvordan de implementeres I klassedefinisjonene: klassevariable (fields), konstruktører

Detaljer

Sensorveiledning for IN2090 og INF desember :30 18:30 (4 timer)

Sensorveiledning for IN2090 og INF desember :30 18:30 (4 timer) Sensorveiledning for IN2090 og INF1300 6. desember 2018 14:30 18:30 (4 timer) 1. Eksterne skranker (5%) I modellene nedenfor (ORM2) skal du anta at alle begreper har en unik representasjon. Er plasseringen

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Eksamen i : Eksamensdag : Torsdag 2. desember 2004 Tid for eksamen : 09.00 12.00 Oppgavesettet er på : Vedlegg : Tillatte hjelpemidler

Detaljer

SELECT DISTINCT Fornavn, Etternavn, Programtittel FROM Program P, Medvirkende M, Deltagelse D. SELECT Tilgjengelighet FROM Program

SELECT DISTINCT Fornavn, Etternavn, Programtittel FROM Program P, Medvirkende M, Deltagelse D. SELECT Tilgjengelighet FROM Program [Kurssidene] [ ABI - fagsider bibin ] Michael Preminger (michaelp@hioa.no) 10/11-15 DISTINCT Pregnante navn på kolonner Boolske operatorer: OR, NOT Beregningsfunksjoner og Gruppering NULL-verdier Maria

Detaljer

IN2090 Databaser og datamodellering. 06 Enkele joins og nestede SELECT

IN2090 Databaser og datamodellering. 06 Enkele joins og nestede SELECT IN2090 Databaser og datamodellering 06 Enkele joins og nestede SELECT Leif Harald Karlsen leifhka@ifi.uio.no Universitetet i Oslo 1 / 43 Repetisjon (Enkle) SELECT-spørringer har formen: SELECT

Detaljer

DBS18 - Strategier for Query-prosessering

DBS18 - Strategier for Query-prosessering Side 1 for Databaser DBS18 - Strategier for Query-prosessering søndag 22. mai 2016 13.03 Pensum 18.1-18.4, side 655-674, unntatt 18.4.4 og 18.4.5 En spørring som blir skrevet i et høynivå-språk, må bli

Detaljer

INF1300 Introduksjon til databaser: SQL Structured Query Language

INF1300 Introduksjon til databaser: SQL Structured Query Language INF1300 Introduksjon til databaser: SQL Structured Query Language En første introduksjon Lysark til forelesning mandag 14. september 2009 SQL Structured Query Language SQL Structured Query Language er

Detaljer

TDT4110 Informasjonsteknologi grunnkurs: Tema: Mer om strenger. - 3rd edition: Kapittel 8. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi grunnkurs: Tema: Mer om strenger. - 3rd edition: Kapittel 8. Professor Alf Inge Wang 1 TDT4110 Informasjonsteknologi grunnkurs: Tema: Mer om strenger - 3rd edition: Kapittel 8 Professor Alf Inge Wang 2 Læringsmål og pensum Mål Lære om Pensum Grunnleggende operasjoner på strenger Å skive/slice

Detaljer

Objektdatabaser. ODMGs objektmodell og ODL (Object Definition Language) g Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Objektdatabaser. ODMGs objektmodell og ODL (Object Definition Language) g Institutt for Informatikk. INF Ellen Munthe-Kaas 1 UNIVERSITETET IOSLO Objektdatabaser ODMGs objektmodell og ODL (Object Definition Language) g Institutt for Informatikk INF3100 24.2.2009 Ellen Munthe-Kaas 1 Databaser vs objektorientering Det er en inherent

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.

Detaljer

INF1000: Forelesning 7. Konstruktører Static

INF1000: Forelesning 7. Konstruktører Static INF1000: Forelesning 7 Klasser og objekter del 2 Konstruktører Static UML REPETISJON 2 Repetisjon Verden består av objekter av ulike typer (klasser). Ofte er det mange objekter av en bestemt type. Objekter

Detaljer

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER .9.22 LITT OM OPPLEGGET INF EKSTRATILBUD Stoff fra uke - 2. September 22 Siri Moe Jensen Målgruppe: De som mangler forståelse for konseptene gjennomgått så langt. Trening får du ved å jobbe med oppgaver,

Detaljer

INF1000: Forelesning 7

INF1000: Forelesning 7 INF1000: Forelesning 7 Klasser og objekter del 2 Konstruktører Static UML REPETISJON 2 Repetisjon Repetisjon forts. Verden består av objekter av ulike typer (klasser). Ofte er det mange objekter av en

Detaljer

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak LISTER Vanligste datastruktur Mange implementasjonsmåter (objektkjeder, array...) Operasjoner på listen definerer forskjellige typer lister (LIFO, FIFO,...) På norsk bruker vi vanligvis ordet «liste» for

Detaljer

Beskrivelse av programmeringsspråket Simpila INF5110 - Kompilatorteknikk Våren 2012

Beskrivelse av programmeringsspråket Simpila INF5110 - Kompilatorteknikk Våren 2012 Beskrivelse av programmeringsspråket Simpila INF5110 - Kompilatorteknikk Våren 2012 Her beskrives syntaksen og den statiske semantikken (hva som skal sjekkes av kompilatoren) til språket Simpila. Den dynamiske

Detaljer

SQL SELECT-FROM-WHERE. Skjemadefinisjon og datainnsetting i SQL. Semantikk bak ein-relasjons-spørring

SQL SELECT-FROM-WHERE. Skjemadefinisjon og datainnsetting i SQL. Semantikk bak ein-relasjons-spørring SQL Språk for Skjemadefinisjon Spørringar Database-oppdateringar Svært høgnivå: i prinsippet skriv ein kva ein vil ha som resultat, utan å spesifisere korleis Sterk grad av optimalisering effektivt Skjemadefinisjon

Detaljer

Datatyper og typesjekking

Datatyper og typesjekking Datatyper og typesjekking Om typer generelt Hva er typer? Statisk og dynamisk typing Hvordan beskrive typer syntaktisk? Hvordan lagre dem i kompilatoren? Gjennomgang av noen typer Grunntyper Type-konstruktører

Detaljer

Datatyper og typesjekking

Datatyper og typesjekking Datatyper og typesjekking Om typer generelt Hva er typer? Statisk og dynamisk typing Hvordan beskrive typer syntaktisk? Hvordan lagre dem i kompilatoren? Gjennomgang av noen typer Grunntyper Type-konstruktører

Detaljer

Løsningsforslag til eksamen i IN2090 Databaser og datamodellering og INF1300 Introduksjon til databaser 6. desember :30 18:30 (4 timer)

Løsningsforslag til eksamen i IN2090 Databaser og datamodellering og INF1300 Introduksjon til databaser 6. desember :30 18:30 (4 timer) Løsningsforslag til eksamen i IN2090 Databaser og datamodellering og INF1300 Introduksjon til databaser 6. desember 2018 14:30 18:30 (4 timer) 1. Eksterne skranker (5%) I modellene nedenfor (ORM2) skal

Detaljer

SQL: SELECT-spørringer

SQL: SELECT-spørringer SQL: SELECT-spørringer Evgenij Thorstensen V18 Evgenij Thorstensen SQL: SELECT-spørringer V18 1 / 29 Relasjonsalgebra, recap Tre hovedoperatorer i tillegg til mengdeoperatorer: Seleksjon σ θ Projeksjon

Detaljer

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk INF Ellen Munthe-Kaas

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk INF Ellen Munthe-Kaas UNIVERSITETET I OSLO RELASJONSALGEBRA Regning med relasjoner Institutt for Informatikk INF3100-3.2.2016 Ellen Munthe-Kaas 1 Relasjonsalgebraen definerer en mengde av operasjoner på relasjoner gir oss et

Detaljer

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk INF Ellen Munthe-Kaas

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk INF Ellen Munthe-Kaas UNIVERSITETET I OSLO RELASJONSALGEBRA Regning med relasjoner Institutt for Informatikk INF3100-2.2.2015 Ellen Munthe-Kaas Relasjonsalgebraen definerer en mengde av operasjoner på relasjoner gir oss et

Detaljer

Semantisk Analyse del III

Semantisk Analyse del III Semantisk Analyse del III Typesjekking Kapittel 6.4 08.03.2013 1 Datatyper og typesjekking Om typer generelt Hva er typer? Statisk og dynamisk typing Hvordan beskrive typer syntaktisk? Hvordan lagre dem

Detaljer

Løsnings forslag i java In115, Våren 1996

Løsnings forslag i java In115, Våren 1996 Løsnings forslag i java In115, Våren 1996 Oppgave 1a For å kunne kjøre Warshall-algoritmen, må man ha grafen på nabomatriseform, altså en boolsk matrise B, slik at B[i][j]=true hvis det går en kant fra

Detaljer

SQL, del 1 - select. Hva er SQL?

SQL, del 1 - select. Hva er SQL? LC238D http://www.aitel.hist.no/fag/_dmdb/ SQL, del 1 - select Hva er SQL? side 2 Eksempelbase side 3 SELECT-setningen, syntaks side 4-5 Operatorer side 6 Å hente ut et radintervall fra resultatsettet

Detaljer

ORDBMS og OODBMS i praksis

ORDBMS og OODBMS i praksis ORDBMS og OODBMS i praksis Lars Vidar Magnusson November 2, 2011 Lars Vidar Magnusson () Forelesning i DAS 01.11.2011 November 2, 2011 1 / 18 Eksempler på ORDBMS Flere av de store databaser i dag hevder

Detaljer

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus // class Bygning Oppgave 1 System.out.println( Bolighus ); // class Bolighus Hva blir utskriften fra dette programmet? class Blokk extends Bolighus{ // class Blokk IN105subclassesII-1 Eksekveringsrekkefølgen

Detaljer

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

INF1000 (Uke 5) Mer om løkker, arrayer og metoder INF1000 (Uke 5) Mer om løkker, arrayer og metoder Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset Praktisk informasjon Når disse

Detaljer

LC238D Datamodellering og databaser SQL, del 1 - SELECT

LC238D Datamodellering og databaser  SQL, del 1 - SELECT LC238D http://www.aitel.hist.no/fag/_dmdb/ SQL, del 1 - SELECT Hva er SQL? side 2 Eksempelbase side 3 SELECT-setningen, syntaks side 4-5 Operatorer side 6 Å hente ut et radintervall fra resultatsettet

Detaljer

Datatyper og typesjekking

Datatyper og typesjekking Datatyper og typesjekking Om typer generelt Hva er typer? Statisk og dynamisk typing Hvordan beskrive typer syntaktisk? Hvordan lagre dem i kompilatoren? Gjennomgang av noen typer Grunntyper Type-konstruktører

Detaljer

SQL Structured Query Language

SQL Structured Query Language SQL Structured Query Language Hvorfor tabeller? Litt tabellterminologi Hente data fra tabeller select-from-where distinct order by Universe of discourse Interesseområdet Hva er vi interessert i å lagre

Detaljer

Relasjoner terminologi. Kopi av lysark fra forelesningen 13. oktober. Legges ut inntil notatet som samler alt om SQL kommer...

Relasjoner terminologi. Kopi av lysark fra forelesningen 13. oktober. Legges ut inntil notatet som samler alt om SQL kommer... Relasjoner terminologi Kopi av lysark fra forelesningen 13. oktober. Legges ut inntil notatet som samler alt om SQL kommer... /* Lage et view med oversikt over hvor mange funksjoner * filmarbeiderne med

Detaljer

23.09.2015. Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

23.09.2015. Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert. Grunnkurs i objektorientert programmering Introduksjon til objektorientert programmering INF1000 Høst 2015 Siri Moe Jensen INF1000 - Høst 2015 uke 5 1 Siri Moe Jensen INF1000 - Høst 2015 uke 5 2 Kristen

Detaljer

UNIVERSITETET. Relasjonsalgebra. INF Ragnhild Kobro Runde

UNIVERSITETET. Relasjonsalgebra. INF Ragnhild Kobro Runde UNIVERSITETET IOSLO Relasjonsalgebra Regning med relasjoner 1 Annen bruk av chasealgoritmen (korrigert lysark) For å vise en FD X Y starter tabellen med to rader som er like for attributtene i X, og ulike

Detaljer

Integritetsregler i SQL

Integritetsregler i SQL UNIVERSITETET I OSLO Integritetsregler i SQL Institutt for Informatikk INF3100 13.2.2007 Ellen Munthe-Kaas 1 Integritetsregler i SQL Kandidat- og primærnøkler Referanseintegritet - fremmednøkler Domenebegrensende

Detaljer