Mysql 数据库内置的数据类型
decimal
存储小数,必须使用 decimal, 不要用 float 和 double等其他类型,否则可能会出现精度丢失
在 decimal (M,N) 中
- M 表示有效数字数的位数。(注意不是整数的位数,例如 -123.45 中 M=5 而不是3)
- N 表示小数点后的位数
- 整数的位数为 M-N
- 存储占用 M+2 bit,因为要包含正负号和小数点
bigint
- 取值范围 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807),可以表示正负十亿亿级别的数值
- 储存空间 64 bit
Oracle 数据库内置的数据类型
NUMBER
数字类型,可以指定它的精度和小数位数。
格式 NUMBER (precision, scale)
- precision 表示有效数字的位数(注意不是整数的位数),最大38
- scale 表示小数位数
INTEGER
整型类型,小数位数为 0,INTEGER 属于 NUMBER 的子类型,相当于 NUMBER (P,0)
金融类字段
金额类字段
根据阿里巴巴 java 开发规范,“任何货币金额,均以最小货币单位且整型类型来进行存储”,因此要使用长整形
- Mysql : 建议 bigint 以分为最小单位存储时,最大可以表示正负千万亿级别的金额
- Oracle : 建议 INTEGER 小数保留到分,整数 16 位,最大可以表示千万亿级别的金额
利率类字段
根据行业习惯,存储时,利率保留到小数点后6位,展示时,利率只展示到小数点后4位
- Mysql : 建议 DECIMAL (10,6) ,小数点后保留 6 位,整数 4 位,
- Oracle : 建议 NUMBER (10,6) ,小数点后保留 6 位,整数 4 位,
坐标类字段
二位坐标-经纬度
推荐做法
经度
- Mysql : DECIMAL (11,8)
- Oracle : NUMBER (11,8)
维度
- Mysql : DECIMAL (10,8)
- Oracle : NUMBER (10,8)
经度取值范围为 [0,180],纬度的取值范围为 [0,90],因此经度比纬度是要多存一位
三维坐标
今天的文章数据库常用类型字段设计规范分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/21848.html