mysql之zerofill
2013-05-13 22:29
253 查看
相信很多用了mysql的人都很迷茫
1.对于整形的字段用了unsigned有什么区别?
2.tinyint(1) 和 tinyint(7) 究竟有什么区别?
下面来简单分析一下:
1、对于每种整形来说,都分无符号(unsigned)和有符号(signed)两种类型,如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的数据,比如16位系统中一个int能存储的数据的范围为–32768
~ 32767(16位2进制的最高位作为符号位‘1’为负‘0’为正),而unsigned能存储的数据范围则是0~65535(这个最高位不用做符号位,所以是2的16次方,一共65536)。
由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。同时在相同位数的情况下,所能表达的整数范围变大。
下面提供一下MYSQL中各种类型的整形的存储范围
2、说到tinyint(1)和 tinyint(7)的区别,就不能不提mysql的整形的一个特性,zerofill,即是否在位数不足的时候,左补0。
明白这个定义之后,其实就是非常清楚了,1也好,7也好,只是和zerofill结合起来使用,用来标识存储的值在不满足多少位的情况下左补0
看例子
:
先建一张测试表test1
真相都在图中了。
1.对于整形的字段用了unsigned有什么区别?
2.tinyint(1) 和 tinyint(7) 究竟有什么区别?
下面来简单分析一下:
1、对于每种整形来说,都分无符号(unsigned)和有符号(signed)两种类型,如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的数据,比如16位系统中一个int能存储的数据的范围为–32768
~ 32767(16位2进制的最高位作为符号位‘1’为负‘0’为正),而unsigned能存储的数据范围则是0~65535(这个最高位不用做符号位,所以是2的16次方,一共65536)。
由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。同时在相同位数的情况下,所能表达的整数范围变大。
下面提供一下MYSQL中各种类型的整形的存储范围
2、说到tinyint(1)和 tinyint(7)的区别,就不能不提mysql的整形的一个特性,zerofill,即是否在位数不足的时候,左补0。
明白这个定义之后,其实就是非常清楚了,1也好,7也好,只是和zerofill结合起来使用,用来标识存储的值在不满足多少位的情况下左补0
看例子
:
先建一张测试表test1
CREATE TABLE IF NOT EXISTS `test1` ( `t1` int(5) unsigned NOT NULL, `t2` int(11) unsigned zerofill NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE = utf8_unicode_ci; INSERT INTO `test1` (`t1`, `t2`) VALUES (111, 111111), (111111,1111);看一下最终的数据显示:
真相都在图中了。
相关文章推荐
- mysql 里面零填充和默认值属性:zerofill default 属性
- 13、MySQL-无符号(UNSIGNED)和零填充(ZEROFILL)
- MySQL zerofill 的用法
- mysql zerofill 的使用
- In MySQL, a zero number equals any string
- MySQL中出现关于no data - zero rows fetched,selected,or processed
- Tinyint/ smallint/ mediumint/int/ bigint(M) unsigned zerofill
- Mysql zero downtime deployment
- mysql游标的使用 No data - zero rows fetched, selected
- In MySQL, a zero number equals any string
- 细节问题:ZEROFILL的用法范围。
- test_zero_fill
- allow zero datetime=true导致datetime转换失败:MySql.Data.Types.MySqlDateTime”的对象无法转换为类型“System.Nullable`1[System.DateTime]
- In MySQL, a zero number equals any string
- JDBC driver for MySQL连接提示"The connection property 'zeroDateTimeBehavior' acceptable values are: 'CONVERT_TO_NULL', 'EXCEPTION' or 'ROUND'. The value 'convertToNull' is not acceptable."解决方案
- Left Pad Zero Fill
- tinyint(3) unsigned zerofill的意思
- MySQL存储过程错误No data - zero rows fetched, selected, or processed
- mysql 利用游标循环删除数据报错:No data - zero rows fetched, selected, or processed
- MySQL存储过程错误No data - zero rows fetched, selected, or processed