MySQL database datatypen
MySQL 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: |
---|---|---|---|---|
TINYINT | Voor een heel klein getal. | 1 (8 bit) | -128 | 127 |
TINYINT UNSIGNED | Voor een heel klein getal. | 1 (8 bit) | 0 | 255 |
SMALLINT | Voor een klein getal. | 2 (16 bit) | -32768 | 32767 |
SMALLINT UNSIGNED | Voor een klein getal. | 2 (16 bit) | 0 | 65535 |
MEDIUMINT | Voor een middelgroot getal. | 3 (24 bit) | -8388608 | 8388607 |
MEDIUMINT UNSIGNED | Voor een middelgroot getal. | 3 (24 bit) | 0 | 16777215 |
INT | Voor een groot getal. | 4 (32 bit) | -2147483648 | 2147483647 |
INT UNSIGNED | Voor een groot getal. | 4 (32 bit) | 0 | 4294967295 |
BIGINT | Voor zeer grote getallen. | 5 (40 bit) | -9223372036854775808 | 9223372036854775807 |
BIGINT UNSIGNED | Voor zeer grote getallen. | 5 (40 bit) | 0 | 18446744073709551615 |
FLOAT | Voor kleine getallen met decimalen. Standaard een lengte van 10 met 2 decimalen. | 4 (32 bit) | 0.00 | 9999999999.99 |
FLOAT(M,D) | M = lengte van het getal. D = aantal decimalen. | 4 (32 bit) | ||
DOUBLE | Voor grote getallen met decimalen. Standaard een lengte van 16 met 4 decimalen. | 8 (64 bit) | 0.0000 | 9999999999999999.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 |
TINYTEXT | Bewaard data. | 255 karakters |
TEXT | Bewaard data. | 65.535 karakters |
BLOB | Bewaard data (Binary Large OBjects) | 65.535 bytes |
MEDIUMTEXT | Bewaard data. | 16.777.215 karakters |
MEDIUMBLOB | Bewaard data (Binary Large OBjects) | 16.777.215 bytes |
LONGTEXT | Bewaard data. | 4.294.967.295 karakters |
LONGBLOB | Bewaard 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-01 | 1000-01-01 |
DATETIME() | Een datum en tijd combinatie. Formaat: YYYY-MM-DD HH:MI:SS | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
TIMESTAMP() | Een tijdsstempel (unix) Formaat: YYYY-MM-DD HH:MI:SS | 1970-01-01 00:00:01 | 2038-01-09 03:14:07 |
TIME() | De tijd. Formaat: HH:MI:SS | -838:59:59 | 838:59:59 |
YEAR() | Het jaar (in 2 of 4 cijfers) | 1901 (4 cijferig) 70 (1970 / 2 cijferig) | 2155 (4 cijferig) 69 (2069 / 2 cijferig) |