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

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) 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 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

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

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

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser: SQL Structured Query Language. En første introduksjon Lysark til forelesning mandag 14.

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

Relasjoner terminologi

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

INF1300 Introduksjon til databaser

SQL Structured Query Language

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

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

Relasjonsalgebraen. Algebra

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

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

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

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

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 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 Ellen Munthe-Kaas 1

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

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

Relasjoner terminologi

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

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

INF1300 Det meste av resten av

UNIVERSITETET. Relasjonsalgebra. INF Ragnhild Kobro Runde

INF1300 Introduksjon til databaser

Spørsmålskompilering del 1

Repetisjon: Normalformer og SQL

Spørsmålskompilering del 1

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

Indre select-setninger Nestede select-setninger

SQL, del 1 - select. Hva er SQL?

Integritetsregler i SQL

LC238D Datamodellering og databaser SQL, del 1 - SELECT

IN2090 Databaser og datamodellering 07 Datamanipulering

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

SQL: SELECT-spørringer

Informasjonssystemer, DBMSer og databaser

INF1300 Introduksjon til databaser

INF3100 Databasesystemer

INF3100 Databasesystemer

INF212 - Databaseteori. Kursinnhold

Integritetsregler i SQL. Primærnøkler

Utvikling fra kjernen og ut

OQL Object Query Language

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

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

Databaser fra et logikkperspektiv

Relasjonsalgebra. Hva?

1. SQL spørringer mot flere tabeller

DBS18 - Strategier for Query-prosessering

Tabeller og enkle spørringer

1. SQL datadefinisjon og manipulering

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

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

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

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

Effektiv eksekvering av spørsmål

Effektiv eksekvering av spørsmål

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

Integritetsregler i SQL

SQL Introduksjonskurs. Oversikt

IN2090 Databaser og datamodellering 07 Datamanipulering

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

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

Spørsmålskompilering del 2

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

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

Databases 1. Extended Relational Algebra

IN2090 Introduksjon til databaser

Effektiv eksekvering av spørsmål

IN2090 Databaser og datamodellering. 09 Aggregering og sortering

IN2090 Databaser og datamodellering. 06 Enkele joins og nestede SELECT

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

Andre sett obligatoriske oppgaver iinf3100v2011

INF1300 Introduksjon til databaser

Spørringer mot flere tabeller

IN2090 Databaser og datamodellering. 09 Aggregering og sortering

Transkript:

UNIVERSITETET I OSLO SQL Structured Query Language (The intergalactic dataspeak) Institutt for Informatikk INF3100 1.2.2005 Ragnar Normann 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 1.2.2005 Ragnar Normann 2

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 1.2.2005 Ragnar Normann 3

SQLs bestanddeler SQL består av en samling konstruksjoner som 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 1.2.2005 Ragnar Normann 4

3-skjemaarkitekturen for databaser (repetisjon) Presentasjonslaget beskrevet med eksterne skjemaer (eller 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 1.2.2005 Ragnar Normann 5

SQLs DQL select [distinct] ATTRIBUTTLISTE from NAVNELISTE [where WHERE-BETINGELSE] [group by GRUPPERINGSATTRIBUTTER [having HAVING-BETINGELSE] ] [order by ATTRIBUTT [asc desc] [, ATTRIBUTT [asc desc] ]... ]; INF3100 1.2.2005 Ragnar Normann 6

Select-setningen Typisk utseende: select a1, a2,..., aj from r1, r2,..., rk where C; hvor r1, r2,..., rk er relasjonsnavn a1,...,aj er attributter fra r1, r2,..., rk C er en betingelse Essensielt uttrykker konstruksjonen det samme som relasjonsalgebrauttrykket a1,a2,...,aj ( C (r1 r2... rk)) INF3100 1.2.2005 Ragnar Normann 7

Select-setningens enkeltdeler [ ] angir at en konstruksjon er en valgfri del av setningen from: Navn på de relasjonene spørringen refererer til where: Seleksjonsbetingelse select: Hvilke attributter som skal vises i svaret (også aggregeringsinformasjon) distinct: Fjerner flerforekomster (duplikater) av tuplene 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 1.2.2005 Ragnar Normann 8

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) av resultattuplene 5. Sorter som beskrevet av order by INF3100 1.2.2005 Ragnar Normann 9

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 1.2.2005 Ragnar Normann 10

Merknader SQL SQL skiller ikke mellom store og små bokstaver, unntatt i tekststrenger SQL beregner bager (med unntak av noen av operatorene) INF3100 1.2.2005 Ragnar Normann 11

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 1.2.2005 Ragnar Normann 12

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 1.2.2005 Ragnar Normann 13

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 1.2.2005 Ragnar Normann 14

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 INF3100 1.2.2005 Ragnar Normann 15

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 R natural full outer join S R natural left outer join S R full outer join S on C INF3100 1.2.2005 Ragnar Normann 16

Gruppering Hvis L (R) skal representeres i SQL, plasseres grupperingsattributtene fra L i group by-klausulen og både grupperingsattributter og aggregeringsuttrykk fra L i select-klausulen 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 select med aggregeringer kan bare attributtene nevnt i group by forekomme uaggregert i select-klausulen INF3100 1.2.2005 Ragnar Normann 17

Gruppering med having-klausul Klausulen i having er en betingelse (et Boolesk 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 1.2.2005 Ragnar Normann 18

Uttrykk i betingelser I where-betingelsen er et boolesk uttrykk hvor atomene har en av følgende former: Verdisammenlikning: P op Q op {=,<,>,<=,>=,<>, like} (like er bare lov for strenger) P og Q har samme domene, minst en av dem er et attributt, den andre kan være en konstant null-test: P is null eller P is not null Relasjonssammenlikning: exists, in, all, any (Disse kommer vi tilbake til) INF3100 1.2.2005 Ragnar Normann 19

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 1.2.2005 Ragnar Normann 20

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 1.2.2005 Ragnar Normann 21

Navnekonflikter Kvalifiser attributt med relasjonsnavn: R.A Navngi relasjoner med aliaser:...from R as S... (as kan sløyfes) S er en kopi av R med nytt relasjonsnavn Omnavn attributter: select A as B from... A renavnes til B i resultatrelasjonen INF3100 1.2.2005 Ragnar Normann 22