关于MySQL数据类型定义的几个细节:
(1)INT(N)中,这个N表示啥?如:INT(2)和INT(11)有什么区别?
(2)VARCHAR(N)这个N表示啥?既然VARCHAR是可变长度的,VARCHAR(2)和VARCHAR(200)是不是一样?如果不一样区别在哪儿?
(3)DECIMAL(M,N)中的M和N又表示啥?如果定义字段类型为DECIMAL(10,2),那么当插入数据3.2455时,实际插入的值是什么?
1.Int(N)
存储整数,可以使用这几种数据类型,TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT,分别使用8,16,24,32,64位存储空间,储值范围为-2E(N-1)到2E(N-1)-1.
这些类型决定了Mysql是怎么在内存和磁盘中存储数据的,但是在计算机中一般使用64位的BigInt整数,即使在32位环境中。
Mysql可以指定类型的宽度,比如int(10), 对大多数应用这是没有意义的。因为,这不会限制值得合法范围,只是规定了Mysql的一些交互工具(例如Mysql命令行客户端)的显示字符的个数。对于储存和计算来说,int(10)和int(2)是一样的。
测试
CREATE TABLE `int_n` (
`int2` int(2) DEFAULT NULL,
`int10`