Learning Center
MySQL-dienst

MySQL-datatypen: overzicht, gebruiksvoorbeelden en best practices

16 jan 2026
Hostman Team
Hostman Team

Bij het opzetten van een database in MySQL moet de gebruiker aan elke kolom in een tabel een naam en een datatype toewijzen. Dit proces helpt het systeem precies te begrijpen welk type gegevens wordt opgeslagen en hoe deze moeten worden verwerkt, en bepaalt daarnaast hoeveel geheugen nodig is.

Er zijn verschillende hoofdklassen van datatypen in MySQL-tabellen, waaronder numerieke, teken-, datum- en tijdtypen, en andere. Elke klasse bevat meerdere specifieke datatypen. Het is belangrijk om deze correct te definiëren tijdens de initiële fase van het aanmaken van tabellen om problemen te voorkomen zodra de volledige databasestructuur is opgebouwd.

Dit artikel beschrijft de belangrijkste MySQL-datatypen, hun structuur, geldige waarden en aanbevolen gebruik.

Numerieke typen
Link kopiëren

MySQL ondersteunt alle standaard numerieke SQL-datatypen die worden gebruikt om getallen op te slaan. Dit artikel behandelt:

  • Gehele getallen

  • Kommagetallen (floating point)

  • Vaste-kommagetallen (fixed point)

Elk type wordt hieronder verder toegelicht.

Gehele getallen (Integers)
Link kopiëren

Gehele getaltypen worden gebruikt om gesigneerde of ongesigneerde gehele getallen op te slaan. Gesigneerde typen kunnen zowel positieve als negatieve waarden bevatten, terwijl ongesigneerde typen alleen positieve waarden opslaan, waardoor het bereik effectief wordt verdubbeld.

Er zijn vijf hoofdtypen gehele getallen: TINYINT, SMALLINT, MEDIUMINT, INT en BIGINT. Het belangrijkste verschil is het waardenbereik dat ze kunnen opslaan — hoe groter het bereik, hoe meer geheugen nodig is. Het is belangrijk om het juiste type te kiezen voor efficiënt geheugengebruik.

Type

Geheugen (bytes)

Gesigneerd bereik

Ongesigneerd bereik

TINYINT

1

−2⁷ tot 2⁷−1

0 tot 2⁸−1

SMALLINT

2

−2¹⁵ tot 2¹⁵−1

0 tot 2¹⁶−1

MEDIUMINT

3

−2²³ tot 2²³−1

0 tot 2²⁴−1

INT

4

−2³¹ tot 2³¹−1

0 tot 2³²−1

BIGINT

8

−2⁶³ tot 2⁶³−1

0 tot 2⁶⁴−1

Het specificeren van een lengte (bijv. MEDIUMINT(6)) heeft geen invloed op het waardenbereik. Het is puur cosmetisch en wordt door sommige tools gebruikt om kortere getallen met spaties op te vullen.
Met het attribuut ZEROFILL worden in plaats daarvan nullen gebruikt. Bijvoorbeeld:
SMALLINT(8) ZEROFILL toont 256 als 00000256.

Kommagetallen (Floating-point numbers)
Link kopiëren

Deze typen worden gebruikt om benaderende numerieke waarden op te slaan. MySQL laat toe om de precisie als volgt te definiëren:

FLOAT(p)

Waarbij p de precisie is van 0 tot 53.

  • Als p < 25, wordt FLOAT (enkele precisie) gebruikt.

  • Anders wordt DOUBLE (dubbele precisie) gebruikt.

Type

Geheugen (bytes)

Waardenbereik

FLOAT

4

~±3,4028 × 10³⁸

DOUBLE

8

~±1,7976 × 10³⁸

Vaste-kommagetallen (Fixed-point numbers)
Link kopiëren

Vaste-kommagetallen worden gebruikt om exacte waarden met een gespecificeerde precisie op te slaan. Hiervoor worden DECIMAL of NUMERIC gebruikt, meestal bij financiële berekeningen waar afronding niet acceptabel is.

Definitie:

DECIMAL(M, D)

  • M: totaal aantal cijfers (max. 65, standaard 10)

  • D: aantal cijfers na de komma (0–30, standaard 0)

Voorbeeld:

DECIMAL(6, 3)

Slaat waarden op van -999.999 tot 999.999.
DECIMAL en NUMERIC zijn functioneel gelijk.

Tekentypen (Character types)
Link kopiëren

Voor het opslaan van korte teksten gebruikt MySQL voornamelijk CHAR en VARCHAR. Ze lijken op elkaar, maar verschillen in opslagwijze.

CHAR slaat een tekenreeks met vaste lengte op (0 tot 2⁸−1 tekens), gedefinieerd bij het aanmaken van de tabel. Kortere invoer wordt opgevuld met spaties.

VARCHAR slaat een tekenreeks met variabele lengte op (0 tot 2¹⁶−1 tekens). Alleen de daadwerkelijke tekens worden opgeslagen, plus 1 byte om de lengte vast te leggen.

Als een tekenreeks langer is dan toegestaan voor CHAR of VARCHAR, wordt deze afgekapt.

Als CHAR en VARCHAR in één tabel worden gecombineerd, converteert MySQL CHAR automatisch naar VARCHAR.

Vergelijking van CHAR(5) en VARCHAR(5)
Link kopiëren

String

CHAR(5)

VARCHAR(5)

'A'

'A '

'A'

'Hello'

'Hello'

'Hello'

'Example'

'Examp'

'Examp'

Tekst- en binaire typen
Link kopiëren

Het datatype TEXT wordt gebruikt voor grote tekstgegevens, terwijl BLOB bedoeld is voor binaire gegevens zoals afbeeldingen, gecompileerde code of audio.

Belangrijkste verschillen:

  • BLOB: sortering en vergelijkingen zijn hoofdlettergevoelig

  • TEXT: sortering en vergelijkingen zijn niet hoofdlettergevoelig

MySQL kan TEXT- en BLOB-velden niet volledig indexeren en ondersteunt geen sortering via volledige veldindexen.
Als de invoer groter is dan toegestaan, wordt deze afgekapt.

TEXT-typen
Link kopiëren

Type

Geheugen (bytes)

Max. tekens

TINYTEXT

2⁸−1

tot 2⁸−1

TEXT

2¹⁶−1

tot 2¹⁶−1

MEDIUMTEXT

2²⁴−1

tot 2²⁴−1

LONGTEXT

2³²−1

tot 2³²−1

BLOB-typen
Link kopiëren

Type

Geheugen (bytes)

Max. bytes

TINYBLOB

2⁸−1

tot 2⁸−1

BLOB

2¹⁶−1

tot 2¹⁶−1

MEDIUMBLOB

2²⁴−1

tot 2²⁴−1

LONGBLOB

2³²−1

tot 2³²−1

Datum en tijd
Link kopiëren

MySQL biedt verschillende datatypen voor datum- en tijdinformatie:

Type

Geheugen (bytes)

Beschrijving

DATE

3

Alleen datum in formaat YYYY-MM-DD

DATETIME

8

Datum en tijd in YYYY-MM-DD HH:MM:SS

TIMESTAMP

4

Zoals DATETIME, maar kleiner bereik (1970–2038)

TIME

3

Tijd van −838:59:59 tot 838:59:59

YEAR

1

Jaar in YYYY-formaat

JSON
Link kopiëren

MySQL ondersteunt sinds versie 5.7.8 een native JSON-datatype met de volgende voordelen:

  • Automatische validatie van geldige JSON

  • Geoptimaliseerde binaire opslag voor snellere queries

Het geheugengebruik is vergelijkbaar met LONGTEXT.

Samengestelde typen (Composite types)
Link kopiëren

MySQL biedt speciale tekentypen met vooraf gedefinieerde waarden:

  • ENUM: slaat één waarde op uit een lijst (tot 2 bytes)

  • SET: kan meerdere waarden tegelijk opslaan (tot 26, max. 8 bytes)

Voorbeeld
Link kopiëren

ENUM('a', 's', 'd')

Toegestane waarden: 'a', 's', 'd'

SET('a', 's', 'd')

Toegestane combinaties:
'a', 's', 'd', 'a,s', 'a,d', 's,d', 'a,s,d' of ''

Dubbele invoer zoals ('a','s','a') wordt automatisch ontdubbeld en opgeslagen als 'a,s'.

Conclusie
Link kopiëren

Dit artikel behandelde de meest gebruikte MySQL-datatypen voor het definiëren van tabelkolommen. Met deze kennis kunnen gebruikers geschikte datatypen kiezen en hun databasestructuur efficiënt ontwerpen. Voor minder gangbare datatypen wordt verwezen naar de officiële MySQL-documentatie.

Met Hostman cloud-databases kun je praktisch werken met MySQL en zijn datatypen. Belangrijke voordelen zijn:

  • Onderhoud en configuratie door de provider

  • Hoge beschikbaarheid en betrouwbaarheid

  • Automatische back-ups

  • Snelle horizontale en verticale schaalbaarheid

  • Continue werking via clusterreplicatie

  • Gebruik van cloudplatform-compute-resources