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

Я знал логическое значение в mysql как tinyint (1).

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

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

Ответ 1

(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].

Ответ 2

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)

Ответ 3

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

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

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

Ответ 4

Это означает ширина экрана

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

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

Это ничего не значит ВСЕ! Я проверил тест, все выше клиенты или даже клиент командной строки, похоже, игнорируют это.

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

A tinyint (2) zerofill

B tinyint (4) zerofill

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

zerofill with displaywidth

Ответ 5

Длина столбца может использоваться для целей проверки