我在mysql中知道boolean为 tinyint (1) .
tinyint (1)
今天我看到一个表定义了一个整数,如 tinyint(2) ,还有其他像 int(4) , int(6) ......
tinyint(2)
int(4)
int(6)
大小在整数和tinyint类型的字段中意味着什么?
这意味着 display width
无论你使用tinyint(1)还是tinyint(2),它都没有任何区别 .
我总是使用tinyint(1)和int(11),我使用了几个mysql客户端(navicat,sequel pro) .
它并不意味着什么!我运行了一个测试,所有上述客户端甚至命令行客户端似乎都忽略了这一点 .
但是,如果您使用 ZEROFILL 选项, display width 是最重要的,例如您的表有以下2列:
ZEROFILL
A tinyint(2)zerofill
B tinyint(4)zerofill
两列的值都为1,列 A 的输出为 01 , 0001 为 B ,如下面的截图所示:)
01
0001
(m) 表示列显示宽度; MySQL客户端等应用程序在显示查询结果时会使用此功能 .
(m)
例如:
| 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) . 如您所见,它使用显示宽度填充左侧的值 .
a
b
c
TINYINT(1)
TINYINT(2)
TINYINT(3)
重要的是要注意它不会影响该特定类型的可接受值范围,即 TINYINT(1) 仍然接受 [-128 .. 127] .
[-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客户端支持时使用) .
Numeric Type Attributes .
4 回答
这意味着 display width
无论你使用tinyint(1)还是tinyint(2),它都没有任何区别 .
我总是使用tinyint(1)和int(11),我使用了几个mysql客户端(navicat,sequel pro) .
它并不意味着什么!我运行了一个测试,所有上述客户端甚至命令行客户端似乎都忽略了这一点 .
但是,如果您使用
ZEROFILL
选项, display width 是最重要的,例如您的表有以下2列:A tinyint(2)zerofill
B tinyint(4)zerofill
两列的值都为1,列 A 的输出为
01
,0001
为 B ,如下面的截图所示:)(m)
表示列显示宽度; MySQL客户端等应用程序在显示查询结果时会使用此功能 .例如:
这里
a
,b
和c
分别使用TINYINT(1)
,TINYINT(2)
和TINYINT(3)
. 如您所见,它使用显示宽度填充左侧的值 .重要的是要注意它不会影响该特定类型的可接受值范围,即
TINYINT(1)
仍然接受[-128 .. 127]
.关于INT,TINYINT ......这些是不同的数据类型,INT是4字节数字,TINYINT是1字节数字 . 更多信息 - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT .
TINYINT数据类型的语法是TINYINT(M),其中M表示最大显示宽度(仅在MySQL客户端支持时使用) .
Numeric Type Attributes .