跟我一起学习MySQL技术内幕(第五版):(第三章学习日记5)

3.2.4数字数据类型

3.2.4.4数字数据类型的属性
3.2.4.5选择数据类型

———————————————————————————————

3.2.2.4数字数据类型的属性

1.unsigned 属性(unsigned int)

1可以防止出现负值。适用于除bit类型除外的所有数字类型,但大部分情况是与各种整数类型一起使用。
2.让一个整数列具有unsigned属性,并不会改变底层数据类型的取值范围的宽度,而只是把这个范围向右平移。(unsigned值会把这种数据类型的范围扩大一倍)
3.为decimal或者浮点列加上unsigned属性,浮点值取值范围不会朝正数方向平移,相反,原取值范围上端保持不变,而下端会变为零(实际是砍掉了一半取值范围)
4.unsigned对应signed属性(默认允许带符号的一个属性)

2.zerofill属性(zerofill int)

1.适用于除bit外的所有数字类型。它会在列里的显示值前面填充若干零,使其宽度最终达到显示宽度。
2.对于长度大于zerofill给定的长度的数值,该数值不会被截断,将会完整显示。
3.对于赋予zerofill属性的列,将会自动被指认为unsigned属性。

3.auto_increment属性

1.用于整数和浮点数类型(通常不用于浮点数)
2.用于生成一组唯一标识符或序列值
3.通常情况下,在没有另外设定的情况下,auto_increment列的值将会从1 开始,每增加一行,序列值加一。如果进行了行的删除操作,那么该序列可能将会受到影响。是否发生,取决于存储引擎。
4.每个表最多只能有一个auto_increment列,且具有not null约束(默认not null也可以显式指定),并且必须被索引(一般设为primary key或unique索引),且通常使用unsigned属性。


create table ai 
(
i int unsigned not null auto_increment primary(key)
);

create table ai
(
i int unsigned not null auto_increment unique
);

create table ai
(
i inr unsigned not null auto_increment,
primary key(i)
);

create table ai
(
i int unsigned not null auto_increment,
unique(i) 
);

4.指定默认值操作:(3.2.3节)

create table t
(
 i1 int default -1,
 i2 int dafault 1,
 i3 int default null
);

3.2.4.5选择数字数据类型

1.选择数字的数据类型时,要考虑数值的取值范围,并选择一个能够覆盖该范围的最小类型 (节省空间)

2.超出范围:如果MySQL启用严格的SQL模式没去只超出范围会导致一个错误
否则会被截断:替换为该列取值范围的相应端值点,同时生成一条警告信息。(对于-32768~32767的范围,99999会被截断为32767)

3.对于定点或浮点列,存储的小数位数多于精度值,会进行取舍(1.234 插入到float(8,1)结果将是1.2)所以选择时一定要考虑精确值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值