Я знал логическое значение в mysql как tinyint (1)
.
Сегодня я вижу таблицу с определенным целым числом, например tinyint(2)
, а также другие, такие как int(4)
, int(6)
...
Что означает размер в поле типа integer и tinyint?
Я знал логическое значение в mysql как tinyint (1)
.
Сегодня я вижу таблицу с определенным целым числом, например tinyint(2)
, а также другие, такие как int(4)
, int(6)
...
Что означает размер в поле типа integer и tinyint?
(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 поддерживает его).
Это означает ширина экрана
Используете ли вы 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, как показано на скриншоте ниже:)
Длина столбца может использоваться для целей проверки