Datatypen (MySQL)

Uit De Vliegende Brigade
Ga naar: navigatie, zoeken

Boolean

Datatypen bool, boolean en tinyint(1) zijn synoniem:

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

  • 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

Voorbeeld: Advertentierapport

Bronnen

dev.mysql.com

Overig