Я знал, что логическое в MySQL как tinyint (1)
.
Сегодня я вижу таблицу с определенным целым, как tinyint(2)
, а также другие, как int(4)
, int(6)
...
Что означает размер в поле типа integer и tinyint?
Я знал, что логическое в MySQL как tinyint (1)
.
Сегодня я вижу таблицу с определенным целым, как tinyint(2)
, а также другие, как int(4)
, int(6)
...
Что означает размер в поле типа integer и tinyint?
Ответы:
Это означает ширину дисплея
Используете ли вы tinyint (1) или tinyint (2), это не имеет никакого значения.
Я всегда использую tinyint (1) и int (11), я использовал несколько клиентов mysql (navicat, sequel pro).
Это вообще ничего не значит! Я запустил тест, все вышеперечисленные клиенты или даже клиент командной строки, кажется, игнорируют это.
Но ширина экрана наиболее важна, если вы используете ZEROFILL
опцию, например, ваша таблица имеет следующие 2 столбца:
TINYINT (2) ZEROFILL
B tinyint (4) Зерофилл
у обоих столбцов есть значение 1, вывод для столбца A будет 01
и 0001
для B , как видно на скриншоте ниже :)
(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 поддерживает ее).