MySQL database datatypen

mysql icon 2 dolfijnenMySQL kan werken met verschillende types van data. Dit loopt van een string tot bijvoorbeeld een boolean waarde. Er zijn verschillende data types binnen MySQL, het is belangrijk om de juiste datatypes te gebruiken voor het bevorderen van de snelheid en het minimaliseren van fouten, dus een waarde die niet hoger wordt dan 255 behoeft niet als een eengrote integer opgeslagen te worden.

Je hebt bijvoorbeeld ook SIGNED en UNSIGNED datatypen, een SIGNED datatype kan ook negatief zijn, hiervoor moet 1 bitje ingeleverd worden (laatste (meest linkse) bit: 0=negatief 1=positief) , vandaar de helft van de maximale waarde.

Deze datatypes kan je gebruiken bij het aanmaken van de tabellen (kolommen)

Datatype:Omschrijving:Bytes:Min. waarde:Max. waarde:
TINYINTVoor een heel klein getal.1 (8 bit)-128127
TINYINT UNSIGNEDVoor een heel klein getal.1 (8 bit)0255
SMALLINTVoor een klein getal.2 (16 bit)-3276832767
SMALLINT UNSIGNEDVoor een klein getal.2 (16 bit)065535
MEDIUMINTVoor een middelgroot getal.3 (24 bit)-83886088388607
MEDIUMINT UNSIGNEDVoor een middelgroot getal.3 (24 bit)016777215
INTVoor een groot getal.4 (32 bit)-21474836482147483647
INT UNSIGNEDVoor een groot getal.4 (32 bit)04294967295
BIGINTVoor zeer grote getallen.5 (40 bit)-9223372036854775808 9223372036854775807
BIGINT UNSIGNEDVoor zeer grote getallen.5 (40 bit)018446744073709551615
FLOATVoor kleine getallen
met decimalen.
Standaard een lengte
van 10 met 2 decimalen.
4 (32 bit)0.009999999999.99
FLOAT(M,D)M = lengte van het getal.
D = aantal decimalen.
4 (32 bit)
DOUBLEVoor grote getallen
met decimalen.
Standaard een lengte
van 16 met 4 decimalen.
8 (64 bit)0.00009999999999999999.9999
DOUBLE(M,D)M = lengte van het getal.
D = aantal decimalen.
8 (64 bit)
DECIMAL(M,D)Voor een getal.
Elk getal wordt als
een BIT opgeslagen.
Waar M de lengte
van het getal.
D het aantal decimalen.

FLOAT instelling

Een getal als 16.5 wordt met de instelling FLOAT(2,1) weggeschreven als max. 9.9
FLOAT(2,1) 
betekende voorheen met MySQL 4.1: op zijn minst 2 cijfers met 1 decimaal.

FLOAT(2,1) betekent nu met MySQL 5.x: maximaal 2 cijfers met 1 decimaal.
Wil je dus 16.5 wegschrijven dan moet je FLOAT(3,1) gebruiken, FLOAT(4,2) gaat dan tot 99.99.

Datatype:Omschrijving:Max. gegevens.
CHAR(grootte)Bewaard een vaste lengte aan data.
(kan letters, cijfers en speciale karakters bevatten)
255 karakters
VARCHAR(grootte)Bewaard een vaste lengte aan data.
(kan letters, cijfers en speciale karakters bevatten)
Een waarde groter dan 255 wordt opgeslagen als een TEXT type.
255 karakters
TINYTEXTBewaard data.255 karakters
TEXTBewaard data.65.535 karakters
BLOBBewaard data (Binary Large OBjects)65.535 bytes
MEDIUMTEXTBewaard data.16.777.215 karakters
MEDIUMBLOBBewaard data (Binary Large OBjects)16.777.215 bytes
LONGTEXTBewaard data.4.294.967.295 karakters
LONGBLOBBewaard data (Binary Large OBjects)4.294.967.295 bytes
ENUM(x,y,z,etc.)Je kan een lijst met waarden opgeven.
Als een waarde niet in de lijst voorkomt
,wordt een lege waarde weggeschreven

Verschil tussen TEXT en BLOB

BLOB wordt behandeld als binaire gegevens (byte strings) en hebben geen karakterset.
TEXT wordt behandeld als niet-binaire gegevens (character strings) en hebben een karakteret.

Het verschil tussen beide is dat met zoeken de BLOB hoofdlettergevoelig is en TEXT niet.

Datatype:Omschrijving:Bereik van:Bereik tot:
DATE()Een datum.
Formaat: YYYY-MM-DD
1000-01-011000-01-01
DATETIME()Een datum en tijd combinatie.
Formaat: YYYY-MM-DD HH:MI:SS
1000-01-01 00:00:009999-12-31 23:59:59
TIMESTAMP()Een tijdsstempel (unix)
Formaat: YYYY-MM-DD HH:MI:SS
1970-01-01 00:00:012038-01-09 03:14:07
TIME()De tijd.
Formaat: HH:MI:SS
-838:59:59838:59:59
YEAR()Het jaar (in 2 of 4 cijfers)1901 (4 cijferig)
70 (1970 / 2 cijferig)
2155 (4 cijferig)
69 (2069 / 2 cijferig)