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

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

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

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

INF1300 Introduksjon til databaser

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

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

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

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

Relasjonsalgebraen. Algebra

Indre select-setninger Nestede select-setninger

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

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

INF1300 Det meste av resten av

UNIVERSITETET. Relasjonsalgebra. INF Ragnhild Kobro Runde

Relasjoner terminologi

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

Repetisjon: Normalformer og SQL

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

INF1300 Introduksjon til databaser

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

UNIVERSITETET I OSLO

Notater: INF1300. Veronika Heimsbakk 8. januar 2013

SQL Structured Query Language

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

1. SQL spørringer mot flere tabeller

SQL for INF1300. Stein Michael Storleer 7. november 2014

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

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

INF1300 Introduksjon til databaser

SQL for INF1300. Stein Michael Storleer 21. september 2015

SQL Structured Query Language

Løsningsforslag uke 9 INF212 - Våren 2002 Jørgen Hermanrud Fjeld with precious assistance from Marte Arnestad Harald Askestad Kai-

SQL for INF1300. Stein Michael Storleer 15. september 2016

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

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

DBS18 - Strategier for Query-prosessering

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

Metaspråket for å beskrive grammatikk

Spørsmålskompilering del 1

Spørsmålskompilering del 1

SQL Structured Query Language

Emnenavn: Ny/utsatt eksamen. Eksamenstid: Faglærer: Edgar Bostrøm. Erik Åsberg. Davide Roverso

Relasjonsalgebra. Hva?

SQL: Repe)sjon og eksempler Deniz Akkøk Mathias Stang

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

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

SQL: SELECT-spørringer

Unit Relational Algebra 1 1. Relational Algebra 1. Unit 3.3

Relasjoner terminologi

Kravspesifikasjon eksamen - personlig

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

INF1300 Introduksjon til databaser

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

Oppgave 1 Datamodellering 22 %

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

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

INF1300 Introduksjon til databaser

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

Integritetsregler i SQL. Primærnøkler

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.

Integritetsregler i SQL

Integritetsregler i SQL

SQL, del 1 - select. Hva er SQL?

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

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

LC238D Datamodellering og databaser SQL, del 1 - SELECT

Løsningsforslag maskindatabasen på Ifi SQL og normalisering

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

Spørringer mot flere tabeller

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

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

INF1300 Introduksjon til databaser

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

1. SQL datadefinisjon og manipulering

SQL, del 1 - select. Hva er SQL?

SQL: SELECT-spørringer

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

Løsningsforslag eksamen i IN

Oppgave 1 1. Spørring: Resultattabell: 2. Spørring: Resultattabell: 3. Spørring:

IN3020 V2019 Obligatorisk oppgave nr. 1

Bruke SQL fra Python. Med Psycopg2

SQL Introduksjonskurs. Oversikt

Systemutvikling fra kjernen og ut, fra skallet og inn

Spørsmålskompilering del 2

Databases 1. Extended Relational Algebra

Avansert bruk av SQL. Avanserte spørringer Valguttrykk Spørring på spørring Unionspørringer Delspørringer, vekselvirkende delspørringer Kvantorer

Andre sett obligatoriske oppgaver i INF3100 V2013

IN2090 Databaser og datamodellering. 06 Enkele joins og nestede SELECT

SQL: Integritetsregler, triggere og views

Transkript:

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

Join Bistro bn mkat A kosher A vegetabilsk B uten melk B hallal B glutenfri B kosher C glutenfri C hallal C kosher D vegetabilsk Krav navn mkat Ali hallal Liv kosher Lise kosher Geir glutenfri Bistro C Krav bn Bistro.mkat navn Krav.mkat B hallal Ali hallal C hallal Ali hallal A kosher Liv kosher B kosher Liv kosher C kosher Liv kosher A kosher Lise kosher B kosher Lise kosher C kosher Lise kosher B glutenfri Geir glutenfri C glutenfri Geir glutenfri C: Bistro.mkat = Krav.mkat

Naturlig join R Ser relasjonen som fås fra R og S ved å danne alle mulige sammensmeltinger av ett tuppel fra R med ett fra S der tuplene skal stemme overens i samtlige attributter med sammenfallende navn Fellesattributtene forekommer bare én gang i de sammensmeltede attributtene Resultatskjemaet har attributtene i R etterfulgt av de attributtene i S som ikke også forekommer i R

Naturlig join Bistro bn A A B B B B C C C D mkat kosher vegetabilsk uten melk hallal glutenfri kosher glutenfri hallal kosher vegetabilsk Krav navn Ali Liv Lise Geir mkat hallal kosher kosher glutenfri Bistro Krav bn mkat navn B hallal Ali C hallal Ali A kosher Liv B kosher Liv C kosher Liv A kosher Lise B kosher Lise C kosher Lise B glutenfri Geir C glutenfri Geir

Denne bruker lang t i d : select ( fp. filmid ) from filmparticipation fp, filmparticipation x where fp. filmid = x. filmid and fp. filmid not in ( select y. filmid from filmparticipation y where fp. filmid = y. filmid and y. parttype = director ) ; 32227986

Denne er riktigere : fdb=> select ( distinct filmid ) fdb > from filmparticipation fp fdb > natural join filmitem f i fdb > where filmtype = C fdb > and not exists fdb > ( select filmid fdb( > from filmparticipation x fdb( > where fp. filmid = x. filmid fdb(> and x. parttype = director ) ; 31157

antall filmer i filmparticipation som har regissør select ( distinct filmid ) from filmparticipation fp natural join filmitem f i where filmtype = C and exists ( select filmid from filmparticipation x where fp. filmid = x. filmid and x. parttype = director ) ; 330490

antall filmer i filmparticipation som ikke har regissør select ( distinct filmid ) from filmparticipation fp natural join filmitem f i where filmtype = C and not exists ( select filmid from filmparticipation x where fp. filmid = x. filmid and x. parttype = director ) ; 31157

filmer med i Filmparticipation select ( distinct filmid ) hvorfor d i s t i n c t? from filmparticipation fp ; 934752 uten d i s t i n c t : 10835351

filmer med i Film select ( distinct filmid ) hvorfor d i s t i n c t? from film ; 692361

antall filmer i filmparticipation som ikke finnes i film select ( distinct filmid ) from filmparticipation fp where filmid not in ( select filmid from film ) ; svært tidkrevende hvorfor? denne er bedre antall filmer i filmparticipation som ikke finnes i film select ( distinct filmid ) from filmparticipation fp where not exists ( select f. filmid from film f where fp. filmid = f. filmid ) ; 455223

filmer i Film som ikke er i Filmparticipation select ( distinct filmid ) from film f where not exists ( select f. filmid from filmparticipation fp where fp. filmid = f. filmid ) ; 212832

filmer med i begge select ( distinct filmid ) from film natural join filmparticipation ; 479529

Hengetupler Når vi joiner to tabeller, kaller vi et tuppel som ikke har noen match i den andre relasjonen, et hengetuppel Hengetupler blir ikke med i resultatet av en (vanlig) join, også kalt en inner join Hvis vi ønsker å gjøre en join hvor vi beholder hengetuplene fra en eller begge tabellene, bruker vi en outer join

Hengetupler Et hengetuppel er et tuppel i en av relasjonene som ikke har noe matchende tuppel i den andre relasjonen Hengetupler får ingen representant i resultatrelasjonen etter en join

Hengetupler Bistro bn A A B B B B C C C D mkat kosher vegetabilsk uten melk hallal glutenfri kosher glutenfri hallal kosher vegetabilsk Krav navn Ali Liv Lise Geir mkat hallal kosher kosher glutenfri Hengetupler satt med grå typer i Bistro-relasjonen Bistro Krav bn mkat navn B hallal Ali C hallal Ali A kosher Liv B kosher Liv C kosher Liv A kosher Lise B kosher Lise C kosher Lise B glutenfri Geir C glutenfri Geir

Left outer join Syntaks for en left outer join er slik: select <svar attributter > from tabell 1 left outer join tabell 2 on join betingelse ; Resultatet blir en join av tabell-1 og tabell-2, pluss en linje for hvert hengetuppel i tabell-1 der alle svar-attributtene fra tabell-2 er null Eventuelle hengetupler fra tabell-2 blir ikke med i resultatet

select ( distinct f. filmid ) from film f left outer join filmparticipation p on f. filmid = p. filmid ; 692361

antall filmer som kun er i Film select ( f. filmid ) from film f left outer join filmparticipation p on f. filmid = p. filmid where p. filmid is NULL; 212832

select ( x. * ) from ( ( select filmid from film ) except ( select distinct filmid from filmparticipation ) ) as x ; 212832

Right outer join Syntaks for en right outer join er slik: select <svar attributter > from tabell 1 right outer join tabell 2 on join betingelse ; Resultatet blir en join av tabell-1 og tabell-2, pluss en linje for hvert hengetuppel i tabell-2 der alle svar-attributtene fra tabell-1 er null Eventuelle hengetupler fra tabell-1 blir ikke med i resultatet

select ( distinct p. filmid ) from film f right outer join filmparticipation p on f. filmid = p. filmid ; 934752 pass på kvalifikasjonen bak d i s t i n c t. Ikke likegyldig om p. e l

antall filmer som kun er i Filmparticipation select ( distinct p. filmid ) from film f right outer join filmparticipation p on f. filmid = p. filmid where f. filmid IS NULL; 455223

Full outer join Syntaks for en full outer join er slik: select <svar attributter > from tabell 1 full outer join tabell 2 on join betingelse ; Resultatet blir en join av tabell-1 og tabell-2, pluss en linje for hvert hengetuppel i tabell-1 der alle svar-attributtene fra tabell-2 er null og en linje for hvert hengetuppel i tabell-2 der alle svar-attributtene fra tabell-1 er null

select ( distinct p. filmid ) + ( distinct from film f full outer join filmparticipation p on f. filmid = p. filmid ; f. filmid ) as ant antall 1627113 dette er for mange, vi har få t t med s n i t t e t to ganger, så trek filmer med i begge select ( distinct filmid ) from film natural join filmparticipation ; 479529 1627113 479529 = 1147584

antall filmer som er med i en av tabellene, men ikke i begge select ( distinct x. * ) from ( ( ( select filmid from film ) union ( select distinct filmid from filmparticipation ) ) except ( select distinct filmid from film natural join filmparticipation ) ) as x ; 668055 (1147584 668055 = 479529 )

antall filmid med i en, men ikke i begge select ( distinct p. filmid ) + ( distinct from film f full outer join filmparticipation p on f. filmid = p. filmid where f. filmid is null or p. filmid is null ; f. filmid ) as ant antall 668055