04. MySql中常用的数据类型

一 char和varchar

char(n) 和 varchar(n) 中括号中 n 代表字符的最大个数,并不代表字节个数,比如 CHAR(10) 就可以存储 10 个字符

区别

  1. 长度

    1. char的长度不可变;
    2. varchar的长度可变
  2. 效率

    1. 由于char的长度固定,所以修改的时候不需要考虑长度的变化,所以效率会更高;
    2. varchar在每次修改的时候,需要根据长度来判断所需要占据的空间并开辟不同长度的空间,因此需要做一些额外的操作
  3. 存储的方式

    1. char在存储的时候会在字符串右边添加空格,保证存储数据的长度保持一致;实际上,存储的是加了空格之后的数据+一个记录原字符串长度的字节;例如’java’实际上存储的是’java ';同时一定要注意,char类型会自动删除掉字符串末尾的空格,例如传入’abc ‘取出来时会变成’abc’!!!
    2. varchar在存储的时候存储的是不会补充空格,也不会删掉原有的空格;实际上存储的是原本的字符串+一个记录原字符串长度的字节,因此varchar会更节省空间一点

总结:char修改效率高,但是会浪费一部分空间;varchar节省空间,但是修改效率较低

char适用的场景:

  1. 长度固定的列,例如手机号码、身份证号码、MD5密文数据

varchar适用的场景:

  1. 字符串最大长度远大于该列的平均长度
  2. 修改的场景不频繁
  3. 使用了UTF-8这种复杂的字符集,每个字符都使用不同的字节数进行存储

二 数字类型

MySql中以数据类型(m)来约束数据

在数字类型中,取值范围都已经被确定,并且所占用的内存大小都已确定是固定值(decimal除外)

  1. 在整型中这个m表示的意义是:假如指定了这个m为5,那么长度不足5的数字存进去可以在左侧被某个字符填充,例如采用zerofill放进去一个1,那么最终就是00001,如果长度超过了5,那就什么都不做;如果没有指定zerofill,m没有用处

  2. 小数分为浮点数和定点数:浮点数是float和double,定点数是double,都可以使用(m,d)来表示

其中,m表示总的位数,d表示小数位

浮点数中,d不可以大于m;decimal的取值范围和占用内存大小都随m变化,暂用内存大小为m+2个字节

可参考:https://www.jianshu.com/p/73b60e15b842

三 时间类型

  1. date:YYYY-MM-DD
  2. time:HH:MM:SS
  3. year:YYYY
  4. datetime:日期和时间,YYYY-MM-DD HH:MM:SS
  5. timestamp:时间戳,YYYY-MM-DD HH:MM:SS[.fraction],例如:2018-01-09 10:44:00.00000

对于date字段来说,它只支持date部分,如果插入了time部分的内容,它会丢弃掉该部分的内容,并提示一个warning;例如往一个date类型字段插入20180109104400,则会保存为2018-1-09,并提示一个warn

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值