🏗️ CREATE TABLE
Database-schema ontwerpen — datatypes, constraints en relaties tussen tabellen.
Datatypes in SQLite
Elke kolom heeft een datatype dat bepaalt welke waarden erin kunnen. SQLite gebruikt vijf basis-datatypes.
INTEGERGeheel getal: 1, 42, -7REALDecimaal getal: 3.14, 99.99TEXTTekst: 'Anna', 'email@x.nl'BLOBBinaire data: afbeeldingenNULLOntbrekende waardeVARCHAR(255)Tekst met max lengteBOOLEANtrue/false (SQLite: 0/1)DATEDatum: '2024-01-15'DATETIMEDatum + tijdDECIMAL(10,2)Geld: 1234567890.99SQLite laat je ook schrijven als INT, VARCHAR, BOOLEAN — het converteert intern. MySQL/PostgreSQL zijn stricter.
Constraints — regels afdwingen
Constraints zijn regels op kolommen die de database zelf afdwingt. Ze voorkomen ongeldige data.
PRIMARY KEY
Unieke identifier, nooit NULL. Slechts één per tabel. Gebruik AUTOINCREMENT voor automatisch oplopende id's.
id INTEGER PRIMARY KEY AUTOINCREMENT
NOT NULL
Kolom mag nooit NULL zijn. Verplicht veld.
naam TEXT NOT NULL
UNIQUE
Geen twee rijen mogen dezelfde waarde hebben. Ideaal voor e-mailadressen.
email TEXT NOT NULL UNIQUE
DEFAULT
Standaardwaarde als er niets ingevuld wordt.
actief INTEGER DEFAULT 1
FOREIGN KEY
Verwijst naar de primary key van een andere tabel. Bewaakt referentiële integriteit.
gebruiker_id INTEGER REFERENCES gebruikers(id)
CREATE TABLE — tabel aanmaken
CREATE TABLE tabel (
kolom1 DATATYPE CONSTRAINT,
kolom2 DATATYPE CONSTRAINT,
...
);
-- Echt voorbeeld: gebruikers-tabel
CREATE TABLE gebruikers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
naam TEXT NOT NULL,
email TEXT NOT NULL UNIQUE,
leeftijd INTEGER,
actief INTEGER DEFAULT 1,
aangemeld TEXT DEFAULT (date('now'))
);
-- Geeft geen fout als de tabel al bestaat
CREATE TABLE IF NOT EXISTS gebruikers (
id INTEGER PRIMARY KEY,
naam TEXT NOT NULL
);
CREATE TABLE orders (
id INTEGER PRIMARY KEY AUTOINCREMENT,
gebruiker_id INTEGER NOT NULL REFERENCES gebruikers(id),
product_id INTEGER NOT NULL REFERENCES producten(id),
aantal INTEGER NOT NULL DEFAULT 1,
datum TEXT DEFAULT (date('now'))
);
ALTER TABLE & DROP TABLE
Als een tabel al bestaat maar je wilt de structuur aanpassen, gebruik je ALTER TABLE.
-- Kolom toevoegen
ALTER TABLE gebruikers ADD COLUMN telefoon TEXT;
-- Kolom hernoemen (SQLite 3.25+)
ALTER TABLE gebruikers RENAME COLUMN telefoon TO telefoonnummer;
-- Tabel hernoemen
ALTER TABLE gebruikers RENAME TO klanten;
-- Verwijdert de HELE tabel inclusief alle data
DROP TABLE gebruikers;
-- Veiligere versie (geen fout als tabel niet bestaat)
DROP TABLE IF EXISTS gebruikers;
DROP TABLE is niet terug te draaien zonder backup. In productie altijd een backup maken eerst.
In Symfony gebruik je Doctrine Migrations. In Laravel zijn het PHP-klassen. Je schrijft zelden direct ALTER TABLE in productie — frameworks regelen dit via versiegestuurde migratiebestanden.
Oefening — maak je eigen tabel
- Maak een tabel
takenmet: id, titel (verplicht), beschrijving, voltooid (standaard 0), aangemaakt_op - Voeg 3 taken in via INSERT
- Toon alle taken met SELECT
- Markeer één taak als voltooid met UPDATE
🧠 Kennischeck
Les 5 afgerond!
Je kunt nu je eigen database-schema ontwerpen met datatypes, constraints en relaties.