Data-wise, tinyint(1)
, tinyint(2)
, tinyint(3)
enz. zijn allemaal precies hetzelfde. Ze liggen allemaal in het bereik van -128 tot 127 voor SIGNED
of 0-255 voor UNSIGNED
. Zoals andere antwoorden opmerkten, is het getal tussen haakjes slechts een hint voor de weergavebreedte.
Houd er echter rekening mee dat de toepassing=wijze dingen er anders uit kunnen zien. Hier, tinyint(1)
een speciale betekenis kan krijgen. De Connector/J (Java-connector) behandelt bijvoorbeeld tinyint(1)
als een booleaanse waarde, en in plaats van een numeriek resultaat naar de toepassing terug te sturen, converteert het waarden naar true
en false
. dit kan worden gewijzigd via de tinyInt1isBit=false
verbindingsparameter.
Een tinyint(1) kan getallen bevatten in het bereik van -128 tot 127, omdat het datatype 8 bits (1 byte) is - uiteraard kan een niet-ondertekende tinyint waarden 0-255 bevatten.
Het zal stilletjes buiten bereikwaarden afkappen:
mysql> create table a
-> (
-> ttt tinyint(1)
-> );
Query OK, 0 rows affected (0.01 sec)
mysql> insert into a values ( 127 );
Query OK, 1 row affected (0.00 sec)
mysql> insert into a values ( -128 );
Query OK, 1 row affected (0.00 sec)
mysql> insert into a values ( 128 );
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> insert into a values ( -129 );
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> select * from a;
+------+
| ttt |
+------+
| 127 |
| -128 |
| 127 |
| -128 |
+------+
4 rows in set (0.00 sec)
mysql>
... tenzij u de sql_mode
. wijzigt of verander de serverconfiguratie:
mysql> set sql_mode=STRICT_ALL_TABLES;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into a values ( -129 );
ERROR 1264 (22003): Out of range value for column 'ttt' at row 1
mysql>
De waarde die in de DDL wordt gebruikt voor het datatype (bijvoorbeeld:tinyint(1)) is, zoals je al vermoedde, de weergavebreedte. Het is echter optioneel en klanten hoeven het niet te gebruiken. De standaard MySQL-client gebruikt het bijvoorbeeld niet.
https://dev.mysql .com/doc/refman/5.1/en/integer-types.html
https://dev .mysql.com/doc/refman/5.0/en/numeric-type-overview.html
MySql:Tinyint (2 ) vs tinyint(1) - wat is het verschil?