Mysql
 sql >> база данни >  >> RDS >> Mysql

Какво е значението на параметъра TINYINT(параметър)?

По отношение на данните, 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) – каква е разликата?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да оптимизирате производителността на MySQL с помощта на MySQLTuner

  2. MySQL Round Robin Select

  3. Една заявка за вмъкване на няколко реда с множество колони

  4. Как да се присъедините към една и съща маса, два пъти, в mysql?

  5. Mysql как да обединя таблици