MySql: Tinyint (2) vs tinyint(1) - в чем разница?



Я знал boolean в mysql как tinyint (1).



сегодня я вижу таблицу с определенным целым числом, как tinyint(2), а также другие подобные int(4),int(6) ...



что означает размер в поле типа integer и tinyint ?

679   4  

4 ответов:

значит ширина дисплея

используете ли вы tinyint(1) или tinyint(2), это не имеет никакого значения.

Я всегда использую tinyint(1) и int (11), я использовал несколько клиентов mysql (navicat, sequel pro).

Это вообще ничего не значит! Я провел тест, все выше клиентов или даже клиент командной строки, кажется, игнорирует это.

а, ширина дисплея является наиболее важным, если вы используете , для пример ваша таблица имеет следующие 2 столбца:

A tinyint (2) zerofill

B tinyint (4) zerofill

оба столбца имеет значение 1, выход для столбца A будет 01 и 0001 на B, как показано на скриншоте ниже :)

zerofill with displaywidth

The (m) указывает ширину отображения столбца; приложения, такие как клиент MySQL, используют это при отображении результатов запроса.

например:

| v   | a   |  b  |   c |
+-----+-----+-----+-----+
| 1   | 1   |  1  |   1 |
| 10  | 10  | 10  |  10 |
| 100 | 100 | 100 | 100 |

здесь a,b и c С помощью TINYINT(1),TINYINT(2) и TINYINT(3) соответственно. Как вы можете видеть, он заполняет значения с левой стороны, используя ширину дисплея.

важно отметить, что это не влияет на принятый диапазон значений для данного типа, то есть TINYINT(1) принимает [-128 .. 127].

mysql> CREATE TABLE tin3(id int PRIMARY KEY,val TINYINT(10) ZEROFILL);
Query OK, 0 rows affected (0.04 sec)

mysql> INSERT INTO tin3 VALUES(1,12),(2,7),(4,101);
Query OK, 3 rows affected (0.02 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM tin3;
+----+------------+
| id | val        |
+----+------------+
|  1 | 0000000012 |
|  2 | 0000000007 |
|  4 | 0000000101 |
+----+------------+
3 rows in set (0.00 sec)

mysql>

mysql> SELECT LENGTH(val) FROM tin3 WHERE id=2;
+-------------+
| LENGTH(val) |
+-------------+
|          10 |
+-------------+
1 row in set (0.01 sec)


mysql> SELECT val+1 FROM tin3 WHERE id=2;
+-------+
| val+1 |
+-------+
|     8 |
+-------+
1 row in set (0.00 sec)

о INT, TINYINT... Это разные типы данных, INT-4-байтовое число, TINYINT-1-байтовое число. Более подробная информация здесь - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT.

синтаксис tinyint тип данных TINYINT (M), где M указывает максимальную ширину отображения (используется только если ваш клиент MySQL поддерживает его).

Атрибуты Числового Типа.

Comments

    Ничего не найдено.