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

Like dokumenter
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

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

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

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

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

INF1300 Introduksjon til databaser

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

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

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.

INF1300 Introduksjon til databaser

Relasjoner terminologi

INF1300 Introduksjon til databaser: SQL Structured Query Language

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

SQL: Integritetsregler, triggere og views

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

Metaspråket for å beskrive grammatikk

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

Integritetsregler i SQL

Integritetsregler i SQL. Primærnøkler

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

Integritetsregler i SQL

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

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

Spørsmålskompilering del 1

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

Spørsmålskompilering del 1

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

Repetisjon: Normalformer og SQL

INF1300 Introduksjon til databaser

Datamodellering og databaser SQL, del 2

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

1. SQL datadefinisjon og manipulering

Datamodellering og databaser SQL, del 2

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

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

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

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

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

SQL 3: Opprette tabeller, datainnsetting og utsnitt

DBMS Database Management System (repetisjon) Programmeringsgrensesnitt. Serialiserbarhet

INF1300 Det meste av resten av

Relasjonsalgebraen. Algebra

SQL Structured Query Language

INF1300 Introduksjon til databaser

IN2090 Databaser og datamodellering. 08 Typer og skranker

Oppgaver Oppgave a: Sett opp mulige relasjoner

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

IN2090 Databaser og datamodellering. 08 Typer og skranker

Indre select-setninger Nestede select-setninger

Utvikling fra kjernen og ut

Spørsmålskompilering del 2

Utvikling fra kjernen og ut

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

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

IN2090 Databaser og datamodellering 07 Datamanipulering

ORDBMS og OODBMS i praksis

INF1300 Introduksjon til databaser

OQL Object Query Language

Oppgave 1 (Opprett en database og en tabell)

SQL: SELECT-spørringer

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

INF3100 V2018 Obligatorisk oppgave nr. 2

Utvikling fra kjernen og ut

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

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

SQL, del 1 - select. Hva er SQL?

Tilkobling og Triggere

IN2090 Databaser og datamodellering 07 Datamanipulering

EKSAMEN 6102 / 6102N DATABASER

SQL Introduksjonskurs. Oversikt

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

Bruke SQL fra Python. Med Psycopg2

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

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)

SQL Structured Query Language

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

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

Effektiv eksekvering av spørsmål

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

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

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

Effektiv eksekvering av spørsmål

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

EKSAMEN DATABASER

Andre sett obligatoriske oppgaver i INF3100 V2013

Spørsmålskompilering. Basert på foiler av Hector Garcia-Molina

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

Effektiv eksekvering av spørsmål

SQL, del 1 - select. Hva er SQL?

LC238D Datamodellering og databaser SQL, del 1 - SELECT

IN2090 Introduksjon til databaser

Transkript:

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 null Mulige tolkninger av null: Verdien fins, men er ukjent Verdi her har ingen mening Verdi fins, men er priviligert informasjon INF3100 7.2.2005 Ragnar Normann 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 Vi får ikke 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 7.2.2005 Ragnar Normann 3

Gruppering og aggregering med null null ignoreres i aggregeringer bortsett fra i count(*) null behandles som en ordinær verdi ved gruppering INF3100 7.2.2005 Ragnar Normann 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 INF3100 7.2.2005 Ragnar Normann 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 7.2.2005 Ragnar Normann 6

Relasjonssammenligninger II any og all brukes i praksis bare på relasjoner med ett attributt 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 sub-queriet INF3100 7.2.2005 Ragnar Normann 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 7.2.2005 Ragnar Normann 8

Relasjonssammenligninger IV exists (select * 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))) og får at vi kan uttrykke at P(t) holder for alle tupler t i R slik: not exists (select * from R where not P(R)) INF3100 7.2.2005 Ragnar Normann 9

Nestede select-setninger select-setninger kan nestes til vilkårlig dybde: Finn alle filmtitler som har vært brukt i to eller flere filmer. select title from Movie Old where year < any (select year from Movie where title = Old.title); INF3100 7.2.2005 Ragnar Normann 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 7.2.2005 Ragnar Normann 11

Kostbare operasjoner i SQL distinct: Sortering er generelt kostbart Bruk 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 7.2.2005 Ragnar Normann 12

SQLs DML insert: Innsetting av nye data update: Endring av eksisterende data delete: Sletting av data INF3100 7.2.2005 Ragnar Normann 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 select-setningen. Dette kan ha sideeffekter på beregningen av select-setningen INF3100 7.2.2005 Ragnar Normann 14

update, delete update R set A1=E1,.., Ak=Ek [where C]; delete from R [where C]; INF3100 7.2.2005 Ragnar Normann 15

Datatyper i SQL Datatype int, integer shortint real, float double precision decimal(n,d) char(n), varchar(n) bit(n), bit varying(n) boolean date time Forklaring Heltall (synonyme betegnelser) Heltall, mindre plasskrevende enn int Flyttall (synonyme betegnelser) Flyttall med høyere presisjon n desimale sifre, d etter desimalpunktum Tekst med henholdsvis fast og variabel lengde Bitstreng med henholdsvis fast og variabel lengde Boolesk verdi Dato Klokkeslett INF3100 7.2.2005 Ragnar Normann 16

SQLs DDL create: Opprette tabell drop: Fjerne tabell alter table: Endre tabell (legge til nye kolonner) INF3100 7.2.2005 Ragnar Normann 17

create create table R (A1 type_1 [skranke_1],... An type_n [skranke_n], [LISTE AV SKRANKER] ); INF3100 7.2.2005 Ragnar Normann 18

drop, alter drop table r alter table r add Ax Dy alter table r drop Ax r er et relasjonsnavn Ax er et attributt Dy er et domene INF3100 7.2.2005 Ragnar Normann 19

Indekser DBMS-relatert syntaks: create index X on R(A1,..,Ak); drop index X; Valg av indeks må gjøres med omhu: Eksistens speeder opp spørringer mot vedkommende attributt(er) Innsetting, sletting og oppdatering blir mer komplisert og tidkrevende INF3100 7.2.2005 Ragnar Normann 20

Vurdering av indeksbruk Anta at StarsIn(movieTitle, movieyear, starname) har størrelse 10 blokker Anta at det i middel er 3 stjerner i hver film, og at hver stjerne spiller i 3 filmer Q 1 : select movietitle, movieyear from StarsIn where starname=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 disk-aksesser Indeks: I Snitt: Ingen Q 1 10 4 10 4 Q 2 10 10 4 4 2 2+8p 1 +8p 2 starname 4 4+6p 2 movietitle 4 4+6p 1 Begge 6-2p 1-2p 2 INF3100 7.2.2005 Ragnar Normann 21 6

SQLs VDL create view VIEWNAVN as SELECT-SETNING; drop view VIEWNAVN; INF3100 7.2.2005 Ragnar Normann 22

Modifisering av viewdata Oppdaterbare views: Views hvor det er mulig å oversette modifikasjon på tupler i viewet til modifikasjoner på tupler i basisrelasjonene Forenklet: Et view er oppdaterbart hvis det er definert ved en select (ikke distinct) på attributter fra R (basisrelasjon eller oppdaterbart view) hvor where ikke involverer R i et subquery listen i select er fyldig nok til at vi kan etterfylle ikke angitte attributter med defaultverdier og slik konstruere et basistuppel som produserer det angitte viewtuppelet INF3100 7.2.2005 Ragnar Normann 23

SQLs DCL grant PRIVILEGIER on DATABASEELEMENT to BRUKERLISTE [with grant option] revoke PRIVILEGIER on DATABASEELEMENT from BRUKERLISTE INF3100 7.2.2005 Ragnar Normann 24