Systemutvikling fra kjernen og ut, fra skallet og inn



Like dokumenter
SQL. ISO SQL-standardene. Structured Query Language. Bruk av SQL. En innledende kommentar SQL-89 SQL-92 SQL:1999

Utvikling fra kjernen og ut

Utvikling fra kjernen og ut

Utvikling fra kjernen og ut

SQL 3: Opprette tabeller, datainnsetting og utsnitt

Utvikling fra kjernen og ut

Metaspråket for å beskrive grammatikk

Oppgave 1 (Opprett en database og en tabell)

Utvikling fra kjernen og ut

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

Datamodellering og databaser SQL, del 2

1. SQL datadefinisjon og manipulering

Repetisjon: Normalformer og SQL

Datamodellering og databaser SQL, del 2

Datamodellering og databaser SQL, del 2

Høgskolen i Telemark EKSAMEN 6102 DATABASER Tid: Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1

Oppgave 1 1. Spørring: Resultattabell: 2. Spørring: Resultattabell: 3. Spørring:

Miniverden og ER- modell

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

1. Introduksjon til Oracle Express Edition

En liten rekap. Spørrespråk. I dag SELECT

Tilkobling og Triggere

Integritetsregler i SQL. Primærnøkler

Institutt for datateknikk. Fag TDT4145 Datamodellering og databasesystemer Løsningsforslag til øving 3: Algebra og SQL

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

Fag TDT4145 Datamodellering og databasesystemer Løsningsforslag til øving 3: Algebra og SQL

Datamodellering med UML

Integritetsregler i SQL

Skranker og avledninger

UNIVERSITETET I OSLO 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

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

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

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

Objektorientering i ER-modeller EER-modeller Enhanced Entity Relationship Models

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

Delinnlevering 2. INF1050, våren Inge Svale Hauger Handagard (ishandag) Tor Hildrum (thildru)

IN2090 Databaser og datamodellering 07 Datamanipulering

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

The Unified Modeling Language - UML

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

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

Integritetsregler i SQL

HØGSKOLEN I SØR-TRØNDELAG

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

ORDBMS og OODBMS i praksis

EKSAMEN 6102 / 6102N DATABASER

En lett innføring i foreninger (JOINs) i SQL

Eksamen i IBE102 Webutvikling Våren 2017.

INF1300 Introduksjon til databaser

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

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

Datamodellering med UML. Modellenes to formål. The Unified Modeling Language - UML

SQL Structured Query Language

SQL Structured Query Language

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 onsdag 22.

HØGSKOLEN I SØR-TRØNDELAG

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

1. SQL spørringer mot flere tabeller

Relasjoner terminologi

Øvingsoppgave uke 3. Fanger i fengsel

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

Unit Relational Algebra 1 1. Relational Algebra 1. Unit 3.3

SQL: Datatyper m.m. Evgenij Thorstensen V18. Evgenij Thorstensen SQL: Datatyper m.m. V18 1 / 12

IN2090 Databaser og datamodellering 07 Datamanipulering

EKSAMEN. Kontroller at oppgavesettet er komplett før du begynner å besvare spørsmålene.

Join. Intuitivt: Skjøte sammen to relasjoner. Intuitivt: 1. Beregn R S 2. Velg ut de tuplene som tilfredsstiller joinbetingelsen C

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

Komplisert eksempel. IN2090 Databaser og datamodellering 07 Datamanipulering. Flere eksempler: Kombinere aggregater. Komplisert eksempel med WITH

SQL: Integritetsregler, triggere og views

Avansert bruk av SQL. Avanserte spørringer Valguttrykk Spørring på spørring Unionspørringer Delspørringer, vekselvirkende delspørringer Kvantorer

Tabeller og enkle spørringer

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

2: Hvilke verdier forekommer i attributtet filmtype i relasjonen filmitem? Lag en oversikt over filmtypene og hvor mange filmer innen hver type.

Modellenes to formål. Datamodellering med UML (forts.) Fra naturlig språk til datamodell. Figur 5-2. Ogdens trekant

Løsningsskisse til eksamensoppgave i TDT4145 Datamodellering og databasesystemer

IN2090 Databaser og datamodellering. 08 Typer og skranker

IN2090 Databaser og datamodellering. 08 Typer og skranker

Databasers typesystem. IN2090 Databaser og datamodellering. 08 Typer og skranker. SQL-standarden vs. RDBMSer. Hvilke datatyper har vi

Løsningsforlag for oblig 1, databaser 2010

Databaser & objektorientering.

Indre select-setninger Nestede select-setninger

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

Datamodellering med UML (forts.)

Datamodellering med ORM

Oppgave 1 Datamodellering 22 %

Oppgaver Oppgave a: Sett opp mulige relasjoner

Databaser kort intro. Tom Heine Nätt

INF1300 Introduksjon til databaser

SQL Introduksjonskurs. Oversikt

INF1300 Introduksjon til databaser

INF3100 V2018 Obligatorisk oppgave nr. 2

HØGSKOLEN I SØR-TRØNDELAG

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

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

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

Løsningsskisse til eksamensoppgave i TDT4145 Datamodellering og databasesystemer

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

Transkript:

Systemutvikling fra kjernen og ut, fra skallet og inn Løsninger til oppgaver i kap A.10 i Appendiks A - SQL Legg merke til at oppgave 22 er blitt noe presisert. 1. Hvor mange innbyggere er det i Norge? SELECT SUM(Innbyggertall) AS NorgesInnbyggertall ; 2. Lag en tabell med Kommunenavn, Innbyggertall og AvfallPerInnbygger, begrenset til kommuner med over 50000 innbyggere.,innbyggertall, AvfallPerInnbygger WHERE Innbyggertall > 50000; 3. Lag en tabell med Kommunenavn, Innbyggertall og AvfallPerInnbygger, begrenset til kommuner med over 50000 innbyggere og mindre enn 300 kg avfall per innbygger.,innbyggertall, AvfallPerInnbygger WHERE Innbyggertall > 50000 AND AvfallPerInnbygger < 300; 4. Finn alle kommuner med fylkenr lik 04. WHERE Fylkenr = 04 ; 5. Finn alle kommuner hvis kommunenavn begynner på bokstavene Kr. WHERE Kommunenavn LIKE Kr% ; 6. Lag en tabell med Kommunenavn, Innbyggertall og AvfallPerInnbygger, sortert på synkende verdier av Innbyggertall. Ser det ut som om innbyggere i folkerike kommuner er flinkere til å produsere lite avfall enn innbyggerne i de øvrige kommunene?,innbyggertall, AvfallPerInnbygger ORDER BY Innbyggertall DESC; SQL-løsninger - side 1

7. Lag en tabell med Kommunenavn, Innbyggertall og BeregnetAvfallPerInnbygger, der du ikke henter data fra AvfallPerInnbygger.,Innbyggertall, Avfallsmengde*1000/Innbyggertall AS BeregnetAvfallPerInnbygger ; 8. Lag en tabell med Fylkenr, Kommunenr og Kommunenavn, der de tre attributtene er satt sammen til ett attributt, og Kommunenavn er atskilt med en -. SELECT Fylkenr Kommunenr '-' Kommunenavn AS FylkeOgKommune ; 9. Hvilken kommune produserer minst avfall, og hvor mye?, Avfallsmengde WHERE Avfallsmengde = (SELECT MIN(Avfallsmengde) ) ; 10. Hvilken kommune produserer minst avfall per innbygger, og hvor mye?, AvfallPerInnbygger WHERE AvfallPerInnbygger = (SELECT MIN(AvfallPerInnbygger) ) ; 11. Hvilke kommuner har mer avfall per innbygger enn gjennomsnittet?, AvfallPerInnbygger WHERE AvfallPerInnbygger > (SELECT AVG(AvfallPerInnbygger) ) ; 12. Hvor mange kommuner i Norge har samme kommunenavn, under forutsetning av at hvert navn ikke er brukt mer enn to ganger? SELECT (COUNT(Kommunenavn) COUNT(DISTINCT Kommunenavn))* 2 AS AntallKommunerMedNavnebrødre ; SQL-løsninger - side 2

13. Hvilke kommuner i Norge har samme kommunenavn? (vanskelig!) SELECT H1.Kommunenavn, H1.Kommunenr, H2.Kommunenr H1, Husholdningsavfall H2 WHERE H1.Kommunenavn = H2.Kommunenavn AND H1.Kommunenr < H2.Kommunenr; 14. Finn alle kommuner i fylket med fylkenavn Hedmark., Fylke WHERE Fylke.Fylkenr = Husholdningsavfall.Fylkenr AND Fylkenavn = Hedmark ; 15. Lag en tabell som inneholder fylker i Norge med fylkenavn og innbyggertall, begrenset til fylker med over 250000 innbyggere. SELECT F.Fylkenr, MAX(Fylkenavn)AS Fylkenavn, SUM(Innbyggertall) AS Innbyggertall H, Fylke F WHERE F.Fylkenr = H.Fylkenr GROUP BY F.Fylkenr HAVING SUM(Innbyggertall) > 250000 ; 16. Lag en tabell som inneholder alle fylker i Norge med fylkenavn, innbyggertall, avfallsmengde og avfallsmengde per innbygger, sortert på det siste attributtet. SELECT F.Fylkenr, MAX(Fylkenavn)AS Fylkenavn, SUM(Innbyggertall) AS Innbyggere, SUM(Avfallsmengde)AS Avfall, SUM(Avfallsmengde)*1000/SUM(Innbyggertall)AS AvfallPerInnbygger H, Fylke F WHERE F.Fylkenr = H.Fylkenr GROUP BY F.Fylkenr ORDER BY SUM(Avfallsmengde)*1000/SUM(Innbyggertall); SQL-løsninger - side 3

17. Gjør de endringer som skal til i tabellen Husholdningsavfall for å kunne legge inn kommunen Svalbard uten noe fylkenr og uten avfallsmengde. Bruk f.eks. 0000 som Kommunenr. Dette er litt tricky. Vi må fjerne NOT NULL på Fylkenr og Avfallsmengde. Siden vi ikke selv har gitt noe navn til disse skrankene, må vi finne de systemgenererte navnene. Følgende spørring mot metadatabasen gir oss dem: SELECT constraint_name, constraint_type, table_name, delete_rule, search_condition FROM user_constraints; La oss anta at skrankene heter SYS_00775 og SYS_00777. Følgende ALTER TABLE fjerner dem: ALTER TABLE Husholdningsavfall DROP CONSTRAINT SYS_C00775; ALTER TABLE Husholdningsavfall DROP CONSTRAINT SYS_C00777; Et alternativ er å lage en ny tabell og kopiere over data fra Husholdningsavfall: CREATE TABLE NyHusholdningsavfall AS SELECT * ; 18. Legg inn kommunen Svalbard med innbyggertall 1158. (I 1998 var i alt 2591 personer bosatt på Svalbard, men 1433 av disse holdt til i norske bosettinger og var derfor formelt tilhørende en kommune på fastlandet.) INSERT INTO Husholdningsavfall (Kommunenr, Kommunenavn, Innbyggertall) VALUES ( 0000, Svalbard, 1158); 19. Utfør en Outer Join med tabellen Fylke, slik at Svalbard kommer med i resultatet. SELECT * FROM Fylke F, Husholdningsavfall H WHERE F.Fylkenr (+) = H.Fylkenr ORDER BY Kommunenr; SQL-løsninger - side 4

20. Lag en ny, tom tabell Husholdningsavfall2 som i tillegg til alle attributtene i Husholdningsavfall også inneholder attributtet Fylkenavn. Fyll denne tabellen med forekomster. CREATE TABLE Husholdningsavfall2 AS SELECT Fylkenavn, H.Fylkenr, Kommunenr, Kommunenavn, Avfallsmengde, Innbyggertall, AvfallPerInnbygger FROM Fylke F, Husholdningsavfall H WHERE F.Fylkenr = H.Fylkenr; 21. Lag en alfabetisk tabell over alle fylkenavn i Norge ut fra tabellen Husholdningsavfall2. SELECT DISTINCT Fylkenavn 2 ORDER BY Fylkenavn; 22. Lag en ny tabell kalt Fylkeavfall i databasen over alle fylker i Norge med fylkenr, fylkenavn, innbyggertall og avfallsmengde, sortert på fylkenavn, ut fra tabellen Husholdningsavfall2. CREATE TABLE Fylkeavfall AS SELECT DISTINCT Fylkenr, MAX(Fylkenavn) AS Fylkenavn, SUM(Innbyggertall) AS Innbyggertall, SUM(Avfallsmengde) AS Avfallsmengde 2 GROUP BY Fylkenr ORDER BY Fylkenavn; 23. Utvid den siste tabellen med attributtet AvfallPerInnbygger og legg inn verdier. ALTER TABLE Fylkeavfall ADD AvfallPerInnbygger NUMBER(8,1); UPDATE Fylkeavfall SET AvfallPerInnbygger = Avfallsmengde * 1000/Innbyggertall; En sjekk av resultatet til slutt: SELECT * FROM Fylkeavfall; SQL-løsninger - side 5