Datatypen (MySQL)
Boolean
Datatypen bool, boolean en tinyint(1) zijn synoniem. Ik gebruik tinyint(1) voor Boolse waardes, met 0 voor niet waar en 1 voor waar. Dit zijn getallen (integers). Geen symbolische waardes of tekstwaardes.
A value of zero is considered false. Nonzero values are considered true: mysql> SELECT IF(0, 'true', 'false'); +------------------------+ | IF(0, 'true', 'false') | +------------------------+ | false | +------------------------+ mysql> SELECT IF(1, 'true', 'false'); +------------------------+ | IF(1, 'true', 'false') | +------------------------+ | true | +------------------------+ mysql> SELECT IF(2, 'true', 'false'); +------------------------+ | IF(2, 'true', 'false') | +------------------------+ | true | +------------------------+ However, the values TRUE and FALSE are merely aliases for 1 and 0, respectively, as shown here: mysql> SELECT IF(0 = FALSE, 'true', 'false'); +--------------------------------+ | IF(0 = FALSE, 'true', 'false') | +--------------------------------+ | true | +--------------------------------+ mysql> SELECT IF(1 = TRUE, 'true', 'false'); +-------------------------------+ | IF(1 = TRUE, 'true', 'false') | +-------------------------------+ | true | +-------------------------------+ mysql> SELECT IF(2 = TRUE, 'true', 'false'); +-------------------------------+ | IF(2 = TRUE, 'true', 'false') | +-------------------------------+ | false | +-------------------------------+ mysql> SELECT IF(2 = FALSE, 'true', 'false'); +--------------------------------+ | IF(2 = FALSE, 'true', 'false') | +--------------------------------+ | false | +--------------------------------+ The last two statements display the results shown because 2 is equal to neither 1 nor 0.
Datums
https://dev.mysql.com/doc/refman/5.7/en/date-and-time-types.html
Integere datatypes
Kind Storage Signed Unsigned ----------- ------- ------------------------------------------------------- -------------------------------- * tinyint 1 byte -128 to +127 0 to 255 * smallint 2 bytes -32,768 to +32,767 0 to 65,535 * mediumint 3 bytes -8,388,608 to 8,388,607 0 to 16,777,215 * int/integer 4 bytes -2,147,483,648 to +2,147,483,647 0 to 4,294,967,295 * bigint 8 bytes -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 0 to 18,446,744,073,709,551,615
Vaak (altijd?) kun je een waarde tussen haakjes meegeven, bv.
tinyint(4)
Dit verandert niets aan het datatype, maar alleen iets aan de weergave. Je kunt dus nog steeds geen waarde van 1234 toevoegen aan een tinyint(4), want het maximum is nog steeds 255 of 128.
Fixed-point datatypes
Fixed-point datatypes zijn voor exacte rationele getallen. Er wordt dus niet ergens afgerond ofzo
- Keywords: DECIMAL & NUMERIC
- Voor geldbedragen en gewichten gebruikte ik decimal (10,4) - 6 cijfers vóór de komma, 4 cijfers achter de komma, maar ik ben overgestapt op decimal (8,2) - Geen gedoe met extra cijfers achter de komma
Floating point-datatypes
Percentages
http://stackoverflow.com/questions/10656948/how-to-store-a-percentage-value
Tinyint
[-128:128] of [0:255]
Voorbeelden:
- Gewicht koolborstels in grammen (afgerond op hele grammen)
- Boolean:
tinyint(1)
Let op: Je kunt een waarde tussen haakjes meegeven, bv.
tinyint(4)
Dit verandert niets aan het datatype, maar alleen iets aan de weergave. Je kunt dus nog steeds geen waarde van 1234 toevoegen aan een tinyint(4), want het maximum is nog steeds 255 of 128.
Tinytext vs. varchar
Zie dit ingewikkelde verhaal. Ik houd het op varchar
Text
65.536 tekens
Valuta
Bv.
decimal (5,2) # 5 posities - 3 voor de komma, 2 achter - Tot 999,99 decimal (10,2) # 10 posities - 8 voor de komma, 2 achter - Tot 99.999.999,99 decimal (10,4) # 10 posities - 6 voor de komma, 4 achter - Tot 999.999,9999
Bronnen
dev.mysql.com
- https://dev.mysql.com/doc/refman/5.0/en/data-types.html
- https://dev.mysql.com/doc/refman/5.0/en/fixed-point-types.html
- https://dev.mysql.com/doc/refman/5.0/en/floating-point-types.html
- https://dev.mysql.com/doc/refman/5.1/en/integer-types.html
Valuta
- http://stackoverflow.com/questions/13030368/best-data-type-to-store-money-values-in-mysql
- https://dev.mysql.com/doc/refman/5.7/en/fixed-point-types.html
Overig