Home » Begrippen » Wat is CRUD?

Wat is CRUD?

CRUD is een afkorting voor de vier meest fundamentele bewerkingen die je op data kunt uitvoeren: Create (aanmaken), Read (lezen), Update (bijwerken) en Delete (verwijderen). Vrijwel elke applicatie die met een database werkt, is in de kern opgebouwd rond deze vier operaties: een gebruiker maakt een account aan, leest berichten, past zijn profiel aan en verwijdert een bestelling. CRUD vormt de basis van webapplicaties, REST API’s, databaseontwerp en backend-ontwikkeling. Door dit concept te begrijpen, begrijp je hoe data stroomt door moderne software.

De vier CRUD-bewerkingen in detail

Elke CRUD-bewerking correspondeert met een specifieke actie in een database en een bijbehorende HTTP-methode in een webcontext. Samen bestrijken ze de volledige levenscyclus van data.

Create — data aanmaken

Create is de bewerking waarmee je nieuwe data toevoegt aan een database. In SQL gebruik je hiervoor het commando INSERT INTO. In een REST API correspondeert Create doorgaans met een HTTP POST-verzoek. Een praktisch voorbeeld: een gebruiker vult een registratieformulier in en klikt op “Account aanmaken”. De applicatie stuurt de gegevens naar de server, die een nieuw record aanmaakt in de gebruikerstabel van de database.

Read — data lezen

Read is de bewerking waarmee je bestaande data ophaalt zonder die te wijzigen. In SQL gebruik je SELECT-queries. In een REST API correspondeert Read met een HTTP GET-verzoek. Read is veruit de meest uitgevoerde bewerking in de meeste applicaties: elke pagina die je laadt, elk zoekresultaat dat je ziet en elk dashboard dat wordt weergegeven, begint met een Read-operatie.

Update — data bijwerken

Update past bestaande data aan zonder die te verwijderen en opnieuw aan te maken. In SQL gebruik je UPDATE ... SET. In een REST API correspondeert Update met een HTTP PUT– of PATCH-verzoek. Het verschil: PUT vervangt het volledige record, PATCH past alleen de opgegeven velden aan. Een voorbeeld van Update is een gebruiker die zijn e-mailadres wijzigt in zijn accountinstellingen.

Delete — data verwijderen

Delete verwijdert data permanent uit de database. In SQL gebruik je DELETE FROM. In een REST API correspondeert Delete met een HTTP DELETE-verzoek. Veel applicaties implementeren een zogenaamde soft delete: in plaats van het record echt te verwijderen, wordt een veld zoals deleted_at ingevuld met een tijdstempel. Het record blijft in de database, maar wordt in de applicatie als verwijderd behandeld. Dit maakt herstel van per ongeluk verwijderde data eenvoudiger.

CRUD en databases

CRUD-bewerkingen worden in de meeste webapplicaties uitgevoerd via een relationele database zoals MySQL, PostgreSQL of MariaDB. SQL — Structured Query Language — is de taal waarmee je die bewerkingen uitvoert. De mapping tussen CRUD en SQL-commando’s is rechtstreeks:

  • CreateINSERT INTO tabel (kolommen) VALUES (waarden)
  • ReadSELECT kolommen FROM tabel WHERE voorwaarde
  • UpdateUPDATE tabel SET kolom = waarde WHERE voorwaarde
  • DeleteDELETE FROM tabel WHERE voorwaarde

Moderne webapplicaties gebruiken vaak een ORM — Object Relational Mapper, zoals Eloquent in Laravel of Doctrine in Symfony — om CRUD-bewerkingen uit te drukken in de programmeertaal van de applicatie, zonder dat je zelf SQL hoeft te schrijven. De ORM vertaalt jouw objectgeoriënteerde code automatisch naar de juiste SQL-queries.

CRUD in REST API’s

REST — Representational State Transfer — is een architectuurstijl voor webservices waarbij elke bewerking op een resource wordt uitgedrukt via een HTTP-methode. CRUD en REST sluiten naadloos op elkaar aan. Een REST API voor een blogplatform zou er zo uitzien:

  • POST /articles — Maak een nieuw artikel aan (Create)
  • GET /articles of GET /articles/42 — Haal alle artikelen of één specifiek artikel op (Read)
  • PUT /articles/42 of PATCH /articles/42 — Pas het artikel bij (Update)
  • DELETE /articles/42 — Verwijder het artikel (Delete)

Door deze conventie te volgen, is jouw API voorspelbaar en begrijpelijk voor elke ontwikkelaar die ermee werkt. Het maakt ook integratie met externe systemen eenvoudiger.

CRUD in WordPress

Ook WordPress is volledig opgebouwd rond CRUD. Wanneer je een blogbericht schrijft en publiceert, voert WordPress een Create-bewerking uit in de wp_posts-tabel. Als je een bericht opent in de editor, is dat een Read-bewerking. Opslaan van wijzigingen is een Update en naar de prullenbak verplaatsen en definitief verwijderen zijn twee stappen van Delete.

WordPress biedt functies zoals wp_insert_post(), get_post(), wp_update_post() en wp_delete_post() om CRUD-bewerkingen op berichten uit te voeren vanuit je thema of plugin. Voor de database zelf biedt de $wpdb-klasse methoden als insert(), get_results(), update() en delete().

Beveiliging bij CRUD-bewerkingen

CRUD-operaties zijn een veelvoorkomend doelwit voor beveiligingsaanvallen. De meest bekende is SQL-injectie: een aanvaller voegt kwaadaardige SQL-code in via een invoerveld, waarmee hij ongeautoriseerde Read-, Update- of Delete-bewerkingen kan uitvoeren. Je voorkomt dit door altijd gebruik te maken van prepared statements of de escaping-functies van je ORM.

Daarnaast is het cruciaal om autorisatie te controleren bij elke bewerking. Niet elke gebruiker mag elk record lezen, aanpassen of verwijderen. Implementeer daarom altijd toegangscontroles die controleren of de ingelogde gebruiker de betreffende bewerking mag uitvoeren op het gevraagde record.

Conclusie

CRUD — Create, Read, Update, Delete — zijn de vier bouwstenen van vrijwel elke applicatie die met data werkt. Van een eenvoudige contactenlijst tot een complexe e-commerce platform: alles draait om het aanmaken, lezen, bijwerken en verwijderen van data. Door de relatie tussen CRUD, SQL en REST API’s te begrijpen, heb je een solide fundament voor zowel backend- als frontend-ontwikkeling. Let bij de implementatie altijd op beveiliging: valideer invoer, gebruik prepared statements en controleer autorisatie bij elke bewerking. Begin vandaag nog met het doorlichten van jouw eigen applicaties op hoe de vier CRUD-operaties zijn geïmplementeerd en of ze veilig en efficiënt zijn ingericht.

Veelgestelde vragen

  1. Wat is het verschil tussen PUT en PATCH bij een Update-bewerking?

    PUT vervangt een volledig record door de nieuwe versie die je meestuurt. Als je een veld weglaat in een PUT-verzoek, wordt dat veld leeggemaakt of op een standaardwaarde gezet. PATCH past alleen de velden aan die je expliciet meegeeft, de overige velden blijven ongewijzigd. In de praktijk wordt PATCH vaker gebruikt voor gedeeltelijke updates.

  2. Wat is een soft delete en wanneer gebruik je dat?

    Bij een soft delete wordt een record niet echt verwijderd uit de database, maar gemarkeerd als verwijderd via een tijdstempel of een boolean. Dit maakt het eenvoudig om per ongeluk verwijderde data te herstellen en biedt een audittrail. Je gebruikt soft deletes als de data historisch relevant is of als gebruikers de mogelijkheid moeten hebben om verwijderde items te herstellen.

  3. Hoe bescherm ik mijn applicatie tegen SQL-injectie?

    Gebruik altijd prepared statements of parameterized queries, waarbij gebruikersinput wordt behandeld als data en nooit als onderdeel van de SQL-query zelf. Moderne ORM’s zoals Eloquent of Doctrine doen dit automatisch. Vertrouw nooit op validatie aan de voorkant (client-side) als enige bescherming; voer altijd ook server-side validatie en sanitization uit.

  4. Is CRUD hetzelfde als REST?

    Nee, maar ze sluiten nauw op elkaar aan. CRUD beschrijft de vier basisbewerkingen op data. REST is een architectuurstijl voor webservices waarbij HTTP-methoden worden gebruikt om die bewerkingen uit te drukken. Een REST API implementeert doorgaans CRUD-operaties, maar REST omvat ook concepten als statelessness, resource-gebaseerde URL’s en uniforme interfaces die verder gaan dan CRUD.

  5. Hoe voer ik CRUD-bewerkingen uit in WordPress?

    Voor berichten en pagina’s gebruik je de ingebouwde WordPress-functies: wp_insert_post() voor Create, get_post() voor Read, wp_update_post() voor Update en wp_delete_post() voor Delete. Voor eigen databasetabellen gebruik je de $wpdb-klasse met methoden als insert(), get_results(), update() en delete(), die automatisch escaping toepassen voor extra veiligheid.

Al onze begrippen

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0-9