Cursus
SQL is onmisbaar voor data scientists en data engineers om inzichten uit databases te halen. Een database bestaat uit meerdere tabellen, en er zijn verschillende varianten van SQL, van PostgreSQL tot Snowflake.
Data Definition Language (DDL)-commando’s in SQL worden gebruikt om de structuur van database-objecten te definiëren en te beheren. In dit artikel leg ik DDL-commando’s in SQL uit met voorbeelden op basis van een filmdatabase. Laten we beginnen!
Wat zijn DDL-commando's in SQL?
Met Data Definition Language (DDL)-commando’s kan ik een schema in SQL definiëren en beheren. Kort gezegd is een schema in SQL een blauwdruk die bepaalt hoe data in een database is georganiseerd en hoe de relaties tussen verschillende tabellen binnen de database worden beheerd.
DDL-commando’s bestaan uit verschillende commando’s met elk hun eigen functionaliteit. Ik bespreek ze in de volgende volgorde:
|
DDL-commando |
Beschrijving |
Syntax |
|
|
Maak een tabel en de kolommen met hun datatype. |
|
|
|
Wijzig kolomnamen en voeg een kolom toe of verwijder er een. |
|
|
|
Wijzig de naam van de tabel. |
|
|
|
Voeg een toelichting toe aan de SQL-code zodat teamleden deze kunnen beoordelen. |
|
|
|
Verwijder data uit een tabel zonder de tabel te verwijderen. |
|
|
|
Verwijder de tabel inclusief de data. |
|
DDL-commando’s in SQL met voorbeelden
Nu we de basis van DDL-commando’s en hun doelen kennen, gaan we enkele praktische voorbeelden bekijken met de filmdatabase.
CREATE-commando in SQL
Wanneer ik een nieuwe tabel moet maken, gebruik ik het commando CREATE TABLE, zoals hieronder te zien is:
CREATE TABLE table_name (
column_1 datatype,
column_2 datatype,
...,
column_n datatype
);
In het bovenstaande voorbeeld definieer ik kolommen met verschillende datatypes. SQL ondersteunt diverse datatypes, maar de meest gebruikte zijn doorgaans STRING (tekst), INT (gehele getallen), FLOAT (kommagetallen) en DATE (datum).
Als ik bijvoorbeeld de tabel actor wil maken, gebruik ik CREATE TABLE als volgt:
CREATE TABLE actor (
actor_id String(32767),
first_name String(32767),
last_name String(32767),
last_update String(32767)
);
Waarbij:
actorde tabelnaam isactor_ideen kolomnaam is waarvan de inhoud tekst is (String) en niet langer dan 32767 tekens mag zijn.first_nameeen kolomnaam is waarvan de inhoud tekst is (String) en niet langer dan 32767 tekens mag zijn.last_nameeen kolomnaam is waarvan de inhoud tekst is (String) en niet langer dan 32767 tekens mag zijn.last_updateeen kolomnaam is waarvan de inhoud tekst is (String) en niet langer dan 32767 tekens mag zijn.
Zodra ik de query uitvoer, is de nieuwe tabel zichtbaar naast de andere tabellen en kan ik er op elk moment uit query’en.
ALTER-commando in SQL
Met ALTER in SQL kan ik een tabel bijwerken zonder een nieuwe tabel te hoeven maken en de oude te verwijderen. Organisaties hebben mogelijk duizenden tabellen, en weten hoe je data bijwerkt zonder risico op dataverlies is essentieel.
Het is belangrijk om te weten dat er verschillende manieren zijn om ALTER te gebruiken, waaronder:
- Nieuwe kolommen toevoegen aan een tabel
- Kolommen in een tabel hernoemen
- Kolommen in een tabel wijzigen
- Kolommen in een tabel verwijderen
ADD-commando in ALTER
Om een nieuwe kolom toe te voegen met ALTER, combineren we het commando ALTER met ADD, zoals hieronder:
ALTER TABLE table_name ADD column_name datatype;
Hier voegen we een nieuwe kolom nationality met het datatype STRING toe aan de tabel actor.
ALTER TABLE actor ADD nationality String(32767);
Alle ALTER-commando’s in SQL volgen een vergelijkbare structuur, waardoor SQL een natuurlijke taal is om te leren en te beheersen.
RENAME-commando in ALTER
Wanneer ik een kolomnaam moet wijzigen, gebruik ik het commando RENAME binnen ALTER als volgt:
ALTER TABLE table_name RENAME COLUMN old_column_name TO new_column_name;
Laten we bijvoorbeeld de kolomnaam last_name wijzigen in family_name om verwarring te voorkomen over of dit een tweede voornaam of achternaam is. In dat geval voer ik de volgende query uit:
ALTER TABLE actor RENAME COLUMN last_name TO family_name;
MODIFY-commando in ALTER
Datatypes bepalen kolomeigenschappen en beïnvloeden de kwaliteit van de data. Zo is last_update ingesteld als String(text), maar de data laat duidelijk zien dat het datum en tijd weergeeft.
Kijkend naar de verschillende datatypes en terugverwijzend naar de data in de kolom, is het passende datatype TIMESTAMP.
Het correct bijwerken van het datatype van een kolom maakt het makkelijker om te aggregeren en op datum te filteren met andere SQL-commando’s. Zo gebruik je MODIFY in SQL:
ALTER TABLE table_name ALTER COLUMN column_name datatype;
Toegepast op last_update gebruik ik de volgende query:
ALTER TABLE actor ALTER COLUMN last_update TIMESTAMP;
DROP-commando in ALTER
De laatste optie die ALTER biedt, is het verwijderen van een kolom. Er zijn talloze redenen waarom ik een kolom zou willen DROPpen, waaronder maar niet beperkt tot:
- Informatie die niet langer relevant is,
- Dubbele informatie, waarbij dezelfde kolom in een andere tabel voorkomt,
- Datakwaliteitsproblemen,
- Opslagruimte optimaliseren.
Een kolom verwijderen in SQL is eenvoudig, maar wees voorzichtig: het is niet altijd mogelijk om deze actie ongedaan te maken.
ALTER TABLE table_name DROP COLUMN column_name;
Het commando om een kolom te verwijderen lijkt op het hernoemen van een kolom, maar de twee zijn niet hetzelfde. Bij het hernoemen blijft de data in de kolom staan en verandert alleen de kop. Met het commando DROP worden zowel de data als de kop verwijderd, alsof de kolom nooit heeft bestaan.
Nadat ik inzag dat de kolom last_update weinig informatie biedt behalve of de database is ververst, besloot ik deze te verwijderen met de volgende query:
ALTER TABLE actor DROP COLUMN last_update;
RENAME-commando in SQL
Het commando RENAME is alleen van toepassing op het wijzigen van de tabelnaam en moet niet worden verward met de RENAME-mogelijkheden van ALTER. Om de naam van een tabel te wijzigen, is de query simpelweg:
RENAME TABLE old_table_name TO new_table_name;
De tabel actor bevat alleen namen en geen andere informatie over de acteurs. Daarom is het logisch om dit te verduidelijken door de tabelnaam te wijzigen in:
RENAME TABLE actor TO actor_names;
COMMENT in SQL
Commentaar toevoegen in SQL is cruciaal voor helderheid en context, zodat je queries makkelijker te begrijpen en te onderhouden zijn. Het helpt complexe logica uit te leggen, wijzigingen te documenteren en keuzes te onderbouwen. In SQL kun je op twee manieren commentaar toevoegen:
- Regelcommentaar (single-line)
- Blokcommentaar (multi-line)
Laten we ze in actie zien.
Regelcommentaar in SQL
Commentaar op één regel staat meestal naast de code, zoals hieronder. Zo kan ik de opmerking van een collega lezen terwijl ik de code lees.
In de tabel actor zijn actor_id en last_update niet intuïtief en vereisen ze een toelichting via commentaar.
CREATE TABLE actor (
actor_id String(32767), --unique identifier
first_name String(32767),
last_name String(32767),
last_update String(32767)--datetime of last update
);
Commentaar in SQL is een ander soort commando dan de rest in dit artikel, omdat het geen functie COMMENT aanroept. De twee streepjes zonder spatie ertussen ‘--’ markeren het begin van een commentaar. Alles wat erna staat, wordt niet als onderdeel van de code beschouwd.
Blokcommentaar in SQL
Wanneer de uitleg langer is, gebruik je blokcommentaar. Dit heeft de voorkeur om een functie toe te lichten of uitgebreide context te geven. Om blokcommentaar in SQL toe te voegen, begin je met /* en eindig je met */. De SQL-engine negeert alles wat tussen /* en */ staat en voert het niet uit als onderdeel van de query.
/* Create a table `actor` with the actors’ names. Store first and last name, and keep track of any updates*/
CREATE TABLE actor (
actor_id String(32767), --unique internal identifier
first_name String(32767),
last_name String(32767),
last_update String(32767)--datetime of last update
);
TRUNCATE-commando in SQL
Een tabel trunceren is niet hetzelfde als deze verwijderen. Trunceren verwijdert alle data maar laat de structuur van de tabel intact, terwijl verwijderen de hele tabel inclusief structuur weghaalt. Wees voorzichtig en kies het juiste commando voor het juiste doel.
Het equivalent van TRUNCATE in Excel is alle data onder de kolomnaam selecteren en op delete drukken. In SQL schrijf ik:
TRUNCATE TABLE table_name;
Als actor getrunceerd moet worden, voer ik uit:
TRUNCATE TABLE actor;
Het resultaat is een tabel met alleen kolomnamen en geen waarden.
DROP-commando in SQL
In tegenstelling tot TRUNCATE verwijdert het DDL-commando DROP de tabel én alle waarden in één keer. Wees voorzichtig bij het uitvoeren van zulke commando’s, omdat deze actie niet altijd omkeerbaar is. Het DROP-commando heeft een vergelijkbare structuur als de TRUNCATE-query:
DROP TABLE table_name;
Dus het verwijderen van de tabel actor is net zo eenvoudig als
DROP TABLE actor;
Hoewel verschillende SQL-varianten kleine syntaxiswijzigingen kunnen vereisen, zijn de bovenstaande DDL-commando’s grotendeels hetzelfde, ongeacht welke SQL-versie je gebruikt.
DDL-commando’s vs. andere typen commando’s
In de vorige sectie legde ik uit hoe DDL-commando’s de structuur van tabellen definiëren en hun inhoud of eigenschappen indien nodig bijwerken. Andere soorten SQL-commando’s maken het mogelijk om te selecteren, aggregeren, bijwerken en zelfs tabellen te joinen om een ander beeld van de data te krijgen, en elk stel commando’s heeft een specifiek doel.
|
Commando |
Definitie |
Doel |
|
DQL |
Data Query Language |
Data uit de database ophalen op basis van een criterium |
|
DML |
Data Manipulation Language |
Tabellen in de database manipuleren met meer functionaliteit dan ALTER. |
|
DCL |
Data Control Language |
Toegangs- en autorisatiebeheer. |
|
TCL |
Transaction Control Language |
Werkt de database bij met wijzigingen die via DML-commando’s zijn aangebracht |

Bouw je SQL-skills uit met DataCamp
Goede datakwaliteit bereik je wanneer data goed gedefinieerd en gestructureerd is. DDL-commando’s in SQL helpen dataprofessionals bij het opbouwen en onderhouden van een gestructureerde database. Andere SQL-commando’s, zoals DML-commando’s, laten je data bekijken, aggregeren, invoegen, filteren en samenvoegen. Leer meer over SQL en ontwikkel je vaardigheden met de volgende bronnen:
- Leer de verschillende typen commando’s om met SQL te werken
- Houd een SQL-cheatsheet bij de hand om je te verdiepen in best practices en veelgebruikte commando’s.
- Bereid je voor op een SQL-sollicitatie met onze gids met top-SQL-sollicitatievragen
Data- en AI-professional met ruime ervaring in het bouwen van maatwerk-datasciencemodellen met statistische technieken en geavanceerde modellen zoals tijdreeksen, LLM, neurale netwerken en grafentheorie.

