TINYINT
wird über 8 Bits (1 Byte) dargestellt. Grundkenntnisse der Informationstheorie besagt, dass nur 256 verschiedene Werte (256 = 2^8) mit 8 Bits dargestellt werden können.
Die 8 Bits von "Tinyint" sind durch MySQL interpretiert in einer von zwei Möglichkeiten:
TINYINT UNSIGNED
, wo die 256 Werte sind als 0..255 interpretiert oder
TINYINT SIGNED
(alias TINYINT
, da SIGNED
der Standardwert ist), wobei die Interpretation einen Bereich von -128..127 hat.
Wenn das oberste Bit 0
ist, sind die 8 Bits gleich 0..127 zwischen SIGNED
und UNSIGNED
. Wenn das oberste Bit jedoch 1
ist, repräsentieren die 8 Bits entweder negative Zahlen oder größere positive Zahlen.
Wenn Sie wollten, könnten Sie die 256 Werte im Sinne von ‚rot‘, ‚gelb‘, ‚grün‘ interpretieren, etc. Dies ist genau das, was mit einem anderen Datentyp passiert:
ENUM('red', 'yellow', 'green')
Eine weitere Interpretation von 8-Bit-Bytes gibt Ihnen Ascii-Zeichen. Siehe CHAR
, VARCHAR
, TEXT
usw.
Da TINYINT
muss entweder SIGNED
oder UNSIGNED
sein, Sie nicht hat eine TINYINT
Spalte mit diesen beiden Werten: -111 und 222 (in verschiedenen Reihen). Wenn Sie das brauchen, dann verwenden Sie SMALLINT SIGNED
.(Dies führt zu einer Diskussion von 16-Bit-Darstellungen der Zahl.)
1. Weil 'sein Bereich von -128 bis 255 ist' ist nicht wahr. 2. Ja, Sie können nicht tinyint für 256 oder -129 verwenden. –