java 建数据库表_建数据库表经验总结

之前建表都是参考别人的表来建的,自己很少去思考为什么那么建,以实现功能为目的,最近接到了曹操出行和E代驾的新需求,需要自己建一张出行订单的表用来记录订单信息,于是总结了下建表时需要注意的地方。

MySQL数据类型和Java中实体类的映射关系

51fd284b6990a400b668c436810c0ecf.png

整数类型

eca564576a83d8fde9caf22c02664cf0.png

计算机原理中我们知道,字节(byte)并非是计算机存储的最小单位, 还有比字节(byte)更小的单位, 也就是位(bit),一个位就代表一个二进制位0或1,8个位组成一个字节;,一般字节用大写B来表示byte, 位用小写b来表示bit.根据int类型允许存储的字节数是4个字节(即4B=32b, 最大值即为32个1组成), 我们就能换算出int UNSIGNED(无符号)类型的存储范围就是 0~2^32,能存储的最小值为0, 最大值为4294967295,如果带符号位的话就是 -2^31 ~ 2^31-1 。整数类型有可选的 unsigned 属性,表示不允许负值,这大致可以使正数的上限提高一倍。主键自增 id 适合设置为 unsigned 属性的 int 类型。

计算机存储单位的换算:

1B=8b

1KB=1024B

1MB=1024KB

整数类型指定宽度的理解

先来看一个示例,我定义了一个tinyint类型的平台字段,然后我指定长度为1,如果是长度为1的字符串类型的话应该是只能输入一个字符的,然而指定长度为1的整形类型确能输入超过一位的数。

27c610cc529235e12d5bfa6667c0cdbf.png

发现最大可以输入到127,因为有符号的tinyint最大为127

0347db1bd2498bbc449bd7e9a4f34cfe.png

MySQL 可以为整数类型指定宽度,例如 int(11),对大多数应用这是没有意义的:它不会限制值的合法范围,只是规定了 MySQL 的一些交互工具(例如 MySQL 命令行客户端)用来显示字符的个数。对于存储和计算来说,int(1) 和 int(20) 是相同的。

其实当我们在选择使用int的类型的时候,不论是int(1)还是int(20),它在数据库里面存储的都是4个字节的长度,这个int(M)中的M只是规定了数据的宽度,如果你选择了Zerofill属性,就能更好地理解这个1了,如果我们写入的数据达不到这个长度,那么就会在数据前面补0来达到这个长度。比如我们将int(1)改成int(3),我们再输入1,实际上显示的是001。所以不管你将 int 类型的长度设为多少并不会影响数据的存储范围。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值