Constraints zijn bedoeld voor het afdwingen van bepaalde invoer op velden.
Voorbeelden van constraints zijn:
- Not Null: Voor het afdwingen van verplichte invoer van een bepaald veld.
- Unique: Voor het afdwingen van een unieke waarde in een tabel.
- Primary key: Voor het afdwingen van een primaire waarde in een tabel, deze dient als sleutel.
- Foreign key: Voor het leggen van relaties tussen meerdere tabellen.
Not Null
Het is mogelijk om lege waardes in een tabel op te slaan, dit zijn NULL
waardes. Met de NOT NULL
constraint kan aangegeven worden of een bepaald veld verplicht ingevuld moet worden. dit veld mag dus geen NULL
waarde bevatten. De constraint kan worden toegevoegd bij het maken van de tabel.
CREATE TABLE tabelnaam
(
kolomnaam1 datatype NOT NULL,
kolomnaam2 datatype
)
Genomen het voorbeeld waarin een tabel wordt gemaakt voor het opslaan van persoonsgevens. Deze gegevens bestaan onder andere uit de voor, – en achternaam, woonplaats en geslacht.
In het voorbeeld hieronder zal worden afgedwongen dat de voor, – en achternaam geen lege waarde (NULL
) mag bevatten. De velden moeten dus worden ingevuld.
CREATE TABLE persoon
(
id int,
voornaam varchar(255) NOT NULL,
achternaam varchar(255) NOT NULL,
woonplaats varchar(255),
geslacht varchar(1)
)
Unique
Er zijn situaties waarin de combinatie van één of meerdere kolommen uniek moet zijn. Hierbij valt te denken aan unieke ID nummers. Het afdwingen van unieke waardes kan gedaan worden met de UNIQUE
constraint.
De syntax van de UNIQUE
contraint ziet er als volgt uit CONSTRAINT Constraintnaam UNIQUE kolomnaam1
Het is ook mogelijk om een combinatie van meerdere velden als constraint op te geven door middel CONSTRAINT Constraintnaam UNIQUE ( kolomnaam1, kolomnaam2 )
Identificatie
Hierboven is Constraintnaam gebruikt als naam voor de constraint. Deze naam is bedoeld als identificatie van de constraint. Deze identificatie moet uniek zijn over alle constraints voor de tabel in kwestie.
UNIQUE
constraint toevoegen
Het toepassen van de UNIQUE
constraint kan worden gedaan bij het maken van de tabel.
CREATE TABLE tabelnaam
(
kolomnaam1 datatype NOT NULL,
kolomnaam2 datatype,
CONSTRAINT Constraintnaam UNIQUE kolomnaam1
)
Het is ook mogelijk om een constraint later toe te voegen voor een bestaande table. Hiervoor kan het ALTER TABLE
statement gebruikt worden.
ALTER TABLE tabelnaam ADD CONSTRAINT Constraintnaam UNIQUE ( kolomnaam1, kolomnaam2 )
UNIQUE
constraint verwijderen
Voor het verwijderen van de UNIQUE constraint kan het ALTER TABLE
statement gebruikt worden.
In MySQL is het statement ALTER TABLE tabelnaam DROP INDEX Constraintnaam;
en voor de ‘meeste’ andere databases is dit ALTER TABLE tabelnaam DROP CONSTRAINT Constraintnaam;
Primary key
De primary key, ofwel primaire sleutel, identificeert ieder record in een tabel. De primary key zorgt ervoor dat ieder veld dat ingevoerd wordt niet leeg mag zijn en dat het een unieke waarde heeft. Per tabel kan er maximaal één primary key gedefinieerd worden.
CREATE TABLE tabelnaam
(
kolomnaam1 datatype,
kolomnaam2 datatype,
CONSTRAINT Constraintnaam PRIMARY KEY (kolomnaam)
)
Foreign key
De foreign key, oftewel verwijzende sleutel, verwijst naar data in een andere tabel. Met de foreign key kunnen relaties worden gelegd tussen verschillende tabellen. De syntax voor het aanmaken van een foreign key, ziet er als volgt uit:
CREATE TABLE tabelnaam
(
kolomnaam1 datatype,
kolomnaam2 datatype,
CONSTRAINT Constraintnaam FOREIGN KEY (kolomnaam)
REFERENCES tabelnaam(kolomnaam)
)
In onderstaand voorbeeld wordt de tabel orders gemaakt, in deze tabel wordt het id-nummer opgeslagen, de datum van inboeken en een verwijzing naar het persoonsnummer van tabel Persoon. De kolom persoonNr zal verwijzen naar het het kolom id in de tabel Persoon.
CREATE TABLE Orders
(
orderNr int,
persoonNr int,
orderDatum datetime,
CONSTRAINT PK_persoon PRIMARY KEY (id)
CONSTRAINT FK_Order_personen FOREIGN KEY (persoonNr)
REFERENCES Persoon(id)
)