Я знав булеву в 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, продовження pro).
ВСЕ це нічого не означає! Я провів тест, все вище клієнти або навіть клієнт командного рядка, здається, ігнорують це.
Але ширина відображення є найважливішою, якщо ви використовуєте ZEROFILL
параметр, наприклад, ваша таблиця має дві колонки:
TINYINT (2) ZEROFILL
B tinyint (4) zerofill
обидва стовпці мають значення 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 підтримує його).