Datatypen (MySQL)

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

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

Valuta

Bronnen

dev.mysql.com

Overig