博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL 数字类型的思考
阅读量:6586 次
发布时间:2019-06-24

本文共 1176 字,大约阅读时间需要 3 分钟。

1. 整数类型:

类型 存储 正负数范围 全正数范围 全正长度 备注
tinyint 1字节 -128~127 0~255 3
smallint 2字节 -32768~32767 0~65535 5
mediumint 3字节 -8388608~8388607 0~16777215 8 可用于邮编号
int 4字节 -2147483648~2147483647 0~4294967295 10 可用拼接1的方式存手机号
bigint 8个字节 ±9223372036854775808-1 18------- 20位 可存储手机号

注意:

1.在类型后面加unsigned,可向服务器声明全正数。可使正数最大值x2
一般喜欢使用int作为主键类型,若在表定义时加上int unsigned。可使主键范围扩到原来的两倍,不用担心主键值用尽的尴尬情况
2.手机号可以用int也可以用bigint。但即使是bigint也比varchar(11)占用更少的空间,从而在这一点上性能更高。
3.但是:任何数字列与unsigned定义的列进行计算后,若出现负数结果,则会返回 UNSIGNED的最大值。这个问题是继承C语言的。若考虑到会产生列与列直接的计算,需要避免UNSIGNED的定义。只在主键列上UNSIGNED设置即可,因为主键列一般设置为业务无关自增列。
4.留空

2.数值型(DEMICAL,NUMERIC)

DEMICAL,NUMERIC都是用来存储精确的数值,一般金额使用这个参数,DEMICAL是基本类型,NUMERIC按DEMICAL进行计算。DEMICAL按照二进制的格式存储
例如:我们公司使用DEMICAL(18,4)来存储金额数值
小数位为4位,整数位位18-4=14位
DEMICAL(0),无法存数据,DEMICAL(X)不指定小数位数时,默认为0,理论上DEMICAL最长可以容纳65位数字

3.位值型(bit)

用于存储位值,最长可达64位,mysql命令行客户端无法查看位值数据。导出时也可能显示乱码,不要担心。
应用:bit(1) 用于判断是否
bit(32) 用于存储IP地址,只占4字节,应该是最省空间的选择
例如:bit(6) 存入 b'101',其实是按照00101来存储,不足的会在左边补零,读取出来视不同客户端也会补零
4.浮点类型
float与double
其小数点位数和总位数的关系与DEMICAL相似。浮点类型的数值是不精确的,需要精确计算的数值不建议设置为浮点型
例如:float(7,4) 存入9999.00009,小数位超出1位,其他的类型都会报错,
但是浮点型会自动四舍五入,再次取出后就会变成999.0001

转载于:https://blog.51cto.com/l0vesql/2046544

你可能感兴趣的文章
React是UI的未来吗?
查看>>
手把手教你通过Thrift 访问ApsaraDB for HBase
查看>>
Vue+webpack+Element 兼容问题总结
查看>>
复杂recyclerView封装库
查看>>
见微知著 —— Redis 字符串内部结构源码分析
查看>>
Command './js-ant' failed to execute
查看>>
阿里云NFS NAS数据保护实战
查看>>
Spring cloud配置客户端
查看>>
Android API中文文档(111) —— MailTo
查看>>
Linux 中如何卸载已安装的软件
查看>>
thinkphp 3.2 增加每页显示条数
查看>>
oracle日常简单数据备份与还原
查看>>
黑马程序员__反射总结
查看>>
Quartz原理
查看>>
控制namenode检查点发生的频率
查看>>
2、递归遍历文件夹下每一个文件
查看>>
解决activity加上Theme.Translucent.NoTitleBar 页面跳转显示桌面
查看>>
php类库
查看>>
Linux线程
查看>>
Exchange Server 2013 系列八:邮箱服务器角色DAG实战
查看>>