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

Like dokumenter
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) INF Ellen Munthe-Kaas 1. Institutt for Informatikk

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

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

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

INF1300 Introduksjon til databaser

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

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

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

Relasjonsalgebraen. Algebra

SQL Structured Query Language

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

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

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

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

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

UNIVERSITETET RELASJONSALGEBRA. Regning g med relasjoner. 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. (forts.) Institutt for Informatikk. INF Ragnar Normann 1

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

Relasjoner terminologi

Spørsmålskompilering del 1

UNIVERSITETET. Relasjonsalgebra. INF Ragnhild Kobro Runde

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

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

INF1300 Introduksjon til databaser

INF1300 Det meste av resten av

Spørsmålskompilering del 1

Repetisjon: Normalformer og SQL

Integritetsregler i SQL

INF1300 Introduksjon til databaser

SQL: SELECT-spørringer

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

SQL, del 1 - select. Hva er SQL?

Metaspråket for å beskrive grammatikk

SQL: SELECT-spørringer

SQL: Integritetsregler, triggere og views

Effektiv eksekvering av spørsmål

SQL, del 1 - select. Hva er SQL?

LC238D Datamodellering og databaser SQL, del 1 - SELECT

Indre select-setninger Nestede select-setninger

Informasjonssystemer, DBMSer og databaser

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

INF212 - Databaseteori. Kursinnhold

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

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

Effektiv eksekvering av spørsmål

Spørsmålskompilering del 2

Databaser fra et logikkperspektiv

Relasjonsalgebra. Hva?

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

IN2090 Databaser og datamodellering 07 Datamanipulering

INF1300 Introduksjon til databaser

Effektiv eksekvering av spørsmål

INF3100 Databasesystemer

Tabeller og enkle spørringer

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

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

1. SQL spørringer mot flere tabeller

Utvikling fra kjernen og ut

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

INF1300 Introduksjon til databaser

Andre sett obligatoriske oppgaver iinf3100v2011

1. SQL datadefinisjon og manipulering

OQL Object Query Language

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

Effektiv eksekvering av spørsmål

Integritetsregler i SQL

DBS18 - Strategier for Query-prosessering

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

Spørsmålskompilering

Integritetsregler i SQL. Primærnøkler

INF1300 Introduksjon til databaser

INF3100 Databasesystemer

For alle ikke-trivielle FDer X A i R: eller A er et nøkkelattributt i R eller X K for noen kandidatnøkkel K i R

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

Problemer med Indre joins. Inner joins og manglende verdier med aggregater. Left Outer Join. Outer Joins. Hvor mange har kjøpt hvert produkt?

IN2090 Databaser og datamodellering. 06 Enkele joins og nestede SELECT

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

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

IN2090 Introduksjon til databaser

UNIVERSITETET I OSLO

INF1300 Introduksjon til databaser

Transkript:

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 for spørringer mot relasjonsdatabaser Uttrykkskraften er omtrent som den i relasjonsalgebraen utvidet med tilleggsoperatorene SQL inneholder også konstruksjoner for å definere nye relasjonsdatabaser, for å legge inn og endre data i databasen, mm INF3100 6.2.2005 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 6.2.2005 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 6.2.2005 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 6.2.2005 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 6.2.2005 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 6.2.2005 Ellen Munthe-Kaas 7

Select-setningen Typisk utseende: select 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 6.2.2005 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 6.2.2005 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 6.2.2005 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 6.2.2005 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 6.2.2005 Ellen Munthe-Kaas 12

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

Klassiske operatorer fra relasjonsalgebraen uttrykt i SQL I Algebra R S R S R S R S SQL R union S R intersect S R except S R cross join S INF3100 6.2.2005 Ellen Munthe-Kaas 14

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 R join S on C R natural join S INF3100 6.2.2005 Ellen Munthe-Kaas 15

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 6.2.2005 Ellen Munthe-Kaas 16

Bagoperatorer fra relasjonsalgebraen uttrykt i SQL Algebra R S R S R S π L (R) andre SQL R union all S R intersect all S R except all S select L from R som for klassisk SQL INF3100 6.2.2005 Ellen Munthe-Kaas 17

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

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 6.2.2005 Ellen Munthe-Kaas 19

Gruppering II Aggregeringer i select tar formen agg(a), eventuelt agg(a) as B for å navngi resultatattributtet (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 6.2.2005 Ellen Munthe-Kaas 20

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 6.2.2005 Ellen Munthe-Kaas 21

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} (like er bare lov når Q er en konstant tekststreng) null-test: P is null eller P is not null Relasjonssammenlikning: exists, in, all, any (Disse tar vi for oss i neste forelesning) INF3100 6.2.2005 Ellen Munthe-Kaas 22

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 6.2.2005 Ellen Munthe-Kaas 23

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 6.2.2005 Ellen Munthe-Kaas 24

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 6.2.2005 Ellen Munthe-Kaas 25

Ø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 6.2.2005 Ellen Munthe-Kaas 26

Ø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 6.2.2005 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) Løsning 2: select distinct Navn, Tittel from (Ansatt natural join Timeliste) natural join Prosjekt where Pnavn = Vintersalg INF3100 6.2.2005 Ellen Munthe-Kaas 28

Ø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 6.2.2005 Ellen Munthe-Kaas 29

Ø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 6.2.2005 Ellen Munthe-Kaas 30

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