a syntax overview - Østfold university college · det er en fordel hvis både min. og max. er med...
TRANSCRIPT
ITF103061Databaser
1/10
Innledning
EKSAMENEmnekode:ITF10306Emnenavn:DatabaserDato:21.05.19Eksamenstid:09.00-13.00.Hjelpemidler:Syntaksoversikt(vedlagtoppgaven).Faglærer:EdgarBostrøm/IdaK.ThoresenSensurfrist:11.06.19KaraktereneertilgjengeligeiStudentweb.OmoppgavesettetOppgavesettetbestårav3tekstoppgaverogenflervalgsoppgave.Hveravde4oppgavenetellerliktvedbedømningen.Vedleggetbestårav6sider.Påflervalgsoppgavenerminstettavsvaralternativenekorrekte,dettebetyratdetkanværekunettkorrektalternativ,mendetkanogsåværeflereelleralle.Forhvertkorrektalternativgisdet1poeng,mensdetforgaltsvargis-0,5poeng.Lesgjennomheleoppgavesettetførdustarter.Detvilkunneværeinformasjonunderveissomerviktigforensenereoppgave.Væreogsåsværtnøyemedåleseoppgavetekstenogkontrollereløsningenpåhverdeloppgave!Vedlagterensyntaksoversikt,somfinnesvedsidenavoppgavearket.Dukanbenytteutlevertearkderduønskerålageillustrasjoner,modelleretc.NårdugjørdethuskåskriveSEPAPIRARKsomsvarpådeoppgavenedettegjelder,såerdusikkerpåatsensorserhvaduharskrevetitilleggtildetsomlevereselektronisk.Karaktereneertilgjengeligeforstudenterpåstudentwebsenest2virkedagerettersensurfrist.
Bompenger.
Noenavdereblirkanskjeidårlighumøravdet,menmyeavdagensoppgavehandleraltsåombompenger.Ventmedådeppetilettereksamen!
ITF103061Databaser
2/10
ITF103061Databaser
3/10
1 Oppgave1.SQL’evibetalesåmye?
Oppgave1.SQL’evibetalesåmye?Tid:1time.Visnakkerombommerellerbomstasjoner,selvomdetjoegentligerstedermedelektroniskregistreringavpasseringen.Dettesværtforenkledesystemetbeståravinformasjonombommeneinkl.pris,dvs.hvaenpasseringgjennomdennebommenkoster,hvilkebilersompasserer,ogselvepasseringen,inkl.tidenforpasseringen.Kjennetegnerdetsomvimerfolkeligkallerforbilnummer(f.eks.AA98765).Viregnerbaremednorskekjøretøy.Sammeperson(ogfirma)kaneieflerebiler.Forfirmaerskrivesfirmanavnetinnsometternavn,mensfornavn-kolonnenikkeblirbrukt.Tilsvarendebrukervifirmanrifødselsnummer-kolonnen.TabellenBilinneholderenBiltypekode,dettebeskrivesnærmereioppgave3.Deulikebommenekanhaulikprisforpassering,menforeløpigregnerviatallebiltyperharsammeprisforengittbom.Passeringsnritabellenpasseringerenteller/løpenummer.Fremmednøkleneitabellenframkommeravkorresponderendeprimærnøklerideandretabellene.BILKjennetegnBiltypekodeFødselsnrEtternavnFornavnAdressePostnrPoststedBOMBomnrBomnavnPrisPASSERINGPasseringsnrKjennetegnBomnrDagMånedÅrTidspunkt
a. Skrivutaltombommersominneholder‘tunnell’somendelavnavnetsitt.
b. Skrivutallepasseringeri2019forbilermedkjennetegnsombegynnerpåbokstaveneASogAA.Kjennetegn,bomnrog-navn,samtdatoogtidspunktskalskrivesut.Detskalsorteresslikatdenyestepasseringenekommerførst.
c. SkrivutaltfratabellenBilfordebilenesomikkeharnoenpasseringeridetheletatti2019.
d. Hvilkenbomerdendyresteåpasseregjennom?Bomnr,-navnogprisskalværemed.Detkangodtværefleresomerlikedyre,ogisåtilfelleskalalledisseværemed.
e. Skrivutantallpasseringerforhverbomstasjon.Bomnr,-navnogantallpasseringerskalmed.
f. Skrivutkjennetegnpåbilersomharbetaltover10.000ibompengeri2019.
g. Skrivutkjennetegn,bomnrog-navnpådebilenehvorallepasseringeneharskjeddpåsammebom.
Dukanbrukeetegetarkhvisduønskerålageillustrasjoner,modelleretc.Hvisdugjørdet,skrivSEPAPIRARKSEPAPIRARKfordeoppgavenedetgjelder,slikatduersikkerpåatsensorserhvaduharskrevetitilleggtildetsomlevereselektronisk.
Skrivdittsvarher...
ITF103061Databaser
4/10
2 Oppgave2.MerSQL.Normalisering
Oppgave2.MerSQL.NormaliseringTid:1time.
a. LagenCREATETABLE-setningforålagetabellenPASSERING.Tidspunktkanduregnef.eks.somenstrengellerdukandefineredetmeddatatypentime.Deterenfordelhvisdufårmedatdatomåværeettallfra1til31,ogmånedmåværeettallfra1til12.
b. DefinerfremmednøklerforPASSERING.BrukALTERTABLE-setninger.Tamedendringstyper,vibrukerRESTRICTforslettingogCASCDEforendring.
c. BilenmedkjennetegnAA12345erbyttetutmedennybilmedkjennetegnAA98765.Viskalleggeinnkjennetegnetfordennyeistedetfordengamle.BrukenUPDATE-setningfordette.
d. Skrivutbomnr,-navnogantallpasseringerfordenbomstasjonensomharflestpasseringer.Detkangodtværefleresomharlikemangepasseringer.
e. Skrivutkjennetegnpåbilersomharpassertbådebomnr13ogbomnr17påsammedato.
f. Lagenlistemedallebruddpå2NF(2.normalform)somfinnesitabellenBIL.Alternativtkandubrukeetdetermineringsdiagramforåvisebruddene.
g. ForeslånytabellstrukturforBIL(evt.fordeltpåfleretabeller)slikatdetikkebrytermed2NF
Dukanbrukeetegetarkhvisduønskerålageillustrasjoner,modelleretc.Hvisdugjørdet,skrivSEPAPIRARKSEPAPIRARKfordeoppgavenedetgjelder,slikatduersikkerpåatsensorserhvaduharskrevetitilleggtildetsomlevereselektronisk.
Skrivdittsvarher...
ITF103061Databaser
5/10
3 Oppgave3.Datamodellering
Oppgave3.DatamodelleringTid:1time.Viskalgjøreendelutvidelseriforholdtildetenklesystemetioppgave1.
Detfinnesjomangebomselskapilandet,ogdeharansvarfordeulikebommenesomfinnes.Viskalhamedinformasjonomdette,medBomselskapID,BomselskapNavn,oghvilketbomselskaphverbomhørertil.Personer(ogfirmaer)kanoppretteenavtale(bomavtale)medettogbareettbompengeselskap,manharitilfelleetavtalenrogdatofornåravtalenbleinngått.Denneavtalenkangjeldeflerebiler.Dettypiskeerdaatdefårf.eks.rabatt(f.eks.30%)påpasseringerfordettebompengeselskapetsbommer,mendennekanvarierelittfraavtaletilavtale,noenerjoflinketilåforhandle!!Desomerekstraflinketilåforhandlekanogsåfåprosenterhosetannetbomselskapenndendeharavtalemed.Rabattprosenten(e)skalinkluderesisystemet.
Ipraksisharbommeneulikepriserforulikebiltyper.Forhverbommådetderforfinnesenoversiktoverulikebiltypermedbiltypekodeog-betegnelse(f.eks.BB-Personbil,LA-Lastebil,EL–Elbilosv.,ognyekoderog-betegnelsermåkunneleggesinn).Dettemåværeknyttettildenenkeltebil.Viantaratenbilkunerknyttetoppmotenbiltypekode.
DetmåogsåfinnesenoversiktoverpriserforhverBiltypepåhverbomstasjon(f.eks.atdetforpasseringgjennombomstasjonnr.2918koster25kr.forBB,60kr.forLA,osv.).Dettevildermeddannegrunnlagetforåkunnehaulikepriseravhengigavhvilkenbiltypedeter.
Lagendatamodellhvordutarutgangspunktidetsomersagtioppgave1og2,ogduleggertil(evt.endrer)utfradetsomerbeskrevetover.Deterenfordelhvisbådemin.ogmax.ermedimodellen,ogtilsverndemedverb/rollerderdetkanklargjøremodellen.Kommentérderdumenerdetkanværetvilomhvordanstrukturenbørvære.
(Detleggesmestpåmodellen,menkommentarervilogsåtellemed.)
Dukanbrukeetegetarkhvisduønskerålageillustrasjoner,modelleretc.Hvisdugjørdet,skrivSEPAPIRARKSEPAPIRARKfordeoppgavenedetgjelder,slikatduersikkerpåatsensorserhvaduharskrevetitilleggtildetsomlevereselektronisk.
Skrivdittsvarher...
Oppgave4-Flervalgsoppgave
Påhveroppgaveerminstettavsvaralternativenekorrekte,dettebetyratdetkanværekunettkorrektalternativ,mendetkanogsåværeflereelleralle.Forhvertkorrektsvaralternativgisdet1poeng,mensdetforgaltsvargis-0,5poeng.
ITF103061Databaser
6/10
4 Oppgave4.a
Hvilkestruktureravdatamodellerharvi?Velgettellerflerealternativer
Fysisknivå
Konseptueltnivå
Praktisknivå
Logisknivå
5 Oppgave4.b
Hvaergaltomfremmednøkler?Velgettellerflerealternativer
Primærnøkkelenfrahovedtabellenblirfremmednøkkelidetaljeringstabellen
Utenfremmednøklerhaddeviikkeklartåkobleinformasjonfraforskjelligetabellersammen
Fremmednøklenemåaldrisettespåmangesidenienrelasjon
Ienidentifiserendestrukturbenyttesfremmednøkkelensomendelavprimærnøkkelenidetaljeringstabellene
6 Oppgave4.c
Vikangjørefleretyperkontrollavlovligeverdier.Hvilke?Velgettellerflerealternativer
Kontrollavmaksantall
Kontrollifleredimensjoner
Kontrollirelasjoner
Kontrolliettnivå
ITF103061Databaser
7/10
7 Oppgave4.d
Hvaerkorrektomnettverk?Velgettellerflerealternativer
Båderettedeogurettedegrafererentypenettverk
Enrelasjonsdatabasekanbeskrivevissenettverk
Etnettverkeretsystemavnoderogkanter
Enmatrisekanbenyttesforåbeskriveetnettverk
8 Oppgave4.e
Hvamåværeoppfyltforatentabellskalværepå,2NF,2.normalform?Velgettellerflerealternativer
Deleravnøkkelenskalikkekunnedeterminereikke-nøkkelattributter
Alleattributterskalværeatomiske
Enhverdeterminanterenkandidatnøkkel
Ikke-nøkkelattributterskalikkeværetransitivtavhengigeavprimærnøkkelen
9 Oppgave4.f
Hvordankoblervidataifleretabellersammenienrelasjonsdatabase?Velgettellerflerealternativer
Vikoblerdatasammenbasertpåkolonnenavnene
Vikoblerdatasammenbasertpåhvordandataeneserut
Vikoblerdatasammenbasertpålikhetiverdier
Vikoblerdatasammenbasertpårekkefølgenavradeneitabellen
ITF103061Databaser
8/10
10 Oppgave4.g
Hvilkeegenskaperregnessomfasteegenskaperienrelasjonsdatabase?Velgettellerflerealternativer
Allekolonnermåinneholdeenverdi
Enkolonneskalinneholdekunénverdi
Relasjonsdatabaserbestårkunavtabeller
Radeneitabelleneerusorterte
11 Oppgave4.h
Hvaerkorrektomfølgenderelasjonsoperatoreriforbindelsemedrelasjonsdatabaser?Velgettellerflerealternativer
Vedenprojeksjonoppretterviennyrelasjonutifrabestemteattributterieneksisterenderelasjon
Vedenforeningoppretterviennyrelasjonvedåsettesammenhvertuppelienrelasjonmedhvertuppelienannenrelasjon
Nårvibenytterenseleksjon(restriksjon)oppretterviennyrelasjonutifrabestemtetuplerieneksisterenderelasjon
Vedetproduktoppretterviennyrelasjonmedsammensettingavtuplerfratorelasjonerpåetfellesattributt.
12 Oppgave4.i
Hvaerikkekorrektnårvisnakkeromenvisning(view)?Velgettellerflerealternativer
Envisningkallesgjerneenvirtuelltabell
Detlagresdataienvisning
Envisningeretsøkbartobjektiendatabasesomdefineresavenspørring
Mankanikkespørremotenvisningliktsommankanmotentabell
ITF103061Databaser
9/10
13 Oppgave4.j
Hvaerkorrektnårvisnakkeromaliasidatabasesammenheng?Velgettellerflerealternativer
Etaliasbenyttesforågientabelletmidlertidignavn
Aliaseteksistererkunsålengespørringenbenyttes
Etaliaseretannetnavnpåentabell
Aliasbenyttesgjerneforågikolonneretmerforståelignavn
14 Oppgave4.k
Hvastemmeromfølgendemåterågjenfinnedatapå?Velgettellerflerealternativer
Vedåbenytteindekseropprettervienhjelpetabellsominneholderindeksverdieneogsombenyttesforrasktoppslagigrunntabellensomerindeksert.
Vedetfullsøk(lineærsøk)harvisortertedataoghalvererdatamengdenviisøkerihvergangvisøker.Vivetverdienvileteretter,sjekkerverdienmidtisøkemengdenogfortsettersøketidendelenavmengdenvivetvårdatabefinnersegi.
Vedetbinærsøkharviusortertedataogmåderforsøkegjennomalleradeneitabellenforåfinnedendataenvileteretter.
Hashingerenmetodesombenytterenhashingfunksjonforågiallemuligeverdieretresultatinnenforetønsketintervall.Hensiktenmeddetteeråenkeltfinnedatamedlikeellerulikeverdier.
15 Oppgave4.l
Hvilkeegenskaperkanentransaksjonha?Velgettellerflerealternativer
Consistency-databasenmåværekonsistentførogetterenendttransaksjon
Isolation-transaksjonerkanikkearbeidemeddatasomalleredeerimidlertidigendrettilstand
Atomicity-altelleringentingblirgjennomført
Durability-resultatetavdenutførtetransaksjonenerendelig/vilikkeforsvinne
ITF103061Databaser
10/10
16 Oppgave4.m
Hvaerkorrektomendeltlås,leselås?Velgettellerflerealternativer
Endeltlåsbenytteskunvedlesing
Forutsetteratdetikkeerandrelåserpåobjektet
Godtaratandretransaksjonerkanlese,menikkeendredataenedersomentransaksjonholderdeltlåspåetobjekt.
Enleselåsgodtaratfleretransaksjonerleserdesammedataene
17 Oppgave4.n
Hvilkemåterkanvigjenoppretteendatabasepå?Velgettellerflerealternativer
Foroverrulling
RAID
Bakoverrulling
Fjernelåser
Question 1Attached
1
SQL-syntaks – noen elementer
o Syntaksoversikten gjelder SQL2.
o Oversikten er ikke fullstendig og heller ikke helt presis, men er forhåpentligvis til hjelp.
o [ ] brukes om frivillige elementer, det er altså ikke med i SQL-språket.
o ¦ brukes som eller, det er altså ikke med i SQL-språket.
o { ….. } start, hhv. slutt, ” ”.
o < ….> brukes for å beskrive et språkelement. Disse beskrives eller er beskrevet tidligere i
syntaksbeskrivelsen eller følger av det generelle mønsteret fra andre.
o Fet skrift brukes om faste språkelementer
Create / alter / drop table-setning
Create table CREATE TABLE <tabellnavn> (<kommaseparert tabelldefinisjonsliste>);
<kommaseparert tabelldefinisjonsliste>:
• liste med en eller flere elementer som er enten <kolonnedefinisjon> eller <skrankedefinisjon>
• hvis listen består av flere elementer, er det komma mellom disse.
• listen må ha minst en <kolonnedefinisjon>, har som regel også minst en <skrankedefinisjon>
<kolonnedefinisjon>:
• <kolonnenavn> <datatype> [�OT �ULL] [DEFAULT <verdi>] , samt eventuell <skrankedefinisjon>, men
uten (den første) kommaseparerte kolonnelisten.
<skrankedefinisjon> (det finnes noen flere enn de som er omtalt her)
• [CO�STRAI�T <skrankenavn>] PRIMARY KEY (<kommaseparert kolonneliste>)
• [CO�STRAI�T <skrankenavn>] FOREIG� KEY (<kommaseparert kolonneliste>) REFERE�CES
<tabell> (<kommaseparert kolonneliste>) [O� UPDATE <ref.oper.>] [O� DELETE <ref.oper.>]
• [CO�STRAI�T <skrankenavn>] U�IQUE (<kommaseparert kolonneliste>)
• [CO�STRAI�T <skrankenavn>] CHECK (<betingelse>)
<kommaseparert kolonneliste>:
• en eller flere kolonner. Hvis det er flere kolonner er disse adskilt med komma
<ref.oper.>: (dvs. referanseintegritetsoperasjon)
• {RESTRICT ¦ �O ACTIO� ¦ CASCADE ¦ SET �ULL}
Alter table
ALTER TABLE <tabellnavn>
{ADD ¦ DROP} {[COLUM�]1 <kolonnedefinisjon> ¦ <skrankedefinisjon>};
Noen systemer mangler DROP.
Drop table
DROP TABLE <tabellnavn>;
1 Skal være med for noen systemer, skal utelates for andre.
2
Select-setninger.
Select-setning uten gruppering
SELECT [DISTI�CT] <kommaseparert resultatiste>
FROM <kommaseparert tabellliste>
[WHERE <betingelse>]
[ORDER BY <ordnet kolonneliste med sortering>];
<kommaseparert resultatliste>:
• kommaseparert liste, hvor hvert element er en av
o en kolonne
o en beregning m.m.
o en select-setninger som returnerer en verdi for hver verdi av de andre i listen.
• et element kan gis et eget navn (alias). Mest vanlig for å gi resultatet av en beregning et folkelig navn. Skrives
<kolonne> / <beregning> AS <NyttNavn>.
<kommaseparert tabelliste>:
• enkleste form er en enkelt tabell eller en liste av tabeller med komma mellom
• et element i denne kan også være alias, på formen <tabellnavn> [AS] <aliasnavn>. Alias må brukes hvis man
trenger to eller flere benevnelser for samme tabell.
• elemenene i denne kan være I��ER JOI�, LEFT [OUTER] JOI� eller RIGHT [OUTER] JOI� .
Eks.: <tabell1> LEFT OUTER JOI� <tabell2> O� <tabell1>.<kolonne1> = <tabell2>.<kolonne2>
• inner, left og right join kan også nestes i flere nivåer.
<betingelse>:
• består av en eller flere <enkeltbetingelse> evt. med A�D eller OR mellom.
• paranteser brukes på vanlig måte, A�D binder sterkere enn OR
<enkeltbetingelse>:
• er et utsagn som, for en gitt rad i from-setningen, resulterer i enten sant eller usant.
• ofte <kolonnenavn> = <verdi>, men kan også være >, >=, <>, <=
• hvis du ikke bruker INNER / LEFT / OUTER JOIN er det viktig å ha med <tabell1>.PK = <tabell2>.FK
• BETWEE� <startverdi> A�D <sluttverdi>
• søking i starten av en streng (trunkert søking): <kolonne> LIKE ’<startstreng>%’
• søking i om delstrengen finnes i kolonnen: <kolonne> LIKE ’%<delstreng>%’
• �OT brukes til å negere en enkeltbetingelse eller sammensatt betingelse. Binder sterkere enn A�D og OR.
• <kolonne> IS [�OT] �ULL brukes for å sjekke om en kolonne er NULL, evt. ikke er NULL.
• delspørringer med IN / NOT IN:
<kolonne> [�OT] I�
(SELECT <enkeltkolonne> …………)
• delspørringer med EXISTS / NOT EXISTS:
[�OT] EXISTS (SELECT …………)
• ALL og A�Y brukes på resultatet av en delspørring.
o ALL er sann hvis alle i delspørringen oppfyller kriteriet. Usant hvis delspørringen er tom.
o A�Y er sann hvis noen (en eller flere) oppfyller kravet. Sant hvis delspørringen er tom. SOME er
ekvivalent med ANY. o Tips: WHERE <kolonne> >= ALL (SELECT <kolonneliste> …… ) er det samme som
WHERE <kolonne> = (SELECT max(<kolonne>) ………………….)
<ordnet kolonneliste med sortering>:
• som kolonneliste, men i sorteringsprioritet, og hver kolonne kan etterfølges av ASC eller DESC.
• hvis det ikke oppgis sortering, blir sorteringen i stigende rekkefølge.
3
Select-setning med gruppering / aggregering
For det som er felles for alle select-setning henvises det til 0.
SELECT <kommaseparert resultat- eller aggregeringsliste>
FROM <kommaseparert tabelliste>
[WHERE <betingelser>]
[GROUP BY <kommaseparert resultatliste>]
[HAVI�G <betingelse for gruppe>]
[ORDER BY <ordnet kolonneliste med sortering>];
<kommaseparert resultat- eller aggregeringsliste>:
• NB! hvert element er enten et element fra group by-listen eller en <aggregeringsfunksjon>.
<aggregeringsfunksjon>:
• {count(*)¦count(<kolonne>)¦sum(<kolonne>)¦max(<kolonne>)¦min(<kolonne>)¦avg(<kolonne>)¦ mfl.}
• <kolonne> kan også være en beregning
• noen systemer har også mulighet for count (distinct <kolonne>)), teller altså opp antall ulike.
• hvis vi ikke har med GROUP BY gjelder aggregeringen for hele tabellen
<betingelse for gruppe>:
• bare aktuelt dersom man har GROUP BY.
• betingelse som gjelder gruppen, innholder ofte en aggregeringsfunksjon, f.eks. count(*) > 1, sum(<kolonne>)
= (select sum( ……)
• kan inneholde A�D, OR, �OT osv., på samme måte som <betingelse>
I�SERT / UPDATE / DELETE
INSERT-setning I�SERT I�TO <tabell> [(<kommaseparert kolonneliste>)]
{ VALUES (<kommaseparert verdiliste>) ¦ <select-setning> } ;
UPDATE-setning
UPDATE <tabell>
SET <kommaseparert kolonne/verdi-liste>
[WHERE <betingelse>];
• I noen systemer kan <tabell> i stedet være en begrenset form for <kommaseparert tabellliste>
<kommaseparert kolonne/verdi-liste>:
• hvert element består av <kolonne> = <konstant> eller <kolonne> = <beregninget verdi, f.eks. på grunnlag av
tidligere verdi>
• oftest bare en slik kolonne/verdi-kombinasjon, men kan være flere.
DELETE-setning
DELETE FROM <tabell>
[WHERE <betingelse>];
4
Create / drop view
Create view
CREATE VIEW <utsnittsnavn> [(<kommaseparert kolonneliste>)]
AS <select-setning>;
• kolonnelisten er nødvendig hvis det ikke er fullt samsvar mellom kolonnenavn i select-setningen og utsnittet.
Drop view
DROP VIEW <utsnittsnavn>;
Indekser
CREATE [U�IQUE] I�DEX <indeksnavn> O� <tabell> (<ordnet kolonneliste med sortering>);
DROP I�DEX <indeksnavn>;
Noen systemer har andre mekanismer i tillegg.
Gi / frata rettigheter til tabeller, laging av brukere, databaser m.m.
GRA�T <rettigheter> O� <tabell el.l.> TO <bruker/gruppeliste> [WITH GRA�T OPTIO�];
REVOKE [<rettigheter> ¦ GRA�T OPTIO�] FROM <tabell el.l.> TO <bruker/gruppeliste>;
<rettigheter>:
kommasepartert liste med en eller flere av SELECT, I�SERT, UPDATE (<kolonnenavn>), DELETE, ALL m.fl..
<bruker/gruppeliste>:
kommasepart liste med en eller flere brukere eller grupper. I tillegg finnes ofte noen standardgrupper, som PUBLIC og
DBA.
Noen variasjoner og begrensninger fra et system til et annet.
Annet:
Muligheter for å lage / ta bort brukere etc., CREATE USER, gjerne sammen med IDE�TIFIED BY <passord>.
Tilsvarende DROP USER.
Muligheter for å lage nye databaser, CREATE DATABASE <databasenavn>
I noen systemer: laging av typer, domener etc.
5
Data
mod
elln
ota
sjon
i 3
dia
lek
ter:
Ch
en, k
råk
efot
og n
edsk
ale
rt U
ML
. E
n d
el d
etal
jer
og
var
iasj
oner
er
ute
latt
.
C
hen
s E
R
Krå
kef
ot
ned
ska
lert
UM
L
Gru
nn
leg
gen
de.
F
or
alle
dia
lek
ter:
•
attr
ibu
tter
kan
tas
med
ell
er u
tela
tes
(av
h.
av h
vo
r la
ngt
i
pro
sess
en o
g h
vo
r
sto
r m
od
elle
n b
lir)
•
dit
to f
or
do
men
er/d
atat
yp
er
•
det
fin
nes
var
ian
ter
for
å v
ise
min
./m
ax.
1
m
Beg
rep
: E
nti
tet(
styp
er),
rel
asjo
n(s
typ
er),
att
rib
utt
er.
Beg
rep
: E
nti
tet(
styp
er),
rel
asjo
n(s
typ
er),
att
rib
utt
er.
1
▼
er a
rbei
dss
ted
fo
r
▲ jo
bb
er i
*
Beg
rep
: E
nti
tet(
styp
er)
elle
r o
bje
ktk
lass
er,
(mult
ipli
site
ts)a
sso
sias
joner
, at
trib
utt
er.
Er
rep
etis
jon
er t
illa
tt?
Ja, p
å k
on
sep
tuel
t n
ivå
Nei
– s
pli
ttes
ut
i eg
ne
enti
tets
typ
er
Ja, p
å k
on
sep
tuel
t n
ivå
Ev
entu
elle
pri
mæ
r- o
g
frem
med
nø
kle
r
Tas
gje
rne
ikk
e m
ed
Hv
is d
et t
as m
ed:
Mar
ker
es f
.ek
s. m
ed
pri
mæ
rnø
kk
el:
un
der
stre
kin
g
frem
med
nø
kk
el:
pri
kk
et l
inje
, *
, el
.l.
Hv
is d
et t
as m
ed:
mar
ker
es g
jern
e m
ed
{P
K} h
hv
. {F
K} b
ak a
ttri
bu
ttn
avn
et.
Hv
is (
del
av
) b
egge
del
er:
{P
K,F
K}
En
tite
tise
rin
g
Kan
gjø
res,
men
van
ligv
is s
ette
s d
et
bar
e p
å at
trib
utt
er p
å re
lasj
on
en.
Bar
e n
ød
ven
dig
ved
2.
ord
ens
enti
teti
seri
ng (
enti
teti
seri
ng a
v n
oe
som
all
ered
e er
en
tite
tise
rt e
ller
ku
nn
e
væ
rt e
nti
teti
sert
).
Gjø
res
der
som
”re
lasj
on
en s
kal
in
neh
old
e
attr
ibu
tter
”.
evt.
med
att
rib
utt
er
Kan
gjø
res,
men
bar
e n
ød
ven
dig
ved
det
som
ell
ers
vil
le v
ært
2.
ord
ens
enti
teti
seri
ng.
Ass
osi
ativ
e en
tite
tsty
per
m/
attr
ibu
tter
kan
leg
ges
på:
*
*
arb
eid
s
sted
Avd
elin
g
Per
son
Per
sID
::::
::::
:
Avd
elin
g
job
ber
i
Avd
elin
g
Per
son
Per
sID
::::
::::
:
Ver
bal
bes
kri
vel
se.
Kan
evt.
set
tes
på
beg
ge
sid
er.
Alt
ernat
ivt
bru
kes
en r
oll
e
som
”re
lasj
onsn
avn”
Ro
llen
av
n /
rela
sjo
nsn
avn
Max
. n
ærm
est
enti
tets
-
typ
en,
evt.
min
. le
nger
un
na
1 e
r (o
g k
an s
kri
ves
) 1
..1
0..
1 m
å sk
rives
0..
1
* e
r (o
g k
an s
kri
ves
) 0
..*
1..
* b
eteg
ner
1
..m
.
Ver
bal
bes
kri
vel
se.
På
en
elle
r b
egge
sid
er.
Pil
vis
er
retn
ing
Per
son
nr
Per
son
Kurs
Per
son
Del
tagel
se
Kurs
Per
son
nav
n
Per
son
Per
son
Kurs
Del
tagel
se
Per
sID
::::
::::
::
Ekse
mp
el
med
att
rib
utt
er
min
. 0
, d
vs.
Avd
. kan h
a p
erso
n
6
Ord
reli
nje
Ord
re
n-æ
re r
ela
sjo
nst
yp
e
/ a
sso
sia
sjo
ner
(n
>2
)
Inn
ebyg
dt
i n
ota
sjo
nen
, in
gen
fo
rskje
ll
på
bin
ære
og n
-ære
.
Ev
t. e
nti
teti
seri
ng g
jøre
s fø
rst,
der
ette
r h
enges
nye
enti
tets
typ
er p
å d
en n
ye
enti
tets
typ
en.
Bru
k
f
or
å k
nytt
e d
em s
amm
en.
Ass
osi
ativ
e
en
tite
tsty
per
kan
bru
kes
Av
hen
gig
het
av
an
dre
enti
tets
typ
er
(en
en
tite
t er
av
hen
gig
av
eksi
sten
sen
av
en
an
nen
enti
tet)
kal
les
svak
en
tite
t /
wea
k e
nti
ty
Mar
ker
es v
ed a
t fr
emm
edn
øk
kel
en e
r en
del
av p
rim
ærn
øk
kel
en (
på
man
ge-
sid
en)
kal
les
ko
mp
osi
sjo
n.
Fin
nes
også
en
min
dre
ster
k k
ob
lin
g s
om
kal
les
agg
reger
ing (
mar
ker
es
med
i s
ted
et f
or
) .
Arv
Fin
nes
ik
ke,
må
i ti
lfel
le b
esk
riv
es
som
1:1
, m
en g
ir i
kk
e eg
entl
ig a
rv.
Fin
nes
ik
ke,
må
i ti
lfel
le b
esk
riv
es s
om
1:
1,
men
gir
ik
ke
egen
tlig
arv
.
{M
and
ato
ry,
Or}
I ti
lleg
g:
kan
bes
kri
ve
ko
mb
inas
jon
er a
v
man
dat
ory
/op
tio
nal
og o
m e
n o
ver
ord
net
kan
kob
les
til
max
. 1
ell
er t
il f
lere
un
der
ord
ned
e (o
r el
ler
and
), s
e o
ver
.
Kan
også
væ
re a
rv m
ed”e
tt b
arn
”, f
.ek
s.
bar
e ”K
un
de”
og ”
Ute
nla
nd
sku
nd
e”.
Fo
rho
ld t
il
no
rma
lise
rin
g
Må
evt.
gjø
re u
tsp
litt
inger
av
rep
etis
jon
er
Er
no
rmal
iser
t M
å gjø
re e
vt.
uts
pli
ttin
ger
av
rep
etis
jon
er
Ov
erfø
rin
g t
il
rela
sjo
nsd
ata
ba
ser
Ov
erfø
res
til
krå
kef
ot
el.l
. fø
rst
(fra
ko
nse
ptu
elt
til
logis
k n
ivå)
Alt
ern
ativ
t:
Leg
g p
å p
rim
ær-
og f
rem
med
nø
kle
r
Ev
t. r
epet
isjo
ner
må
tas
bo
rt.
En
tite
tsty
per
bli
r ti
l ta
bel
ler.
Rel
asjo
ner
so
m g
jeld
er 1
:m t
as b
ort
,
rela
sjo
ner
so
m g
jeld
er m
:m b
lir
egn
e
tab
elle
r.
Ev
t. m
ange-
til-
man
ge
må
enti
teti
sere
s. E
ller
s:
enti
tets
typ
er b
lir
til
tab
elle
r
Ev
t. r
epet
isjo
ner
må
tas
bo
rt.
En
tiet
styp
er/o
bje
ktk
lass
er b
lir
til
tab
elle
r.
Ass
osi
asjo
nsa
ttri
bu
tter
i m
:m b
lir
egn
e
tab
elle
r, a
nd
re m
:m e
nti
teti
sere
s.
Hø
yer
e o
rden
s re
lasj
on
styp
er b
lir
til
tab
elle
r.
Arv
må
om
form
ule
res
(fle
re a
lter
nat
iver
fin
nes
, in
gen
er
hel
t go
de)
. D
erso
m m
an
bru
ker
OR
DB
-utv
idel
ser
i sy
stem
er s
om
har
det
te,
kan
arv
im
ple
men
tere
s.
Ord
reli
nje
Ord
re
Ku
nd
e
Ute
nla
nd
s
ku
nd
e In
nenla
nd
s
ku
nd
e
Question 2Attached
1
SQL-syntaks – noen elementer
o Syntaksoversikten gjelder SQL2.
o Oversikten er ikke fullstendig og heller ikke helt presis, men er forhåpentligvis til hjelp.
o [ ] brukes om frivillige elementer, det er altså ikke med i SQL-språket.
o ¦ brukes som eller, det er altså ikke med i SQL-språket.
o { ….. } start, hhv. slutt, ” ”.
o < ….> brukes for å beskrive et språkelement. Disse beskrives eller er beskrevet tidligere i
syntaksbeskrivelsen eller følger av det generelle mønsteret fra andre.
o Fet skrift brukes om faste språkelementer
Create / alter / drop table-setning
Create table CREATE TABLE <tabellnavn> (<kommaseparert tabelldefinisjonsliste>);
<kommaseparert tabelldefinisjonsliste>:
• liste med en eller flere elementer som er enten <kolonnedefinisjon> eller <skrankedefinisjon>
• hvis listen består av flere elementer, er det komma mellom disse.
• listen må ha minst en <kolonnedefinisjon>, har som regel også minst en <skrankedefinisjon>
<kolonnedefinisjon>:
• <kolonnenavn> <datatype> [�OT �ULL] [DEFAULT <verdi>] , samt eventuell <skrankedefinisjon>, men
uten (den første) kommaseparerte kolonnelisten.
<skrankedefinisjon> (det finnes noen flere enn de som er omtalt her)
• [CO�STRAI�T <skrankenavn>] PRIMARY KEY (<kommaseparert kolonneliste>)
• [CO�STRAI�T <skrankenavn>] FOREIG� KEY (<kommaseparert kolonneliste>) REFERE�CES
<tabell> (<kommaseparert kolonneliste>) [O� UPDATE <ref.oper.>] [O� DELETE <ref.oper.>]
• [CO�STRAI�T <skrankenavn>] U�IQUE (<kommaseparert kolonneliste>)
• [CO�STRAI�T <skrankenavn>] CHECK (<betingelse>)
<kommaseparert kolonneliste>:
• en eller flere kolonner. Hvis det er flere kolonner er disse adskilt med komma
<ref.oper.>: (dvs. referanseintegritetsoperasjon)
• {RESTRICT ¦ �O ACTIO� ¦ CASCADE ¦ SET �ULL}
Alter table
ALTER TABLE <tabellnavn>
{ADD ¦ DROP} {[COLUM�]1 <kolonnedefinisjon> ¦ <skrankedefinisjon>};
Noen systemer mangler DROP.
Drop table
DROP TABLE <tabellnavn>;
1 Skal være med for noen systemer, skal utelates for andre.
2
Select-setninger.
Select-setning uten gruppering
SELECT [DISTI�CT] <kommaseparert resultatiste>
FROM <kommaseparert tabellliste>
[WHERE <betingelse>]
[ORDER BY <ordnet kolonneliste med sortering>];
<kommaseparert resultatliste>:
• kommaseparert liste, hvor hvert element er en av
o en kolonne
o en beregning m.m.
o en select-setninger som returnerer en verdi for hver verdi av de andre i listen.
• et element kan gis et eget navn (alias). Mest vanlig for å gi resultatet av en beregning et folkelig navn. Skrives
<kolonne> / <beregning> AS <NyttNavn>.
<kommaseparert tabelliste>:
• enkleste form er en enkelt tabell eller en liste av tabeller med komma mellom
• et element i denne kan også være alias, på formen <tabellnavn> [AS] <aliasnavn>. Alias må brukes hvis man
trenger to eller flere benevnelser for samme tabell.
• elemenene i denne kan være I��ER JOI�, LEFT [OUTER] JOI� eller RIGHT [OUTER] JOI� .
Eks.: <tabell1> LEFT OUTER JOI� <tabell2> O� <tabell1>.<kolonne1> = <tabell2>.<kolonne2>
• inner, left og right join kan også nestes i flere nivåer.
<betingelse>:
• består av en eller flere <enkeltbetingelse> evt. med A�D eller OR mellom.
• paranteser brukes på vanlig måte, A�D binder sterkere enn OR
<enkeltbetingelse>:
• er et utsagn som, for en gitt rad i from-setningen, resulterer i enten sant eller usant.
• ofte <kolonnenavn> = <verdi>, men kan også være >, >=, <>, <=
• hvis du ikke bruker INNER / LEFT / OUTER JOIN er det viktig å ha med <tabell1>.PK = <tabell2>.FK
• BETWEE� <startverdi> A�D <sluttverdi>
• søking i starten av en streng (trunkert søking): <kolonne> LIKE ’<startstreng>%’
• søking i om delstrengen finnes i kolonnen: <kolonne> LIKE ’%<delstreng>%’
• �OT brukes til å negere en enkeltbetingelse eller sammensatt betingelse. Binder sterkere enn A�D og OR.
• <kolonne> IS [�OT] �ULL brukes for å sjekke om en kolonne er NULL, evt. ikke er NULL.
• delspørringer med IN / NOT IN:
<kolonne> [�OT] I�
(SELECT <enkeltkolonne> …………)
• delspørringer med EXISTS / NOT EXISTS:
[�OT] EXISTS (SELECT …………)
• ALL og A�Y brukes på resultatet av en delspørring.
o ALL er sann hvis alle i delspørringen oppfyller kriteriet. Usant hvis delspørringen er tom.
o A�Y er sann hvis noen (en eller flere) oppfyller kravet. Sant hvis delspørringen er tom. SOME er
ekvivalent med ANY. o Tips: WHERE <kolonne> >= ALL (SELECT <kolonneliste> …… ) er det samme som
WHERE <kolonne> = (SELECT max(<kolonne>) ………………….)
<ordnet kolonneliste med sortering>:
• som kolonneliste, men i sorteringsprioritet, og hver kolonne kan etterfølges av ASC eller DESC.
• hvis det ikke oppgis sortering, blir sorteringen i stigende rekkefølge.
3
Select-setning med gruppering / aggregering
For det som er felles for alle select-setning henvises det til 0.
SELECT <kommaseparert resultat- eller aggregeringsliste>
FROM <kommaseparert tabelliste>
[WHERE <betingelser>]
[GROUP BY <kommaseparert resultatliste>]
[HAVI�G <betingelse for gruppe>]
[ORDER BY <ordnet kolonneliste med sortering>];
<kommaseparert resultat- eller aggregeringsliste>:
• NB! hvert element er enten et element fra group by-listen eller en <aggregeringsfunksjon>.
<aggregeringsfunksjon>:
• {count(*)¦count(<kolonne>)¦sum(<kolonne>)¦max(<kolonne>)¦min(<kolonne>)¦avg(<kolonne>)¦ mfl.}
• <kolonne> kan også være en beregning
• noen systemer har også mulighet for count (distinct <kolonne>)), teller altså opp antall ulike.
• hvis vi ikke har med GROUP BY gjelder aggregeringen for hele tabellen
<betingelse for gruppe>:
• bare aktuelt dersom man har GROUP BY.
• betingelse som gjelder gruppen, innholder ofte en aggregeringsfunksjon, f.eks. count(*) > 1, sum(<kolonne>)
= (select sum( ……)
• kan inneholde A�D, OR, �OT osv., på samme måte som <betingelse>
I�SERT / UPDATE / DELETE
INSERT-setning I�SERT I�TO <tabell> [(<kommaseparert kolonneliste>)]
{ VALUES (<kommaseparert verdiliste>) ¦ <select-setning> } ;
UPDATE-setning
UPDATE <tabell>
SET <kommaseparert kolonne/verdi-liste>
[WHERE <betingelse>];
• I noen systemer kan <tabell> i stedet være en begrenset form for <kommaseparert tabellliste>
<kommaseparert kolonne/verdi-liste>:
• hvert element består av <kolonne> = <konstant> eller <kolonne> = <beregninget verdi, f.eks. på grunnlag av
tidligere verdi>
• oftest bare en slik kolonne/verdi-kombinasjon, men kan være flere.
DELETE-setning
DELETE FROM <tabell>
[WHERE <betingelse>];
4
Create / drop view
Create view
CREATE VIEW <utsnittsnavn> [(<kommaseparert kolonneliste>)]
AS <select-setning>;
• kolonnelisten er nødvendig hvis det ikke er fullt samsvar mellom kolonnenavn i select-setningen og utsnittet.
Drop view
DROP VIEW <utsnittsnavn>;
Indekser
CREATE [U�IQUE] I�DEX <indeksnavn> O� <tabell> (<ordnet kolonneliste med sortering>);
DROP I�DEX <indeksnavn>;
Noen systemer har andre mekanismer i tillegg.
Gi / frata rettigheter til tabeller, laging av brukere, databaser m.m.
GRA�T <rettigheter> O� <tabell el.l.> TO <bruker/gruppeliste> [WITH GRA�T OPTIO�];
REVOKE [<rettigheter> ¦ GRA�T OPTIO�] FROM <tabell el.l.> TO <bruker/gruppeliste>;
<rettigheter>:
kommasepartert liste med en eller flere av SELECT, I�SERT, UPDATE (<kolonnenavn>), DELETE, ALL m.fl..
<bruker/gruppeliste>:
kommasepart liste med en eller flere brukere eller grupper. I tillegg finnes ofte noen standardgrupper, som PUBLIC og
DBA.
Noen variasjoner og begrensninger fra et system til et annet.
Annet:
Muligheter for å lage / ta bort brukere etc., CREATE USER, gjerne sammen med IDE�TIFIED BY <passord>.
Tilsvarende DROP USER.
Muligheter for å lage nye databaser, CREATE DATABASE <databasenavn>
I noen systemer: laging av typer, domener etc.
5
Data
mod
elln
ota
sjon
i 3
dia
lek
ter:
Ch
en, k
råk
efot
og n
edsk
ale
rt U
ML
. E
n d
el d
etal
jer
og
var
iasj
oner
er
ute
latt
.
C
hen
s E
R
Krå
kef
ot
ned
ska
lert
UM
L
Gru
nn
leg
gen
de.
F
or
alle
dia
lek
ter:
•
attr
ibu
tter
kan
tas
med
ell
er u
tela
tes
(av
h.
av h
vo
r la
ngt
i
pro
sess
en o
g h
vo
r
sto
r m
od
elle
n b
lir)
•
dit
to f
or
do
men
er/d
atat
yp
er
•
det
fin
nes
var
ian
ter
for
å v
ise
min
./m
ax.
1
m
Beg
rep
: E
nti
tet(
styp
er),
rel
asjo
n(s
typ
er),
att
rib
utt
er.
Beg
rep
: E
nti
tet(
styp
er),
rel
asjo
n(s
typ
er),
att
rib
utt
er.
1
▼
er a
rbei
dss
ted
fo
r
▲ jo
bb
er i
*
Beg
rep
: E
nti
tet(
styp
er)
elle
r o
bje
ktk
lass
er,
(mult
ipli
site
ts)a
sso
sias
joner
, at
trib
utt
er.
Er
rep
etis
jon
er t
illa
tt?
Ja, p
å k
on
sep
tuel
t n
ivå
Nei
– s
pli
ttes
ut
i eg
ne
enti
tets
typ
er
Ja, p
å k
on
sep
tuel
t n
ivå
Ev
entu
elle
pri
mæ
r- o
g
frem
med
nø
kle
r
Tas
gje
rne
ikk
e m
ed
Hv
is d
et t
as m
ed:
Mar
ker
es f
.ek
s. m
ed
pri
mæ
rnø
kk
el:
un
der
stre
kin
g
frem
med
nø
kk
el:
pri
kk
et l
inje
, *
, el
.l.
Hv
is d
et t
as m
ed:
mar
ker
es g
jern
e m
ed
{P
K} h
hv
. {F
K} b
ak a
ttri
bu
ttn
avn
et.
Hv
is (
del
av
) b
egge
del
er:
{P
K,F
K}
En
tite
tise
rin
g
Kan
gjø
res,
men
van
ligv
is s
ette
s d
et
bar
e p
å at
trib
utt
er p
å re
lasj
on
en.
Bar
e n
ød
ven
dig
ved
2.
ord
ens
enti
teti
seri
ng (
enti
teti
seri
ng a
v n
oe
som
all
ered
e er
en
tite
tise
rt e
ller
ku
nn
e
væ
rt e
nti
teti
sert
).
Gjø
res
der
som
”re
lasj
on
en s
kal
in
neh
old
e
attr
ibu
tter
”.
evt.
med
att
rib
utt
er
Kan
gjø
res,
men
bar
e n
ød
ven
dig
ved
det
som
ell
ers
vil
le v
ært
2.
ord
ens
enti
teti
seri
ng.
Ass
osi
ativ
e en
tite
tsty
per
m/
attr
ibu
tter
kan
leg
ges
på:
*
*
arb
eid
s
sted
Avd
elin
g
Per
son
Per
sID
::::
::::
:
Avd
elin
g
job
ber
i
Avd
elin
g
Per
son
Per
sID
::::
::::
:
Ver
bal
bes
kri
vel
se.
Kan
evt.
set
tes
på
beg
ge
sid
er.
Alt
ernat
ivt
bru
kes
en r
oll
e
som
”re
lasj
onsn
avn”
Ro
llen
av
n /
rela
sjo
nsn
avn
Max
. n
ærm
est
enti
tets
-
typ
en,
evt.
min
. le
nger
un
na
1 e
r (o
g k
an s
kri
ves
) 1
..1
0..
1 m
å sk
rives
0..
1
* e
r (o
g k
an s
kri
ves
) 0
..*
1..
* b
eteg
ner
1
..m
.
Ver
bal
bes
kri
vel
se.
På
en
elle
r b
egge
sid
er.
Pil
vis
er
retn
ing
Per
son
nr
Per
son
Kurs
Per
son
Del
tagel
se
Kurs
Per
son
nav
n
Per
son
Per
son
Kurs
Del
tagel
se
Per
sID
::::
::::
::
Ekse
mp
el
med
att
rib
utt
er
min
. 0
, d
vs.
Avd
. kan h
a p
erso
n
6
Ord
reli
nje
Ord
re
n-æ
re r
ela
sjo
nst
yp
e
/ a
sso
sia
sjo
ner
(n
>2
)
Inn
ebyg
dt
i n
ota
sjo
nen
, in
gen
fo
rskje
ll
på
bin
ære
og n
-ære
.
Ev
t. e
nti
teti
seri
ng g
jøre
s fø
rst,
der
ette
r h
enges
nye
enti
tets
typ
er p
å d
en n
ye
enti
tets
typ
en.
Bru
k
f
or
å k
nytt
e d
em s
amm
en.
Ass
osi
ativ
e
en
tite
tsty
per
kan
bru
kes
Av
hen
gig
het
av
an
dre
enti
tets
typ
er
(en
en
tite
t er
av
hen
gig
av
eksi
sten
sen
av
en
an
nen
enti
tet)
kal
les
svak
en
tite
t /
wea
k e
nti
ty
Mar
ker
es v
ed a
t fr
emm
edn
øk
kel
en e
r en
del
av p
rim
ærn
øk
kel
en (
på
man
ge-
sid
en)
kal
les
ko
mp
osi
sjo
n.
Fin
nes
også
en
min
dre
ster
k k
ob
lin
g s
om
kal
les
agg
reger
ing (
mar
ker
es
med
i s
ted
et f
or
) .
Arv
Fin
nes
ik
ke,
må
i ti
lfel
le b
esk
riv
es
som
1:1
, m
en g
ir i
kk
e eg
entl
ig a
rv.
Fin
nes
ik
ke,
må
i ti
lfel
le b
esk
riv
es s
om
1:
1,
men
gir
ik
ke
egen
tlig
arv
.
{M
and
ato
ry,
Or}
I ti
lleg
g:
kan
bes
kri
ve
ko
mb
inas
jon
er a
v
man
dat
ory
/op
tio
nal
og o
m e
n o
ver
ord
net
kan
kob
les
til
max
. 1
ell
er t
il f
lere
un
der
ord
ned
e (o
r el
ler
and
), s
e o
ver
.
Kan
også
væ
re a
rv m
ed”e
tt b
arn
”, f
.ek
s.
bar
e ”K
un
de”
og ”
Ute
nla
nd
sku
nd
e”.
Fo
rho
ld t
il
no
rma
lise
rin
g
Må
evt.
gjø
re u
tsp
litt
inger
av
rep
etis
jon
er
Er
no
rmal
iser
t M
å gjø
re e
vt.
uts
pli
ttin
ger
av
rep
etis
jon
er
Ov
erfø
rin
g t
il
rela
sjo
nsd
ata
ba
ser
Ov
erfø
res
til
krå
kef
ot
el.l
. fø
rst
(fra
ko
nse
ptu
elt
til
logis
k n
ivå)
Alt
ern
ativ
t:
Leg
g p
å p
rim
ær-
og f
rem
med
nø
kle
r
Ev
t. r
epet
isjo
ner
må
tas
bo
rt.
En
tite
tsty
per
bli
r ti
l ta
bel
ler.
Rel
asjo
ner
so
m g
jeld
er 1
:m t
as b
ort
,
rela
sjo
ner
so
m g
jeld
er m
:m b
lir
egn
e
tab
elle
r.
Ev
t. m
ange-
til-
man
ge
må
enti
teti
sere
s. E
ller
s:
enti
tets
typ
er b
lir
til
tab
elle
r
Ev
t. r
epet
isjo
ner
må
tas
bo
rt.
En
tiet
styp
er/o
bje
ktk
lass
er b
lir
til
tab
elle
r.
Ass
osi
asjo
nsa
ttri
bu
tter
i m
:m b
lir
egn
e
tab
elle
r, a
nd
re m
:m e
nti
teti
sere
s.
Hø
yer
e o
rden
s re
lasj
on
styp
er b
lir
til
tab
elle
r.
Arv
må
om
form
ule
res
(fle
re a
lter
nat
iver
fin
nes
, in
gen
er
hel
t go
de)
. D
erso
m m
an
bru
ker
OR
DB
-utv
idel
ser
i sy
stem
er s
om
har
det
te,
kan
arv
im
ple
men
tere
s.
Ord
reli
nje
Ord
re
Ku
nd
e
Ute
nla
nd
s
ku
nd
e In
nenla
nd
s
ku
nd
e
Question 3Attached
1
SQL-syntaks – noen elementer
o Syntaksoversikten gjelder SQL2.
o Oversikten er ikke fullstendig og heller ikke helt presis, men er forhåpentligvis til hjelp.
o [ ] brukes om frivillige elementer, det er altså ikke med i SQL-språket.
o ¦ brukes som eller, det er altså ikke med i SQL-språket.
o { ….. } start, hhv. slutt, ” ”.
o < ….> brukes for å beskrive et språkelement. Disse beskrives eller er beskrevet tidligere i
syntaksbeskrivelsen eller følger av det generelle mønsteret fra andre.
o Fet skrift brukes om faste språkelementer
Create / alter / drop table-setning
Create table CREATE TABLE <tabellnavn> (<kommaseparert tabelldefinisjonsliste>);
<kommaseparert tabelldefinisjonsliste>:
• liste med en eller flere elementer som er enten <kolonnedefinisjon> eller <skrankedefinisjon>
• hvis listen består av flere elementer, er det komma mellom disse.
• listen må ha minst en <kolonnedefinisjon>, har som regel også minst en <skrankedefinisjon>
<kolonnedefinisjon>:
• <kolonnenavn> <datatype> [�OT �ULL] [DEFAULT <verdi>] , samt eventuell <skrankedefinisjon>, men
uten (den første) kommaseparerte kolonnelisten.
<skrankedefinisjon> (det finnes noen flere enn de som er omtalt her)
• [CO�STRAI�T <skrankenavn>] PRIMARY KEY (<kommaseparert kolonneliste>)
• [CO�STRAI�T <skrankenavn>] FOREIG� KEY (<kommaseparert kolonneliste>) REFERE�CES
<tabell> (<kommaseparert kolonneliste>) [O� UPDATE <ref.oper.>] [O� DELETE <ref.oper.>]
• [CO�STRAI�T <skrankenavn>] U�IQUE (<kommaseparert kolonneliste>)
• [CO�STRAI�T <skrankenavn>] CHECK (<betingelse>)
<kommaseparert kolonneliste>:
• en eller flere kolonner. Hvis det er flere kolonner er disse adskilt med komma
<ref.oper.>: (dvs. referanseintegritetsoperasjon)
• {RESTRICT ¦ �O ACTIO� ¦ CASCADE ¦ SET �ULL}
Alter table
ALTER TABLE <tabellnavn>
{ADD ¦ DROP} {[COLUM�]1 <kolonnedefinisjon> ¦ <skrankedefinisjon>};
Noen systemer mangler DROP.
Drop table
DROP TABLE <tabellnavn>;
1 Skal være med for noen systemer, skal utelates for andre.
2
Select-setninger.
Select-setning uten gruppering
SELECT [DISTI�CT] <kommaseparert resultatiste>
FROM <kommaseparert tabellliste>
[WHERE <betingelse>]
[ORDER BY <ordnet kolonneliste med sortering>];
<kommaseparert resultatliste>:
• kommaseparert liste, hvor hvert element er en av
o en kolonne
o en beregning m.m.
o en select-setninger som returnerer en verdi for hver verdi av de andre i listen.
• et element kan gis et eget navn (alias). Mest vanlig for å gi resultatet av en beregning et folkelig navn. Skrives
<kolonne> / <beregning> AS <NyttNavn>.
<kommaseparert tabelliste>:
• enkleste form er en enkelt tabell eller en liste av tabeller med komma mellom
• et element i denne kan også være alias, på formen <tabellnavn> [AS] <aliasnavn>. Alias må brukes hvis man
trenger to eller flere benevnelser for samme tabell.
• elemenene i denne kan være I��ER JOI�, LEFT [OUTER] JOI� eller RIGHT [OUTER] JOI� .
Eks.: <tabell1> LEFT OUTER JOI� <tabell2> O� <tabell1>.<kolonne1> = <tabell2>.<kolonne2>
• inner, left og right join kan også nestes i flere nivåer.
<betingelse>:
• består av en eller flere <enkeltbetingelse> evt. med A�D eller OR mellom.
• paranteser brukes på vanlig måte, A�D binder sterkere enn OR
<enkeltbetingelse>:
• er et utsagn som, for en gitt rad i from-setningen, resulterer i enten sant eller usant.
• ofte <kolonnenavn> = <verdi>, men kan også være >, >=, <>, <=
• hvis du ikke bruker INNER / LEFT / OUTER JOIN er det viktig å ha med <tabell1>.PK = <tabell2>.FK
• BETWEE� <startverdi> A�D <sluttverdi>
• søking i starten av en streng (trunkert søking): <kolonne> LIKE ’<startstreng>%’
• søking i om delstrengen finnes i kolonnen: <kolonne> LIKE ’%<delstreng>%’
• �OT brukes til å negere en enkeltbetingelse eller sammensatt betingelse. Binder sterkere enn A�D og OR.
• <kolonne> IS [�OT] �ULL brukes for å sjekke om en kolonne er NULL, evt. ikke er NULL.
• delspørringer med IN / NOT IN:
<kolonne> [�OT] I�
(SELECT <enkeltkolonne> …………)
• delspørringer med EXISTS / NOT EXISTS:
[�OT] EXISTS (SELECT …………)
• ALL og A�Y brukes på resultatet av en delspørring.
o ALL er sann hvis alle i delspørringen oppfyller kriteriet. Usant hvis delspørringen er tom.
o A�Y er sann hvis noen (en eller flere) oppfyller kravet. Sant hvis delspørringen er tom. SOME er
ekvivalent med ANY. o Tips: WHERE <kolonne> >= ALL (SELECT <kolonneliste> …… ) er det samme som
WHERE <kolonne> = (SELECT max(<kolonne>) ………………….)
<ordnet kolonneliste med sortering>:
• som kolonneliste, men i sorteringsprioritet, og hver kolonne kan etterfølges av ASC eller DESC.
• hvis det ikke oppgis sortering, blir sorteringen i stigende rekkefølge.
3
Select-setning med gruppering / aggregering
For det som er felles for alle select-setning henvises det til 0.
SELECT <kommaseparert resultat- eller aggregeringsliste>
FROM <kommaseparert tabelliste>
[WHERE <betingelser>]
[GROUP BY <kommaseparert resultatliste>]
[HAVI�G <betingelse for gruppe>]
[ORDER BY <ordnet kolonneliste med sortering>];
<kommaseparert resultat- eller aggregeringsliste>:
• NB! hvert element er enten et element fra group by-listen eller en <aggregeringsfunksjon>.
<aggregeringsfunksjon>:
• {count(*)¦count(<kolonne>)¦sum(<kolonne>)¦max(<kolonne>)¦min(<kolonne>)¦avg(<kolonne>)¦ mfl.}
• <kolonne> kan også være en beregning
• noen systemer har også mulighet for count (distinct <kolonne>)), teller altså opp antall ulike.
• hvis vi ikke har med GROUP BY gjelder aggregeringen for hele tabellen
<betingelse for gruppe>:
• bare aktuelt dersom man har GROUP BY.
• betingelse som gjelder gruppen, innholder ofte en aggregeringsfunksjon, f.eks. count(*) > 1, sum(<kolonne>)
= (select sum( ……)
• kan inneholde A�D, OR, �OT osv., på samme måte som <betingelse>
I�SERT / UPDATE / DELETE
INSERT-setning I�SERT I�TO <tabell> [(<kommaseparert kolonneliste>)]
{ VALUES (<kommaseparert verdiliste>) ¦ <select-setning> } ;
UPDATE-setning
UPDATE <tabell>
SET <kommaseparert kolonne/verdi-liste>
[WHERE <betingelse>];
• I noen systemer kan <tabell> i stedet være en begrenset form for <kommaseparert tabellliste>
<kommaseparert kolonne/verdi-liste>:
• hvert element består av <kolonne> = <konstant> eller <kolonne> = <beregninget verdi, f.eks. på grunnlag av
tidligere verdi>
• oftest bare en slik kolonne/verdi-kombinasjon, men kan være flere.
DELETE-setning
DELETE FROM <tabell>
[WHERE <betingelse>];
4
Create / drop view
Create view
CREATE VIEW <utsnittsnavn> [(<kommaseparert kolonneliste>)]
AS <select-setning>;
• kolonnelisten er nødvendig hvis det ikke er fullt samsvar mellom kolonnenavn i select-setningen og utsnittet.
Drop view
DROP VIEW <utsnittsnavn>;
Indekser
CREATE [U�IQUE] I�DEX <indeksnavn> O� <tabell> (<ordnet kolonneliste med sortering>);
DROP I�DEX <indeksnavn>;
Noen systemer har andre mekanismer i tillegg.
Gi / frata rettigheter til tabeller, laging av brukere, databaser m.m.
GRA�T <rettigheter> O� <tabell el.l.> TO <bruker/gruppeliste> [WITH GRA�T OPTIO�];
REVOKE [<rettigheter> ¦ GRA�T OPTIO�] FROM <tabell el.l.> TO <bruker/gruppeliste>;
<rettigheter>:
kommasepartert liste med en eller flere av SELECT, I�SERT, UPDATE (<kolonnenavn>), DELETE, ALL m.fl..
<bruker/gruppeliste>:
kommasepart liste med en eller flere brukere eller grupper. I tillegg finnes ofte noen standardgrupper, som PUBLIC og
DBA.
Noen variasjoner og begrensninger fra et system til et annet.
Annet:
Muligheter for å lage / ta bort brukere etc., CREATE USER, gjerne sammen med IDE�TIFIED BY <passord>.
Tilsvarende DROP USER.
Muligheter for å lage nye databaser, CREATE DATABASE <databasenavn>
I noen systemer: laging av typer, domener etc.
5
Data
mod
elln
ota
sjon
i 3
dia
lek
ter:
Ch
en, k
råk
efot
og n
edsk
ale
rt U
ML
. E
n d
el d
etal
jer
og
var
iasj
oner
er
ute
latt
.
C
hen
s E
R
Krå
kef
ot
ned
ska
lert
UM
L
Gru
nn
leg
gen
de.
F
or
alle
dia
lek
ter:
•
attr
ibu
tter
kan
tas
med
ell
er u
tela
tes
(av
h.
av h
vo
r la
ngt
i
pro
sess
en o
g h
vo
r
sto
r m
od
elle
n b
lir)
•
dit
to f
or
do
men
er/d
atat
yp
er
•
det
fin
nes
var
ian
ter
for
å v
ise
min
./m
ax.
1
m
Beg
rep
: E
nti
tet(
styp
er),
rel
asjo
n(s
typ
er),
att
rib
utt
er.
Beg
rep
: E
nti
tet(
styp
er),
rel
asjo
n(s
typ
er),
att
rib
utt
er.
1
▼
er a
rbei
dss
ted
fo
r
▲ jo
bb
er i
*
Beg
rep
: E
nti
tet(
styp
er)
elle
r o
bje
ktk
lass
er,
(mult
ipli
site
ts)a
sso
sias
joner
, at
trib
utt
er.
Er
rep
etis
jon
er t
illa
tt?
Ja, p
å k
on
sep
tuel
t n
ivå
Nei
– s
pli
ttes
ut
i eg
ne
enti
tets
typ
er
Ja, p
å k
on
sep
tuel
t n
ivå
Ev
entu
elle
pri
mæ
r- o
g
frem
med
nø
kle
r
Tas
gje
rne
ikk
e m
ed
Hv
is d
et t
as m
ed:
Mar
ker
es f
.ek
s. m
ed
pri
mæ
rnø
kk
el:
un
der
stre
kin
g
frem
med
nø
kk
el:
pri
kk
et l
inje
, *
, el
.l.
Hv
is d
et t
as m
ed:
mar
ker
es g
jern
e m
ed
{P
K} h
hv
. {F
K} b
ak a
ttri
bu
ttn
avn
et.
Hv
is (
del
av
) b
egge
del
er:
{P
K,F
K}
En
tite
tise
rin
g
Kan
gjø
res,
men
van
ligv
is s
ette
s d
et
bar
e p
å at
trib
utt
er p
å re
lasj
on
en.
Bar
e n
ød
ven
dig
ved
2.
ord
ens
enti
teti
seri
ng (
enti
teti
seri
ng a
v n
oe
som
all
ered
e er
en
tite
tise
rt e
ller
ku
nn
e
væ
rt e
nti
teti
sert
).
Gjø
res
der
som
”re
lasj
on
en s
kal
in
neh
old
e
attr
ibu
tter
”.
evt.
med
att
rib
utt
er
Kan
gjø
res,
men
bar
e n
ød
ven
dig
ved
det
som
ell
ers
vil
le v
ært
2.
ord
ens
enti
teti
seri
ng.
Ass
osi
ativ
e en
tite
tsty
per
m/
attr
ibu
tter
kan
leg
ges
på:
*
*
arb
eid
s
sted
Avd
elin
g
Per
son
Per
sID
::::
::::
:
Avd
elin
g
job
ber
i
Avd
elin
g
Per
son
Per
sID
::::
::::
:
Ver
bal
bes
kri
vel
se.
Kan
evt.
set
tes
på
beg
ge
sid
er.
Alt
ernat
ivt
bru
kes
en r
oll
e
som
”re
lasj
onsn
avn”
Ro
llen
av
n /
rela
sjo
nsn
avn
Max
. n
ærm
est
enti
tets
-
typ
en,
evt.
min
. le
nger
un
na
1 e
r (o
g k
an s
kri
ves
) 1
..1
0..
1 m
å sk
rives
0..
1
* e
r (o
g k
an s
kri
ves
) 0
..*
1..
* b
eteg
ner
1
..m
.
Ver
bal
bes
kri
vel
se.
På
en
elle
r b
egge
sid
er.
Pil
vis
er
retn
ing
Per
son
nr
Per
son
Kurs
Per
son
Del
tagel
se
Kurs
Per
son
nav
n
Per
son
Per
son
Kurs
Del
tagel
se
Per
sID
::::
::::
::
Ekse
mp
el
med
att
rib
utt
er
min
. 0
, d
vs.
Avd
. kan h
a p
erso
n
6
Ord
reli
nje
Ord
re
n-æ
re r
ela
sjo
nst
yp
e
/ a
sso
sia
sjo
ner
(n
>2
)
Inn
ebyg
dt
i n
ota
sjo
nen
, in
gen
fo
rskje
ll
på
bin
ære
og n
-ære
.
Ev
t. e
nti
teti
seri
ng g
jøre
s fø
rst,
der
ette
r h
enges
nye
enti
tets
typ
er p
å d
en n
ye
enti
tets
typ
en.
Bru
k
f
or
å k
nytt
e d
em s
amm
en.
Ass
osi
ativ
e
en
tite
tsty
per
kan
bru
kes
Av
hen
gig
het
av
an
dre
enti
tets
typ
er
(en
en
tite
t er
av
hen
gig
av
eksi
sten
sen
av
en
an
nen
enti
tet)
kal
les
svak
en
tite
t /
wea
k e
nti
ty
Mar
ker
es v
ed a
t fr
emm
edn
øk
kel
en e
r en
del
av p
rim
ærn
øk
kel
en (
på
man
ge-
sid
en)
kal
les
ko
mp
osi
sjo
n.
Fin
nes
også
en
min
dre
ster
k k
ob
lin
g s
om
kal
les
agg
reger
ing (
mar
ker
es
med
i s
ted
et f
or
) .
Arv
Fin
nes
ik
ke,
må
i ti
lfel
le b
esk
riv
es
som
1:1
, m
en g
ir i
kk
e eg
entl
ig a
rv.
Fin
nes
ik
ke,
må
i ti
lfel
le b
esk
riv
es s
om
1:
1,
men
gir
ik
ke
egen
tlig
arv
.
{M
and
ato
ry,
Or}
I ti
lleg
g:
kan
bes
kri
ve
ko
mb
inas
jon
er a
v
man
dat
ory
/op
tio
nal
og o
m e
n o
ver
ord
net
kan
kob
les
til
max
. 1
ell
er t
il f
lere
un
der
ord
ned
e (o
r el
ler
and
), s
e o
ver
.
Kan
også
væ
re a
rv m
ed”e
tt b
arn
”, f
.ek
s.
bar
e ”K
un
de”
og ”
Ute
nla
nd
sku
nd
e”.
Fo
rho
ld t
il
no
rma
lise
rin
g
Må
evt.
gjø
re u
tsp
litt
inger
av
rep
etis
jon
er
Er
no
rmal
iser
t M
å gjø
re e
vt.
uts
pli
ttin
ger
av
rep
etis
jon
er
Ov
erfø
rin
g t
il
rela
sjo
nsd
ata
ba
ser
Ov
erfø
res
til
krå
kef
ot
el.l
. fø
rst
(fra
ko
nse
ptu
elt
til
logis
k n
ivå)
Alt
ern
ativ
t:
Leg
g p
å p
rim
ær-
og f
rem
med
nø
kle
r
Ev
t. r
epet
isjo
ner
må
tas
bo
rt.
En
tite
tsty
per
bli
r ti
l ta
bel
ler.
Rel
asjo
ner
so
m g
jeld
er 1
:m t
as b
ort
,
rela
sjo
ner
so
m g
jeld
er m
:m b
lir
egn
e
tab
elle
r.
Ev
t. m
ange-
til-
man
ge
må
enti
teti
sere
s. E
ller
s:
enti
tets
typ
er b
lir
til
tab
elle
r
Ev
t. r
epet
isjo
ner
må
tas
bo
rt.
En
tiet
styp
er/o
bje
ktk
lass
er b
lir
til
tab
elle
r.
Ass
osi
asjo
nsa
ttri
bu
tter
i m
:m b
lir
egn
e
tab
elle
r, a
nd
re m
:m e
nti
teti
sere
s.
Hø
yer
e o
rden
s re
lasj
on
styp
er b
lir
til
tab
elle
r.
Arv
må
om
form
ule
res
(fle
re a
lter
nat
iver
fin
nes
, in
gen
er
hel
t go
de)
. D
erso
m m
an
bru
ker
OR
DB
-utv
idel
ser
i sy
stem
er s
om
har
det
te,
kan
arv
im
ple
men
tere
s.
Ord
reli
nje
Ord
re
Ku
nd
e
Ute
nla
nd
s
ku
nd
e In
nenla
nd
s
ku
nd
e