SQL Structured Query Language

Like dokumenter
Relasjoner terminologi

SQL Structured Query Language

SQL Structured Query Language

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. En første introduksjon Lysark til forelesning mandag 14.

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

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

INF1300 Introduksjon til databaser: SQL Structured Query Language

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

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

Relasjoner terminologi

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

Integritetsregler i SQL. Primærnøkler

Integritetsregler i SQL

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

Integritetsregler i SQL

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

SQL: Integritetsregler, triggere og views

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

INF1300 Det meste av resten av

Repetisjon: Normalformer og SQL

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

Databaser: Relasjonsmodellen, del I

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

IN2090 Introduksjon til databaser

Notater: INF1300. Veronika Heimsbakk 8. januar 2013

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

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

Dagens tema: Relasjonsmodellen (funksjonelle avhengigheter og nøkler, integritetsregler) Realisering: Fra ORM til relasjoner

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

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

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

INF3100 Databasesystemer

UNIVERSITETET I OSLO

INF1300 Introduksjon til databaser

INF212 - Databaseteori. Kursinnhold

UNIVERSITETET I OSLO. Relasjonsmodellen. Relasjoner og funksjonelle avhengigheter. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

Relasjonsdatabaseteori

1. Innføring i bruk av MySQL Query Browser

Dagens tema: Oppdateringsanomalier Normalformer

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

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

INF1300 Introduksjon til databaser

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

Oppdateringsanomalier Normalformer

Metaspråket for å beskrive grammatikk

Oppgave 1 (Opprett en database og en tabell)

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 Ragnar Normann 1

INF3100 Databasesystemer

SQL: SELECT-spørringer

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

INF1300 Introduksjon til databaser

Relasjonsdatabasedesign

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

Plenum: Nøkler, normalformer og funksjonelle avhengigheter

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

Oppgaver Oppgave a: Sett opp mulige relasjoner

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

SQL for INF1300. Stein Michael Storleer 21. september 2015

INF1300 Introduksjon til databaser

Relasjonsdatabasedesign

Oppdateringsanomalier. Normalformer. Institutt for informatikk INF

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

INF1300 Introduksjon til databaser

Relasjonsdatabasedesign

Relasjonsdatabasedesign

Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF

Relasjonsdatabasedesign

Relasjonsdatabasedesign

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

SQL for INF1300. Stein Michael Storleer 7. november 2014

1. Relasjonsmodellen Kommentarer til læreboka

Løsningsforslag eksamen i IN

Relasjonsdatabasedesign

Indre select-setninger Nestede select-setninger

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

Relasjonsalgebraen. Algebra

PENSUM H2012 INF1300. Joakim Myrvoll Johansen. Pensum fra forelesnings-foilere

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

Løsningsforlag for oblig 1, databaser 2010

Utvikling fra kjernen og ut

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

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

INF1300 Introduksjon til databaser

God Databasedesign: På vei mot Normalformer

SQL: SELECT-spørringer

UNIVERSITETET I OSLO

IN2090 Databaser og datamodellering 07 Datamanipulering

UNIVERSITETET I OSLO

Spørsmålskompilering del 1

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

Transkript:

SQL Structured Query Language Mer SQL: kandidat-, primær- og fremmednøkler Definere tabeller med integritetsregler Hente data fra tabeller select-from-where distinct order by Eksempler kjøres i PostgreSQL (psql)

Lage en tabell med SQL create table R (A 1 D 1 [S 1 ],... A n D n [S n ], [liste av skranker] ); R er navnet på relasjonen/tabellen A i er et atributt D j er et domene S k er en skranke [ ] betyr at dette leddet er en valgfri del av setningen

create eksempel Emner(emnekode, emnenavn) StudTarEmne(bnavn, emne) c r e a t e t a b l e StudTarEmne ( bnavn char ( 8 ), emne v a r c h a r ( 1 2 ) ) ; c r e a t e t a b l e Emner ( emnekode v a r c h a r ( 1 2 ) p r i m a r y key, emnenavn v a r c h a r ( 8 0 ), s e m e s t e r char ( 6 ) check ( s e m e s t e r= s p r i n g or s e m e s t e r= f a l l ) ) ;

Nøkler og nøkkelattributter Nøklene i en relasjon er de viktigste skrankene. En kandidatnøkkel er kort sagt et eller flere attributter som bare kan ha unike verdier. F.eks. (fødselsdato, personnr), eller (brukernavn), eller (filmid), eller (brukernavn, emnekode, semester).

Kandidatnøkkel: En minimal kombinasjon (minimal delmengde) X av attributtene {A 1, A 2,..., A n } som er slik at hvis t og u er to tupler hvor t u, så er t[x ] u[x ]. En minimal mengde attributter i en tabell som entydig identifiserer ethvert tuppel i tabellen.

Primærnøkkel: En utvalgt blant kandidatnøklene. I relasjonsmodellen skal alle relasjoner ha nøyaktig én primærnøkkel. Primærnøkkelen blir markert med én strek. Hvis det er andre kandidatnøkler, markeres de med én strek, og primærnøkkelen med to 1. Nøkkelattributt: Attributt som er med i (minst) en kandidatnøkkel. 1 Vi har i INF1300 gjort det omvendt tidligere, men har endret dette fra 2015 for å bli konsistent med læreboka.

Primærnøkler Kan deklareres i create table sammen med primærnøkkelattributtet (bare hvis attributtet utgjør primærnøkkelen alene) c r e a t e t a b l e Emner ( emnekode v a r c h a r ( 1 2 ) p r i m a r y key,... ) ;

Primærnøkler Kan deklareres i create table sammen med primærnøkkelattributtet (bare hvis attributtet utgjør primærnøkkelen alene) c r e a t e t a b l e Emner ( emnekode v a r c h a r ( 1 2 ) p r i m a r y key,... ) ; Kan deklareres separat i create table etter attributtdeklarasjonene c r e a t e t a b l e Emner ( emnekode v a r c h a r ( 1 2 ),... p r i m a r y key ( emnekode ) ) ;

Primærnøkler Hvis primærnøkkelen består av flere attributter må definisjonen kome etter attributtdeklarasjonene c r e a t e t a b l e e k s a m e n s f o r s øk ( b r u k e r n a v n char ( 8 ) emne char ( 1 0 ) s e m e s t e r char ( 5 ), k a r a k t e r char ( 1 ), p r i m a r y key ( brukernavn, emne, s e m e s t e r ) ) ; Forsøk på å legge inn flere karakterer for samme student i samme emne i samme semester vil da feile.

Primærnøkler, regler Maks én primærnøkkeldeklarasjon pr. relasjon

Primærnøkler, regler Maks én primærnøkkeldeklarasjon pr. relasjon Flere kandidatnøkler, bruk skranken unique

Primærnøkler, regler Maks én primærnøkkeldeklarasjon pr. relasjon Flere kandidatnøkler, bruk skranken unique Konsekvenser av deklarasjonen: To tupler i relasjonen får ikke stemme overens i alle attributtene i primærnøkkelen. Forsøk på brudd ved insert eller update skal avvises av DBMSet Attributtene i primærnøkkelen får ikke inneholde null

Primærnøkler, regler Maks én primærnøkkeldeklarasjon pr. relasjon Flere kandidatnøkler, bruk skranken unique Konsekvenser av deklarasjonen: To tupler i relasjonen får ikke stemme overens i alle attributtene i primærnøkkelen. Forsøk på brudd ved insert eller update skal avvises av DBMSet Attributtene i primærnøkkelen får ikke inneholde null Dette må sjekkes av systemet ved hver insert og hver update

Skranke på ett attributt not null create table Ansatt (... Fdato int not null,..); Konsekvenser: Kan ikke sette inn tuppel med verdien null i attributtet Kan ikke endre verdien til null senere

Skranke på ett attributt not null create table Ansatt (... Fdato int not null,..); Konsekvenser: Kan ikke sette inn tuppel med verdien null i attributtet Kan ikke endre verdien til null senere check c r e a t e t a b l e Ansatt (... T i t t e l v a r c h a r ( 1 5 ) check ( T i t t e l= S e l g e r or T i t t e l= K o n s u l e n t or... ),... ) ; Angir en betingelse på attributtet. Sjekkes ved hver endring av attributtets verdi

Skranke på ett attributt check c r e a t e t a b l e Ansatt ( Navn v a r c h a r ( 4 0 ), T i t t e l v a r c h a r ( 1 5 ), Fnr v a r c h a r ( 1 1 ),..., CONSTRAINT s j e k k T i t t e l check ( T i t t e l= S e l g e r or T i t t e l= K o n s u l e n t or... ),... ) ;

Skranke på ett attributt check check c r e a t e t a b l e Ansatt ( Navn v a r c h a r ( 4 0 ), T i t t e l v a r c h a r ( 1 5 ), Fnr v a r c h a r ( 1 1 ),..., CONSTRAINT s j e k k T i t t e l check ( T i t t e l= S e l g e r or T i t t e l= K o n s u l e n t or... ),... ) ; c r e a t e t a b l e Emne ( ekode v a r c h a r ( 7 ), enavn v a r c h a r ( 9 9 ),..., CONSTRAINT s j e k k E k o d e check ( ekode > INF0000 and ekode < INF9999 ),... ) ;

Skranke på ett attributt check check c r e a t e t a b l e Ansatt ( Navn v a r c h a r ( 4 0 ), T i t t e l v a r c h a r ( 1 5 ), Fnr v a r c h a r ( 1 1 ),..., CONSTRAINT s j e k k T i t t e l check ( T i t t e l= S e l g e r or T i t t e l= K o n s u l e n t or... ),... ) ; c r e a t e t a b l e Emne ( ekode v a r c h a r ( 7 ), enavn v a r c h a r ( 9 9 ),..., CONSTRAINT s j e k k E k o d e check ( ekode l i k e INF ),... ) ;

Skranker: fremmednøkler Hva skal vi med fremmednøkler?

Hva skal vi med fremmednøkler?

Hva skal vi med fremmednøkler? Knytte sammen informasjon som hører sammen (f.eks. til samme objekt i virkeligheten) fra flere tabeller.

Hva skal vi med fremmednøkler? Knytte sammen informasjon som hører sammen (f.eks. til samme objekt i virkeligheten) fra flere tabeller. Må vi definere fremmednøkler for å gjøre dette?

Hva skal vi med fremmednøkler? Knytte sammen informasjon som hører sammen (f.eks. til samme objekt i virkeligheten) fra flere tabeller. Må vi definere fremmednøkler for å gjøre dette? Nei

Hva skal vi med fremmednøkler? Knytte sammen informasjon som hører sammen (f.eks. til samme objekt i virkeligheten) fra flere tabeller. Må vi definere fremmednøkler for å gjøre dette? Nei Hvorfor gjør vi det da?

Hva skal vi med fremmednøkler? Knytte sammen informasjon som hører sammen (f.eks. til samme objekt i virkeligheten) fra flere tabeller. Må vi definere fremmednøkler for å gjøre dette? Nei Hvorfor gjør vi det da? For å sikre at det ikke er mulig å blande sammen informasjon som ikke hører sammen i virkeligheten (i UoD).

Hva skal vi med fremmednøkler? Knytte sammen informasjon som hører sammen (f.eks. til samme objekt i virkeligheten) fra flere tabeller. Må vi definere fremmednøkler for å gjøre dette? Nei Hvorfor gjør vi det da? For å sikre at det ikke er mulig å blande sammen informasjon som ikke hører sammen i virkeligheten (i UoD). F.eks. at en person har ett navn, ikke flere, eller ingen.

Hva skal vi med fremmednøkler? Knytte sammen informasjon som hører sammen (f.eks. til samme objekt i virkeligheten) fra flere tabeller. Må vi definere fremmednøkler for å gjøre dette? Nei Hvorfor gjør vi det da? For å sikre at det ikke er mulig å blande sammen informasjon som ikke hører sammen i virkeligheten (i UoD). F.eks. at en person har ett navn, ikke flere, eller ingen. For at DBMSet skal gjøre oppslag i tabeller mer effektivt.

Skranker: fremmednøkler med ett attributt, samme attributtnavn: c r e a t e t a b l e StudTarEmne (...., emnekode char ( 1 0 ) r e f e r e n c e s Emner,.... ) ; med ett attributt, ulike attributtnavn: c r e a t e t a b l e StudTarEmne (...., emnekode char ( 1 0 ) r e f e r e n c e s Kurs ( k u r s k o d e ),.... ) ;

med flere attributter med samme navn: c r e a t e t a b l e StudFikkKarakterIEmne ( s t u d i d i n t, emnekode v a r c h a r ( 1 0 ), s e m e s t e r v a r c h a r ( 5 ), k a r a k t e r char ( 1 ), ) ; f o r e i g n key ( s t u d i d, emnekode, s e m e s t e r ) r e f e r e n c e s R e s u l t a t e r De refererte attributtene må være primærnøkkel, deklarert primary key. (I noen SQL-systemer holder det med at attributtene er deklarert UNIQUE, men ikke i PostgreSQL).

med flere attributter med forskjellig navn: c r e a t e t a b l e StudFikkKarakterIEmne ( s t u d i d i n t, emnekode v a r c h a r ( 1 0 ), s e m e s t e r v a r c h a r ( 5 ), k a r a k t e r char ( 1 ), ) ; f o r e i g n key ( s t u d i d, emnekode, s e m e s t e r ) r e f e r e n c e s R e s u l t a t e r ( bnavn, kurskode, sem ) De refererte attributtene må være primærnøkkel, deklarert primary key. (I noen SQL-systemer holder det med at attributtene er deklarert UNIQUE, men ikke i PostgreSQL).

Fremmednøkler mot flere tabeller brukes for å implementere et mange-til-mange forhold mellom tabeller: c r e a t e t a b l e s t u d e n t ( bnavn char ( 8 ) p r i m a r y key, navn v a r c h a r ( 8 0 ),... ) ; c r e a t e t a b l e emne ( ekode char ( 1 0 ) p r i m a r y key, emnenavn v a r c h a r ( 8 0 ), e m n e e i e r v a r c h a r ( 8 0 ),... ) ; c r e a t e t a b l e a n t a l l e k s a m e n s f o r s øk ( b r u k e r n a v n char ( 8 ) r e f e r e n c e s s t u d e n t ( bnavn ), emne char ( 1 0 ) r e f e r e n c e s emne, a n t f o r s øk i n t e g e r, p r i m a r y key ( brukernavn, emne ) ) ;

Tilbake til...

Hente/skrive ut data fra tabeller 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, så i dag skal vi bare se på denne delen:

Hente/skrive ut data fra tabeller select [distinct] ATTRIBUTTLISTE from NAVNELISTE [where WHERE-BETINGELSE] [order by ATTRIBUTT [asc desc] [, ATTRIBUTT [asc desc] ]... ]; [ ] betyr at dette leddet er en valgfri del av setningen, så i sin enkleste form ser setningen slik ut:

Uttrykk i betingelser 1 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) AND, OR, NOT og ( ) som vanlig i boolske uttrykk null-test: P is null eller P is not null Relasjonssammenlikning: exists, in, all, any (Disse tar vi for oss i en senere forelesning)

Uttrykk i betingelser 2 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

Uttrykk i betingelser 3 Datoer og tidspunkter: Dato: date yyyy-mm-dd Tidspunkt: time hh:mm, time hh:mm:ss Tidspunkt med finere gradering enn sekund: time hh:mm:ss.ccc Tidspunkt før GMT: time hh:mm:ss+hh Tidspunkt etter GMT: time hh:mm:ss-hh Dato og tid: timestamp yyyy-mm-dd hh:mm:ss

Tekstmønstre I SQL kan vi bruke like for å sammenligne et tekst-attributt med et tekstmønster

Tekstmønstre I SQL kan vi bruke like for å sammenligne et tekst-attributt med et tekstmønster Et tekstmønster er en tekstkonstant hvor to tegn, kalt jokertegn, har spesiell betydning: _ (understrekning) passer med ett vilkårlig tegn % passer med en vilkårlig tekststreng (null eller flere tegn)

Tekstmønstre I SQL kan vi bruke like for å sammenligne et tekst-attributt med et tekstmønster Et tekstmønster er en tekstkonstant hvor to tegn, kalt jokertegn, har spesiell betydning: _ (understrekning) passer med ett vilkårlig tegn % passer med en vilkårlig tekststreng (null eller flere tegn) Eksempel 1: s e l e c t f i r s t n a m e from p e r s o n where f i r s t n a m e l i k e O_a ; passer med Oda og Ola og O4a, men ikke med Olga

Tekstmønstre I SQL kan vi bruke like for å sammenligne et tekst-attributt med et tekstmønster Et tekstmønster er en tekstkonstant hvor to tegn, kalt jokertegn, har spesiell betydning: _ (understrekning) passer med ett vilkårlig tegn % passer med en vilkårlig tekststreng (null eller flere tegn) Eksempel 1: s e l e c t f i r s t n a m e from p e r s o n where f i r s t n a m e l i k e O_a ; passer med Oda og Ola og O4a, men ikke med Olga Eksempel 2: s e l e c t f i r s t n a m e from p e r s o n where f i r s t n a m e l i k e O%a ; passer med alle navn som begynner med «O» og slutter med «a», som Ola, Olga, Othilia, Oda, Ofjhwskjfhkxxa

SELECT beregner bager select (SQL) skiller ikke mellom store og små bokstaver, unntatt i tekststrenger select beregner bager (med unntak av noen av operatorene) En bag er en samling med tupler der samme tuppel kan forekomme flere ganger. (Like tupler fjernes eventuelt ved å bruke distinct.)

select eksempel Skjema Prosjekt(PId, Pnavn, KId, Pleder, StartDato) Ansatt(AId, Navn, Tittel, Fdato, Pnr, AnsDato) Timeliste(AId, Dato, PId, Timer) Kunde(KId, Knavn, Adresse) Oppgave Finn navn og startdato for alle prosjekter bestilt av kunden «Pust og pes AS». Sorter dem slik at det nyeste prosjektet kommer først.

select eksempel Skjema Prosjekt(PId, Pnavn, KId, Pleder, StartDato) Ansatt(AId, Navn, Tittel, Fdato, Pnr, AnsDato) Timeliste(AId, Dato, PId, Timer) Kunde(KId, Knavn, Adresse) Oppgave Finn navn og startdato for alle prosjekter bestilt av kunden «Pust og pes AS». Sorter dem slik at det nyeste prosjektet kommer først. Løsning s e l e c t Pnavn, S t a r t D a t o from Kunde K, P r o s j e k t P where Knavn = Pust og pes AS and K. KId = P. KId o r d e r by S t a r t D a t o desc ;

Seleksjons- og join-betingelser La oss se nærmere på løsningen fra forrige lysark: s e l e c t Pnavn, S t a r t D a t o from Kunde K, P r o s j e k t P where Knavn = Pust og pes AS and K. KId = P. KId o r d e r by S t a r t D a t o desc ; where-betingelsen består av to deler: Knavn = Pust og pes AS Dette leddet kalles en seleksjonsbetingelse Det plukker ut forekomster i Kunde (her trolig bare en) K.KId = P.Kid Dette leddet kalles en join-betingelse Det kobler sammen forekomster fra Kunde med forekomster i Prosjekt forutsatt at verdiene i attributtene KId og Kid er like

select navnekonflikter Kvalifiser attributter med relasjonsnavn: R.A

select 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

select 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 omnavnes til B i resultatrelasjonen

select eksempel Skjema Student( bnavn, navn, uid, spkode, grlremne, grlrgrnr ) StudentTarEmne( bnavn, emne ) Emne( emnekode, enavn, fsem ) Oppgave Skriv ut studentnavn eg emnenavn og på alle studenter som har brukernavn som begynner med bokstaven a og som tar emner på 1000-nivå. Sorter dem etter brukernavn. Løsning s e l e c t S. navn, E. enavn from Student S, Emne E, StudTarEmne STE where s e l e k s j o n s b e t i n g e l s e : ( S. bnavn l i k e a% and STE. emne l i k e i n f 1% ) j o i n b e t i n g e l s e : and ( S. bnavn = STE. bnavn and E. emnekode = STE. emne ) o r d e r by S. bnavn ;

PostgreSQL For å bruke PostgreSQL: Fra Linux-promptet (...>), gi kommandoen > psql -h dbpg-ifi-kurs -U <brukernavn> [-d fdb] og du blir bedt om å oppgi passordet ditt. Hvis du vil koble deg opp ot filmdatabasen tar du med -d fdb på slutten av linja For å kjøre en kommandofil, skriv \i <filnavn> For å avslutte, skriv \q Les forøvrig dokumentet om filmdatabasen og postgres som er tilgjengelig via lenke fra kursets semesterside.

s e l e c t from emne s e l e c t from s t u d t a r e m n e s e l e c t d i s t i n c t emnekode, fsem from emne ; s e l e c t emnekode, fsem from emne ; s e l e c t fsem from emne ;... s e l e c t from emne, s t u d t a r e m n e where emne = i n f 1 3 0 0 and emne = emnekode ; s e l e c t S. navn, E. enavn from Student S, Emne E, StudTarEmne STE where s e l e k s j o n s b e t i n g e l s e : ( S. bnavn l i k e a% and STE. emne l i k e i n f 1% ) j o i n b e t i n g e l s e : and ( S. bnavn = STE. bnavn and E. emnekode = STE. emne ) o r d e r by S. bnavn ; s e l e c t from f i l m where t i t l e l i k e Garc ; s e l e c t from f i l m f, p e r s o n p where f. t i t l e = p. f i r s t n a m e and f. t i t l e l i k e Ac% ; s e l e c t from f i l m f, p e r s o n p where f. t i t l e = p. f i r s t n a m e and f. p r o d y e a r = 1 9 3 1 ; s e l e c t from I n n b I L a n d A, I n n b I L a n d B where A. navn <> B. navn and A. innb = B. innb ;