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

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

UNIVERSITETET 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 Introduksjon til databaser

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

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

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

INF1300 Introduksjon til databaser

SQL Structured Query Language

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 Structured Query Language

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

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

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

Relasjoner terminologi

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

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

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

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

SQL Structured Query Language

Relasjonsalgebraen. Algebra

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

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

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

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

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

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

Relasjoner terminologi

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

Spørsmålskompilering del 1

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

UNIVERSITETET. Relasjonsalgebra. INF Ragnhild Kobro Runde

INF1300 Det meste av resten av

Spørsmålskompilering del 1

INF1300 Introduksjon til databaser

Repetisjon: Normalformer og SQL

Integritetsregler i SQL

INF1300 Introduksjon til databaser

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

Metaspråket for å beskrive grammatikk

SQL: SELECT-spørringer

SQL, del 1 - select. Hva er SQL?

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

SQL: SELECT-spørringer

Effektiv eksekvering av spørsmål

Indre select-setninger Nestede select-setninger

SQL: Integritetsregler, triggere og views

Databaser fra et logikkperspektiv

Informasjonssystemer, DBMSer og databaser

INF212 - Databaseteori. Kursinnhold

SQL, del 1 - select. Hva er SQL?

LC238D Datamodellering og databaser SQL, del 1 - SELECT

1. SQL datadefinisjon og manipulering

Spørsmålskompilering del 2

IN2090 Databaser og datamodellering 07 Datamanipulering

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

Effektiv eksekvering av spørsmål

Relasjonsalgebra. Hva?

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. Definere tabeller Skranker Fylle tabeller med data

INF3100 Databasesystemer

INF1300 Introduksjon til databaser

Effektiv eksekvering av spørsmål

Tabeller og enkle spørringer

1. SQL spørringer mot flere tabeller

UNIVERSITETET I OSLO. Oppskriftsbok. FDer og MVDer Relasjonsalgebra. Institutt for Informatikk. INF3100 Ellen Munthe-Kaas 1

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

Andre sett obligatoriske oppgaver iinf3100v2011

Oppskriftsbok. FDer og MVDer - oversikt: se s. 3 Relasjonsalgebra - oversikt: se s. 45

INF1300 Introduksjon til databaser

DBS18 - Strategier for Query-prosessering

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

Utvikling fra kjernen og ut

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

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

UNIVERSITETET I OSLO

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

Effektiv eksekvering av spørsmål

Databasesystemer, oversikt

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

Spørsmålskompilering

INF1300 Introduksjon til databaser

INF3100 Databasesystemer

OQL Object Query Language

INF 329: Web-Teknologier. Dataimplementasjon. Fra Kapittel 11 i «Designing Data-Intensive Web Applications» Presentasjonsdato: 17/10/2004

Integritetsregler i SQL

Databaser: Relasjonsmodellen, del I

Introduksjon til fagfeltet

Integritetsregler i SQL. Primærnøkler

INF1300 Introduksjon til databaser

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

Transkript:

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 for spørringer mot relasjonsdatabaser Uttrykkskraften er omtrent som den i relasjonsalgebraen utvidet med tilleggs-operatorene SQL inneholder også konstruksjoner for å definere nye relasjonsdatabaser, for å legge inn og endre data i databasen, mm En referanse til PostgreSQL er http://www.postgresql.org/docs/8.2/interactive/ INF3100 5.2.2008 Ellen Munthe-Kaas 2

Hvordan uttale «SQL» På norsk uttaler vi SQL bokstav for bokstav: «ess ku ell» På engelsk uttales SQL «si:kwel» Årsaken er historisk: SQL ble utviklet av IBM, og prototypen het SEQUEL et akronym for «Structured English QUEry Language» Da SEQUEL ble lansert som et produkt i 1976, ble navnet forkortet til SQL, men uttalen ble beholdt og har overlevd til nå INF3100 5.2.2008 Ellen Munthe-Kaas 3

SQL-standarder Flere standarder: ANSI SQL (1986) SQL2 (SQL-92) SQL3 (SQL:1999) = SQL2 + objekt-relasjonelle egenskaper mm Mange dialekter: Hvert DBMS har sine særegenheter Alle oppfyller ANSI SQL, stort sett også SQL2 Noen deler av SQL er ikke veldefinert (selv ikke i ANSI SQL) og behandles derfor potensielt forskjellig i forskjellige DBMSer INF3100 5.2.2008 Ellen Munthe-Kaas 4

SQLs bestanddeler SQL består av en samling konstruksjoner som funksjonelt, men ikke syntaktisk, kan deles opp slik: SDL: Storage Definition Language 3-skjema-arkitekturens fysiske lag DDL: Data Definition Language 3-skjemaarkitekturens konseptuelle lag VDL: View Definition Language 3-skjemaarkitekturens presentasjonslag DML: Data Manipulation Language innlegging, endring og sletting av data DQL: Data Query Language - spørrespråk DCL: Data Control Language integritet og sikkerhet INF3100 5.2.2008 Ellen Munthe-Kaas 5

3-skjemaarkitekturen for databaser (repetisjon) Presentasjonslaget beskrevet med eksterne skjemaer («views») hvordan informasjon skal presenteres for ulike brukere Det konseptuelle (eller logiske) laget beskrevet i det begrepsmessige skjemaet hva som kan lagres og hva som er lovlige forandringer Det fysiske laget beskrevet i det interne skjemaet hvordan informasjon lagres, forandres og bearbeides INF3100 5.2.2008 Ellen Munthe-Kaas 6

SQLs DQL select [distinct] ATTRIBUTTLISTE from NAVNELISTE [where WHERE-BETINGELSE] [group by GRUPPERINGSATTRIBUTTER [having HAVING-BETINGELSE] ] [order by ATTRIBUTT [asc desc] [, ATTRIBUTT [asc desc] ]... ]; [ ] betyr at dette leddet er en valgfri del av setningen betyr at leddet kan gjentas vilkårlig mange ganger INF3100 5.2.2008 Ellen Munthe-Kaas 7

Select-setningen Typisk utseende: select [distinct] a 1, a 2,..., a j from r 1, r 2,..., r k where C; hvor r 1, r 2,..., r k er relasjonsnavn a 1,...,a j er attributter fra r 1, r 2,..., r k C er en betingelse Essensielt uttrykker konstruksjonen det samme som relasjonsalgebrauttrykket π a1,a2,...,aj (σ C (r 1 r 2... r k )) INF3100 5.2.2008 Ellen Munthe-Kaas 8

Select-setningens enkeltdeler I select Angir hvilke attributter som skal vises i svaret (også aggregeringsinformasjon) distinct Fjerner flerforekomster (duplikater) av svartuplene from Navn på de relasjonene spørringen refererer til where Seleksjonsbetingelse (kan inneholde en eller flere join-betingelser) INF3100 5.2.2008 Ellen Munthe-Kaas 9

Select-setningens enkeltdeler II group by Angir grupperingsattributter til bruk ved aggregering having Angir en betingelse på resultatet av grupperingen; velger ut noen av gruppene Kan aggregere som del av utvelgelsesprosessen order by Ordner tuplene i henhold til angitte kriterier INF3100 5.2.2008 Ellen Munthe-Kaas 10

Tuppelvariabeltolkning av select-setningen 1. Tilordne en variabel til hver relasjon i from Variablene kalles tuppelvariable 2. La hver tuppelvariabel systematisk gjennomløpe tuplene i den tilhørende relasjonen (f.eks. ved nestede løkker, en for hver tuppelvariabel) Plukk ut de tuplene der where-betingelsen holder 3. Grupper de utvalgte tuplene i henhold til grupperingsattributtene i group by Velg ut de gruppene som oppfyller betingelsen i having 4. Aggreger og velg ut attributter for fremvisning i henhold til beskrivelsen i select Hvis select distinct, fjern flerforekomster (duplikater) fra resultattuplene 5. Sorter som beskrevet av order by INF3100 5.2.2008 Ellen Munthe-Kaas 11

Relasjonsalgebratolkning av select-setningen 1. Ta det kartesiske produktet av relasjonene i from 2. Selekter ifølge betingelsen i where 3. Grupper i henhold til beskrivelsen i group by 4. Velg ut grupper ifølge betingelsen i having 5. Lag en liste av uttrykk for (utvidet) projeksjon og aggregering ifølge select 6. Fjern flerforekomster hvis select distinct 7. Sorter i henhold til order by INF3100 5.2.2008 Ellen Munthe-Kaas 12

Relasjonsalgebratolkning av select-setningen II Hvis vi ser nøyere på vanlige select-setninger, er det ofte to vesensforskjellige typer setningsledd i where-klausulen: Seleksjon av tupler i en relasjon Join av tupler på tvers av relasjoner Selv om den forenklede tolkningen av selectsetningen er riktig matematisk sett, vil databasesystemet velge en tolkning som er mer effektivt beregnbar INF3100 5.2.2008 Ellen Munthe-Kaas 13

Relasjonsalgebratolkning av selectsetningen II (forts.) Derfor vil databasesystemet oversette til et uttrykk som likner det vi får ved å gjøre følgende: 1. Join relasjonene i from i henhold til joinbetingelsene i where 2. Selekter ifølge seleksjonsbetingelsene i where 3. Grupper i henhold til beskrivelsen i group by 4. Velg ut grupper ifølge betingelsen i having 5. Lag en liste av uttrykk for (utvidet) projeksjon og aggregering ifølge select 6. Fjern flerforekomster hvis select distinct 7. Sorter i henhold til order by INF3100 5.2.2008 Ellen Munthe-Kaas 14

Merknader til SQL SQL skiller ikke mellom store og små bokstaver, unntatt i tekststrenger SQL beregner bager (med unntak av noen av operatorene) INF3100 5.2.2008 Ellen Munthe-Kaas 15

Klassiske operatorer fra relasjonsalgebraen uttrykt i SQL I Algebra R S R S R-S R S SQL select * from R union select * from S; select * from R intersect select * from S; select * from R except select * from S; select * from R cross join S; select * from R, S; Husk krav om unionkompatibilitet for R og S i union, intersect, except! INF3100 5.2.2008 Ellen Munthe-Kaas 16

Klassiske operatorer fra relasjonsalgebraen uttrykt i SQL II Algebra σ C (R) π L (R) R C S R S SQL select * from R where C; select distinct L from R; select * from R join S on C; select * from R natural join S; INF3100 5.2.2008 Ellen Munthe-Kaas 17

Klassiske operatorer fra relasjonsalgebraen uttrykt i SQL - III Algebra ρ S (R) ρ S(B1,...,Bn) (R) SQL select * from R as S; select A1 as B1,..., An as Bn from R as S; INF3100 5.2.2008 Ellen Munthe-Kaas 18

Bagoperatorer fra relasjonsalgebraen uttrykt i SQL Algebra R S R S R S π L (R) resten SQL select * from R union all select * from S; select * from R intersect all select * from S; select * from R except all select * from S; select L from R; som for klassisk SQL INF3100 5.2.2008 Ellen Munthe-Kaas 19

Tilleggsoperatorer fra relasjonsalgebraen uttrykt i SQL Algebra δ(r) γ L (R) τ L (R) R o S R o LS o R C S SQL select distinct * from R; select L from R group by <grupperingsattributtene i L>; select * from R order by L; select * from R natural full outer join S; select * from R natural left outer join S; select * from R full outer join S on C; INF3100 5.2.2008 Ellen Munthe-Kaas 20

Gruppering I Gruppering er å uttrykke relasjonsoperatoren γ L (R) i SQL Grupperingsattributtene fra L plasseres i group by-klausulen Både grupperingsattributter og aggregeringsuttrykk fra L plasseres i select-klausulen INF3100 5.2.2008 Ellen Munthe-Kaas 21

Gruppering II Aggregeringer i select tar formen agg(a), eventuelt agg(a) as B for å navngi resultatattributtet hvor agg er en av aggregeringsoperatorene sum, avg, max, min, count Eks: sum(a), count(a) Andre former: count(*), agg(distinct A) I en select med aggregeringer kan bare attributter nevnt i group by forekomme uaggregert i select-klausulen INF3100 5.2.2008 Ellen Munthe-Kaas 22

Gruppering med having-klausul Klausulen i having er en betingelse (et Boolsk uttrykk) satt sammen av attributter fra relasjonene i from Aggregering i having anvendes på gruppene dannet i henhold til tilhørende group by-klausul Bare attributtene i group by kan forekomme uaggregert i having Virkemåte: Etter gruppering beregnes betingelsen for hver enkelt gruppe som et hele Bare de gruppene som oppfyller betingelsen, tas med i den videre beregningen INF3100 5.2.2008 Ellen Munthe-Kaas 23

Uttrykk i betingelser I where-betingelsen er et boolsk uttrykk hvor atomene har en av følgende former: Verdisammenlikning: P op Q P og Q må ha samme domene, minst en av dem må være et attributt, den andre kan være en konstant op {=, <, >, <=, >=, <>, like} null-test: P is null eller P is not null Relasjonssammenlikning: exists, in, all, any (Disse tar vi for oss i neste forelesning) INF3100 5.2.2008 Ellen Munthe-Kaas 24

Uttrykk i betingelser II Spesialregler for sammenlikning av strenger : Leksikografisk ordning: s<t, s>t, s<=t, s>=t Sammenlikning: s=t, s<>t Mønstergjenkjenning: s like p p er et mønster hvor % matcher en vilkårlig sekvens (null eller flere tegn) _ matcher ett vilkårlig tegn INF3100 5.2.2008 Ellen Munthe-Kaas 25

Uttrykk i betingelser III Datoer og tidspunkter: Dato: date yyyy-mm-dd Tidspunkt: time hh:mm:ss Tidspunkt med finere gradering enn sekund: time hh:mm:ss.ccc... Tidspunkt før GMT: time hh:mm:ss+h:mm Tidspunkt etter GMT: time hh:mm:ss-h:mm Dato og tid: timestamp yyyy-mm-dd hh:mm:ss INF3100 5.2.2008 Ellen Munthe-Kaas 26

Navnekonflikter Kvalifiser attributter med relasjonsnavn: R.A Navngi relasjoner med aliaser:...from R as S... (as kan sløyfes) S blir en kopi av R med nytt relasjonsnavn Gi attributter nytt navn: select A as B from... A renavnes til B i resultatrelasjonen INF3100 5.2.2008 Ellen Munthe-Kaas 27

Øvingsoppgave 1 Skjema: Prosjekt(P#,Pnavn,Kunde,Pleder,StartDato) Ansatt(A#,Navn,Tittel,Fdato,Pnr,AnsDato) Timeliste(A#,Dato,P#,Timer) Kunde(K#,Knavn,Adresse) Oppgave: Finn navn og tittel på alle som har arbeidet på prosjektet Vintersalg INF3100 5.2.2008 Ellen Munthe-Kaas 28

Øvingsoppgave 1 Skjema: Prosjekt(P#,Pnavn,Kunde,Pleder,StartDato) Ansatt(A#,Navn,Tittel,Fdato,Pnr,AnsDato) Timeliste(A#,Dato,P#,Timer) Kunde(K#,Knavn,Adresse) Løsning 1: select distinct Navn, Tittel from Ansatt A, Timeliste T, Prosjekt P where Pnavn = Vintersalg and P.P# = T.P# and T.A# = A.A# INF3100 5.2.2008 Ellen Munthe-Kaas 29

Øvingsoppgave 1 Skjema: Prosjekt(P#,Pnavn,Kunde,Pleder,StartDato) Ansatt(A#,Navn,Tittel,Fdato,Pnr,AnsDato) Timeliste(A#,Dato,P#,Timer) Kunde(K#,Knavn,Adresse) Løsning 2: select distinct Navn, Tittel from (Ansatt natural join Timeliste) natural join Prosjekt where Pnavn = Vintersalg INF3100 5.2.2008 Ellen Munthe-Kaas 30

Øvingsoppgave 2 Skjema: Prosjekt(P#,Pnavn,Kunde,Pleder,StartDato) Ansatt(A#,Navn,Tittel,Fdato,Pnr,AnsDato) Timeliste(A#,Dato,P#,Timer) Kunde(K#,Knavn,Adresse) Oppgave: Finn navn på alle som har arbeidet på et prosjekt ledet av Else Brun, og sorter dem etter stigende ansiennitet INF3100 5.2.2008 Ellen Munthe-Kaas 31

Øvingsoppgave 2 Prosjekt(P#,Pnavn,Kunde,Pleder,StartDato) Ansatt(A#,Navn,Tittel,Fdato,Pnr,AnsDato) Timeliste(A#,Dato,P#,Timer) Løsning: select distinct A.Navn, A.Ansdato from Ansatt A, Ansatt PL, Timeliste T, Prosjekt P where PL.navn = Else Brun and PL.A# = P.Pleder and P.P# = T.P# and T.A# = A.A# order by A.Ansdato desc INF3100 5.2.2008 Ellen Munthe-Kaas 32

Flere oppgaver. finner dere i læreboken og på http://www.sqlzoo.net/ (der er det løsningsforslag også ) INF3100 5.2.2008 Ellen Munthe-Kaas 33