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

Like dokumenter
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 Ragnar Normann 1

UNIVERSITETET I OSLO 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 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. INF Ellen Munthe-Kaas 1

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

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

INF1300 Introduksjon til databaser

SQL Structured Query Language

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 mandag 14.

INF1300 Introduksjon til databaser

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

Relasjoner terminologi

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

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

INF1300 Introduksjon til databaser: SQL Structured Query Language

Integritetsregler i SQL

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

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

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

Metaspråket for å beskrive grammatikk

SQL: Integritetsregler, triggere og views

UNIVERSITETET. triggere og views. Institutt for Informatikk. INF Arne Maus 1

DBMS Database Management System (repetisjon) Programmeringsgrensesnitt. Serialiserbarhet

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

SQL Structured Query Language

Integritetsregler i SQL. Primærnøkler

Integritetsregler i SQL

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

SQL Structured Query Language

INF1300 Introduksjon til databaser

SQL: SELECT-spørringer

Repetisjon: Normalformer og SQL

Spørsmålskompilering del 1

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

Spørsmålskompilering del 1

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

Utvikling fra kjernen og ut

Datamodellering og databaser SQL, del 2

Datamodellering og databaser SQL, del 2

SQL: SELECT-spørringer

Indre select-setninger Nestede select-setninger

Datamodellering og databaser SQL, del 2

1. SQL datadefinisjon og manipulering

INF1300 Introduksjon til databaser

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

Oppgaver Oppgave a: Sett opp mulige relasjoner

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

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

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

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

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

Relasjonsalgebraen. Algebra

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

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

Utvikling fra kjernen og ut

INF1300 Det meste av resten av

Relasjoner terminologi

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

IN2090 Databaser og datamodellering. 08 Typer og skranker

Spørsmålskompilering del 2

IN2090 Databaser og datamodellering. 08 Typer og skranker

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

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

Ekstramateriale: Eksempel på PostgreSQL 8.4 og SQL:1999 (ikke pensum 2012)

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

SQL, del 1 - select. Hva er SQL?

Oppgave 1 (Opprett en database og en tabell)

SQL 3: Opprette tabeller, datainnsetting og utsnitt

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

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

Miniverden og ER- modell

INF1300 Introduksjon til databaser

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

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

INF1300 Introduksjon til databaser

Utvikling fra kjernen og ut

OQL Object Query Language

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

Tilkobling og Triggere

IN2090 Databaser og datamodellering 07 Datamanipulering

Dagens tema: Relasjonsmodellen (funksjonelle avhengigheter og nøkler, integritetsregler) Realisering: Fra ORM til relasjoner

Effektiv eksekvering av spørsmål

Effektiv eksekvering av spørsmål

SQL, del 1 - select. Hva er SQL?

LC238D Datamodellering og databaser SQL, del 1 - SELECT

ORDBMS og OODBMS i praksis

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

Samtidighetsfenomener og anomalier i eksekveringsplaner. INF Ellen Munthe-Kaas 1

SQL Introduksjonskurs. Oversikt

Databaser. Relasjonsmodellen 1 Læreboka: Kap. 2 Relasjonsmodellen Faglærere: Tore Mallaug, Kjell Toft Hansen

IN2090 Databaser og datamodellering 07 Datamanipulering

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

INF1300 Introduksjon til databaser

Utvikling fra kjernen og ut

EKSAMEN 6102 / 6102N DATABASER

Bruke SQL fra Python. Med Psycopg2

Transkript:

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 være null Mulige tolkninger av null: Verdien fins, men er ukjent Verdi her har ingen mening Verdi fins, men er priviligert informasjon INF3100 9.2.2009 Ellen Munthe-Kaas 2

Regler for null null som del av et aritmetisk uttrykk, gir null som svar Sammenlikning av null med en verdi, gir unknown som svar unntak: is distinct from (som er omtrent som <>, men sammenlikner som om null var en verdi) Det er ikke lov å bruke null eksplisitt som del av et uttrykk Vi kan spørre om resultatet av en beregning er null: A is null A is not null INF3100 9.2.2009 Ellen Munthe-Kaas 3

Gruppering og aggregering med null null ignoreres i aggregeringer bortsett fra i count(*) Eksempel: Hvis A er attributt i relasjonen R, vil select count(a) from R gi antall rader i R hvor A ikke er null select count(*) () from R gi antall rader i R (inklusive de som er null i alle attributter) null behandles som en ordinær verdi ved gruppering INF3100 9.2.2009 Ellen Munthe-Kaas 4

unknown unknown and true = unknown unknown and false = false unknown or true = true unknown or false = unknown not unknown = unknown Vi får ikke bruke unknown eksplisitt som del av et uttrykk Hvis en betingelse evalueres til unknown for et tuppel, vil tuppelet ikke komme med i svaret Vi kan spørre om resultatet av en beregning er unknown: A is unknown A is not unknown INF3100 9.2.2009 Ellen Munthe-Kaas 5

Relasjonssammenligninger I SQL har fem operatorer som sammenligner med innholdet i en hel relasjon: exists R (betyr forekomst i R) in R (betyr R) not in R (betyr R) any R (betyr en vilkårlig verdi i R) all R (betyr alle verdier i R) INF3100 9.2.2009 Ellen Munthe-Kaas 6

Relasjonssammenligninger II any og all brukes i praksis bare på relasjoner med ett attributt some er synonym for any = any er ekvivalent med in Eksempel: V.pris < all (select R.verdi from. where. ) Dette betyr at V.pris skal være mindre enn den minste R.verdi vi fant i delspørsmålet (sub-queriet) INF3100 9.2.2009 Ellen Munthe-Kaas 7

Relasjonssammenligninger III [not] in kan brukes på ett attributt eller på en liste av attributter Eksempler: V.knr not in (select kunde from. where. ) (A.navn, frisør ) in (select navn, yrke from. where. ) INF3100 9.2.2009 Ellen Munthe-Kaas 8

Relasjonssammenligninger IV exists (select l t * from R) betyr at t (t R), dvs. at ekstensjonen til R ikke er tom Med andre ord: exists er SQLs eksistenskvantor SQL har ingen tilsvarende allkvantor Vi bruker formelen t(p(t)) ( t(p(t))) ( ( t( P(t))) Dette betyr at vi kan uttrykke at betingelsen C holder for alle tupler i R slik: not exists (select * from R where not C) INF3100 9.2.2009 Ellen Munthe-Kaas 9

Nestede select-setninger setninger select-setninger kan nestes til vilkårlig dybde Eksempel: Finn alle filmtitler som har vært brukt i to eller flere filmer. select distinct title from Movie m where year < any (select year from Movie where title = m.title); INF3100 9.2.2009 Ellen Munthe-Kaas 10

Skopregler Et attributt i en subquery tilhører en av tuppelvariablene i subqueryet hvis en av disse har dette attributtet Hvis ikke, søkes attributtet i nærmeste omsluttende (sub)querys tuppelvariable, osv Skopregelen kan brytes ved å kvalifisere attributtet med navnet på en tuppelvariabel fra en omsluttende query INF3100 9.2.2009 Ellen Munthe-Kaas 11

Kostbare operasjoner i SQL distinct: Sortering er generelt kostbart Bør brukes med forsiktighet union, intersect, except: SQL beregner set-variantene av disse (dvs. at flerforekomster fjernes) Vurder å bruke union all, intersect all, except all som er bag-variantene INF3100 9.2.2009 Ellen Munthe-Kaas 12

SQLs DML insert: Innsetting av nye data update: Endring av eksisterende data delete: Sletting av data INF3100 9.2.2009 Ellen Munthe-Kaas 13

insert insert into R(A1, A2,..., Ak) values (v1, v2,..., vk); insert into R(A1, A2,..., Ak) select-setning; Attributtlisten kan sløyfes hvis den dekker samtlige attributter i R og følger attributtenes default rekkefølge NB Optimaliseringer i DBMSet kan medføre at tuplene legges inn etterhvert som de beregnes i selectsetningen. Dette kan ha sideeffekter på beregningen av select-setningen! INF3100 9.2.2009 Ellen Munthe-Kaas 14

update, delete update R set A 1 =E 1,.., A k =E k [where C]; delete from R [where C]; INF3100 9.2.2009 Ellen Munthe-Kaas 15

SQLs DDL create: Opprette tabell drop: Fjerne tabell alter table: Endre tabell Herunder: Legge til eller fjerne kolonner Legge til eller fjerne indekser Legge til, fjerne eller endre integritetsregler (constraints) INF3100 9.2.2009 Ellen Munthe-Kaas 16

create create table R (A 1 type_1 [skranke_1],... A n type_n [skranke_n], [liste av skranker] ); INF3100 9.2.2009 Ellen Munthe-Kaas 17

drop, alter drop table R alter table R add A x D y alter table R drop A x R er et relasjonsnavn A x er et attributt D y er et domene INF3100 9.2.2009 Ellen Munthe-Kaas 18

Datatyper i SQL Datatype integer smallint real, float double precision numeric(p,s) char(n), varchar(n) text bit(n), bit varying(n) boolean date time timestamp Forklaring Heltall Heltall, mindre plasskrevende enn integer Flyttall (synonyme betegnelser) Flyttall med høyere presisjon p signifikante sifre, s sifre etter desimalpunktum Tekst med henholdsvis fast og variabel lengde Tekst med vilkårlig lengde. Ikke-standard SQL! Bitstreng med henholdsvis fast og variabel lengde Boolsk verdi Dato Klokkeslett Dato og klokkeslett INF3100 9.2.2009 Ellen Munthe-Kaas 19

Indekser DBMS-avhengig syntaks: create index X on R(A 1,..,A k ); drop index X; Valg av indekser må gjøres med omhu Indekser gjør at spørringer mot vedkommende d attributt(er) tt( går mye fortere innsetting, sletting og oppdatering blir mer komplisert og tidkrevende INF3100 9.2.2009 Ellen Munthe-Kaas 20

Vurdering av indeksbruk Anta at StarsIn(movieTitle, movieyear, starname) har størrelse 10 blokker Anta at det i snitt er 3 stjerner i hver film, og at hver stjerne spiller i 3 filmer Q 1 : select movietitle, movieyear from StarsIn where starname=s; s; Q 2 : select starname from StarsIn where movietitle=t and movieyear=y; I: insert into StarsIn values (t,y,s); p i : Andel av tiden benyttet på Q i, i=1,2, så andel tid brukt på I er 1 (p 1 +p 2 ) Tallene i tabellen angir antall diskaksesser Indeks: Ingen starname movietitle Begge Q 1 10 4 10 4 Q 2 10 10 4 4 I 2 4 4 6 Snitt: 2+8p 1 +8p 2 4+6p 2 4+6p 1 6-2p 1-2p 2 INF3100 9.2.2009 Ellen Munthe-Kaas 21

SQLs VDL create view viewnavn as select.. from..; drop view viewnavn; INF3100 9.2.2009 Ellen Munthe-Kaas 22

SQLs DCL Hver bruker har en autorisasjonsid Hver ID tilordnes privilegier: select: Tillat select på noen attributter i en relasjon insert: Tillat insert på noen attributter i en relasjon update: Tillat update på noen attributter i en relasjon delete: Tillat delete på en relasjon references: Tillat bruk av en relasjon i en integritetsregel e ege (assertion/attributtbasert/tuppelbasert) base / uppe base usage: Tillat bruk av et databaseelement trigger: Tillat definisjon av triggere mot en relasjon execute: Tillat eksekvering av PSM-kodebiter under: Tillat opprettelse av subtyper INF3100 9.2.2009 Ellen Munthe-Kaas 23

Privilegier Privilegier tildeles ved grant <privilegier> on <databaseelement> to <brukere> [with grant option]; og fratas ved revoke <privilegier> on <databaseelement> from <brukere> [cascade restrict] INF3100 9.2.2009 Ellen Munthe-Kaas 24

Øvingsoppgave g 3 Skjema: Prosjekt(P#,Pnavn,Kunde,Pleder,StartDato) Pnavn Pleder Ansatt(A#,Navn,Tittel,Fdato,Pnr,AnsDato) Timeliste(A#,Dato,P#,Timer) Timer) Kunde(K#,Knavn,Adresse) Oppgave: Finn navn, totalt antall timer utført på, og startdato for alle prosjekter bestilt av kunden «Pust og pes AS». Sorter dem slik at det nyeste prosjektet kommer først. INF3100 9.2.2009 Ellen Munthe-Kaas 25

Øvingsoppgave g 3 Prosjekt(P#,Pnavn,Kunde,Pleder,StartDato) Ansatt(A#,Navn,Tittel,Fdato,Pnr,AnsDato) AnsDato) Timeliste(A#,Dato,P#,Timer) Kunde(K#,Knavn,Adresse) Løsning: select Pnavn, SUM(Timer) as TimeSum, StartDato from Kunde K, Timeliste T, Prosjekt P where Knavn = Pust og pes AS and K# = P.Kunde and P.P# = T.P# group by P.P#, P# Pnavn, StartDato order by StartDato desc INF3100 9.2.2009 Ellen Munthe-Kaas 26