MySQL---数据库中数据类型的合理运用

数据类型


这里写图片描述

bit

基本语法:bit[(M)]位字段类型。M表示每个值的位数,范围从1到64。如果M被忽略,默认为1。
这里写图片描述
插入一个数字试一试:插入(10,10)
这里写图片描述
我们发现,插入的bit类型的10变成了空的。

  • bit类型的字段在显示时,是按照ASCLL码对应值显示的。
  • 如果有只存放0或1的值,可以定义bit或bit(1),可以节省空间。

数值类型

这里写图片描述

  • 在MySQL中,整形可以指定是有符号的还是无符号的,默认是有符号的。
  • 可以通过UNSIGNED来说明某个字段是无符号的。

例:
这里写图片描述

  • 尽量避免使用unsigned的值。例如对于int类型可能存不下的数据,int unsigned同样可能存不下,与其存在计算中越界的风险,还不如提升为bigint类型。

小数的使用

float
float[(m,d)][unsigned]
M指定显示长度,d指定小数位数,占用空间4个字节。
这里写图片描述
首先插入数据(3,173.86)由于小数位只有一位,所以系统自动四舍五入显示了(3,173.9)。小数点前只有三位,第二次输入的数据有误。

decimal
decimal(m,d)[unsigned]
m指定长度,d表示小数点的位数。
decimal与float的区别在于:

  • float整数位没有限制,但是小数位精度大约7位
  • decimal整数最大位数为65,支持小数最大位数30位,d省略默认为0.,m省略,默认10

字符串

char(L):固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255
varchar(L):可变长度字符串,L表示字符长度,最大长度65535个字节

varchar(len) , len到底是多大

  • varchar长度可以指定为0~65535,但是有1-3个字节用于记录数据大小,所以说有效数字为65532。
  • 当编码为utf8时,varchar最大长度为65532/3=21844(utf8中,一个汉字占3个字节)。编码为gbk,varchar最大长度为65532/2=32766(在gbk中,一个汉字占用两个字节)。

char和varchar存储空间比较:
这里写图片描述

如何选择char与varchar?

  1. 数据长度确定不变,使用char,例如:身份证,手机号…
  2. 数据长度不确定,使用varchar,例如:名字,地址…..
  3. char浪费磁盘空间,效率高。
  4. varchar节省磁盘空间,效率低。

日期和时间类型

datatime:时间日期格式‘yyyy-mm-dd HH:ii:ss’表示范围从1000到9999,占用8个字节
data:日期‘yyyy-mm-dd’,占用3个字节
timestamp:时间戳,从1970开始,格式与datatime一致,4个字节
这里写图片描述
定义timestamp时 default CURRENT_SIMESTAMP能在缺省时,使用当前时间。

枚举和set

枚举
在一个记录人的爱好的数据库中,会有跑步,读书,打游戏,游泳,等等多种选择,而某一个人只会选择其中的一种或几种。
男生和女生的记录同样可以用到枚举。
这里写图片描述
为了效率考虑,枚举类型存储使只存储了一个值,而且,每个值依次对应1~65535,所以枚举项最多65535项。
使用mysql>select * from hobby where find_in_set = ('游泳',hobby);即可查询出爱好游泳的人
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_37934101/article/details/80829573