15/7/2008

MySQL veld-types

Filed under: — pinguim @ 4:00 pm

char-varchar
altijd even veel tekens: CHAR (code’s enz)
niet altijd volledig gevuld: VARCHAR (trager maar neemt niet zoeveel verloren plaats in)
Gebruik OPTIMIZE TABLE om de varchars te defragmenteren.

text/BLOB
Gebruik op deze tabel geen SELECT * FROM, maar benoem de velden.

Signed – Unsigned
negatieve getallen in gebruik: SIGNED. Bereik wordt verdeeld over – 0 +
geen negatieve: UNSIGNED. Bereik wordt volledig gebruikt langs positieve kant: 0 +

primary key

  • auto-increment, start van 0? Gebruik UNSIGNED (dubbel zoveel waarden mogelijk)
  • hoeveel records heb je nodig?
  • Miljoenen, miljarden of enkele, tot enkele tientallen, soms zonder user interface zodat het nooit automatisch ingevuld zal worden? Gebruik zo klein mogelijk datatype.
  • 0-255: UNSIGNED TINYINT
  • 0-65.000 UNSIGNED SMALLINT
  • 0-16.000.000: UNSIGNED MEDIUMINT
  • >4 miljard: UNSIGNED INT

Overzicht:

Type Bytes Minimum Value Maximum Value
(Signed/Unsigned) (Signed/Unsigned)
TINYINT
1
-128 127
0 255
SMALLINT
2
-32.768 32.767
0 65.535
MEDIUMINT
3
-8.388.608 8.388.607
0 16.777.215
INT
4
-2.147.483.648 2.147.483.647
0 4.294.967.295
BIGINT
8
-9.223.372.036.854.775.808   9.223.372.036.854.775.807  
0 18.446.744.073.709.551.615  

Erover!
Als je een groter getal in de tabel probeert te steken, dan wat het kolom-formaat toelaat, dan wordt de grootste waarde die kan worden opgeslagen in de tabel bewaard, zonder foutmelding!
(nog in bewerking)

INSERT INTO `numberlimits` ( `tinyint_s` , `tinyint_u` )
VALUES (‘127’, ‘255’);
INSERT INTO `numberlimits` ( `tinyint_s` , `tinyint_u` )
VALUES (‘128’, ‘256’);
SELECT * FROM `numberlimits`
mysql> select * from numberlimits;

+-----------+-----------+
| tinyint_s | tinyint_u |
+-----------+-----------+
|       127 |       255 |
|       127 |       255 |
+-----------+-----------+

Powered by WordPress