По отношение на данните, tinyint(1)
, tinyint(2)
, tinyint(3)
и т.н. са абсолютно еднакви. Всички те са в диапазона от -128 до 127 за SIGNED
или 0-255 за UNSIGNED
. Както е отбелязано в други отговори, числото в скоби е просто намек за ширината на дисплея.
Може да искате да отбележите обаче, че application=wise нещата може да изглеждат различно. Тук tinyint(1)
може да придобие специално значение. Например, Connector/J (Java конектор) третира tinyint(1)
като булева стойност и вместо да връща числов резултат към приложението, той преобразува стойностите в true
и false
. това може да се промени чрез tinyInt1isBit=false
параметър на връзката.
Tinyint(1) може да съдържа числа в диапазона от -128 до 127, поради това, че типът данни е 8 бита (1 байт) - очевидно неподписан tinyint може да съдържа стойности 0-255.
Той безшумно ще съкрати стойностите извън диапазона:
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>
... освен ако не промените sql_mode
или променете конфигурацията на сървъра:
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>
Стойността, използвана в DDL за типа данни (например:tinyint(1)), е, както предполагате, ширината на дисплея. Въпреки това е по избор и клиентите не трябва да го използват. Стандартният MySQL клиент не го използва, например.
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 ) срещу tinyint(1) – каква е разликата?