《深入浅出Mysql》——第三章 Mysql支持的数据类型
在整数类型中,按照取值范围和存储方式不同,分为 tinyint、smallint、mediumint、int、 bigint 这 5 个类型。如果超出类型范围的操作,会发生“Out of range”错误提示。为了避免此 类问题发生,在选择数据类型时要根据应用的实际情况确定其取值范围,最后根据确定的结 果慎重选择数据类型。
对于整型数据,MySQL 还支持在类型名称后面的小括号内指定显示宽度,例如 int(5)表 示当数值宽度小于 5 位的时候在数字前面填满宽度,如果不显示指定宽度则默认为 int(11)。 一般配合 zerofill 使用,顾名思义,zerofill 就是用“0”填充的意思,也就是在数字位数不够 的空间用字符“0”填满。以下几个例子分别描述了填充前后的区别。
(3)分别修改 id1和 id2 的字段类型,加入 zerofill 参数:
日期类型:
TIMESTAMP还有一个重要特点,就是和时区相关。当插入日期时,会先转换为本地时区 后存放;而从数据库里面取出时,也同样需要将日期转换为本地时区后显示。这样,两个不 同时区的用户看到的同一个日期可能是不一样的,下面的例子演示了这个差别。
(1)创建表t8,包含字段id1(TIMESTAMP)和id2(DATETIME),设置id2的目的是为 了和id1做对比
可以发现,时区的值为“SYSTEM”,这个值默认是和主机的时区值一致的,因为我们在中国, 这里的“SYSTEM”实际是东八区(+8:00)。
(4)修改时区为东九区,再次查看表中日期:
。对于超出允许值范围的值例 如('a,d,f')将不允许注入到上面例子中设置的 SET 类型列中,而对于('a,d,a')这样包含重 复成员的集合将只取一次,写入后的结果为“a,d”