SQL Flashcards
relasjonsterminologi
relasjon/tabell relasjonsnavn relasjonsskjema attributt instans / forkomst / tuppel
lage en tabell
create table R (A1 D1 [S1], ... An Dn [Sn], [liste av skranker] );
R er navnet på relasjonen/tabellen Ai er et atributt
Dj er et domene
Sk er en skranke
[ ] betyr at dette leddet er en valgfri del av setningen
datatyper i PostgreSQL
int(eger) real char(n) varchar(n) numeric(n, d) boolean date time timestamp bit(n) bit varying(n)
vanlige skranker
NOT NULL
UNIQUE
PRIMARY KEY
CHECK (v = … OR v = …)
legge inn data i tabeller
INSERT INTO R(A1, A2, …, Ak)
VALUES (v1, v2, …, vk)
Attributtlisten kan sløyfes hvis den dekker samtlige attributter i R og følger attributtenes default rekkefølge
hente data fra tabeller
SELECT [DISTINCT] FROM [WHERE ] [GROUP BY ] [HAVING ] [ORDER BY [ASC | DESC] [ [ASC | DESC] ] ... ];
Hva slags samling av tupler bruker select?
bag
Altså kan samme tuppel forekomme flere ganger.
join-betingelse
kobler sammen forekomster i ulike tabeller forutsatt at verdiene i de gitte attributtene er like
lovlige uttrykk/relasjoner i where-betingelser
=
<> (not equal)
=
LIKE (ved tekststreng)
BETWEEN
IS (NOT) NULL (NOT) EXISTS (NOT) IN ALL ANY
date ‘yyyy-mm-dd’
time ‘hh:mm:ss+hh’
…
wildcards ved bruk av LIKE
% - vilkårlig sekvens (null eller flere)
_ - ett vilkårlig tegn
fremmednøkkel i SQL
navn CHAR(20) REFERENCES Person(navn)
verdiskranke i SQL
kjonn CHAR(1) NOT NULL CHECK(kjonn IN (‘M’, ‘F’))
enkeltrolleskranker som bare går mellom gruppererroller, blir til forekomstrestirksjoner som ser på ___
NULL
dobbeltrolleskranker hvor gruppererrollene sammenliknes, blir til forekomstrestriksjoner som ser på ___
verdiene i attributtene
CHECK( (gren_blir_saget IS NULL) or
gren_blir_sittet_på IS NULL) or
(gren_blir_saget <> gren_blir_sittet_på)
Hvordan håndheves fremmednøkler?
- Ved INSERT på A må vi sjekke om fremmednøkkelen har en lovlig verdi (peker på en forkomst av B)
- Ved DELETE av en B må vi sjekke at ingen A har en fremmednøkkel til denne forekomsten av B