MYSQL数据类型

来源:互联网 发布:淘宝面膜便宜的原因 编辑:程序博客网 时间:2024/06/05 18:14

一.目标

   1.掌握常用的数据类型

   2.针对业务选择合适的数据类型



二.MySQL数据类型扫盲

  1.整型

    int、smallint、mediumint、bigint

   

举个栗子:

   int(11) 和 int(21) 有什么区别?

   其实这两者没有任何区别,无论是存储空间还是存储范围都是一样的。比如你存储一个1,采用int(11),前边会给你补充10个0,int(21),前边会补充20 个0。

  

   只是显示方式有区别,没有本质区别。

 2.浮点型

 float、double

 

 double虽然比float精度高,然而他们都属于非精度类型,这就会出现精度丢失的问题。

 MySQL为我们提供了我更精确的数据类型,decimal,常用来存储交易相关的数据。Decimal(M,N):m代表总精度,n代表小数点右侧的位数。1<M<254 , 0<N<60,存储空间变长。

相比于浮点类型,double、float是属于定长的数据类型,前者占8字节、后者占4字节。


存储性别、省份、类型等分类信息时,优先使用tinyint和enum。

int和bigint之间做选择的时候,优先选择bigint。(随着业务的增长,int是根本无法满足业务需求的)

存储交易等高精度数据时,建议使用decimal。

 3.char和vachar

char与varchar存储的单位都是字符。

   char存储定长,容易造成空间浪费。

   varchar存储变长,节省存储空间。

  存储情况:

 

   从图中可以看出,char白白浪费了三个空间,但是varchar占用了8个空间。


   text与char和varchar的区别。

  

  

    char与varchar定义的长度是字符长度,不是字节长度。

    存储字符串优先使用varchar(N),N尽量小一些。

    虽然数据库存储二进制数据,但是性能低下,强烈不建议使用。



    中文字符,对于gbk编码,一个中文占两个字节、对于utf8编码一个中文占3个字节,对于utf8mb4一个中文可占三个字节也可占四个字节。MySQL在5.5.3版本之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。其实,utf8mb4是utf8的超集,理论上原来使用utf8,然后将字符集修改为utf8mb4,也会不会对已有的utf8编码读取产生任何问题。当然,为了节省空间,一般情况下使用utf8也就够了。既然utf8应付日常使用完全没有问题,为什么还要使用utf8mb4呢?原因就是低版本的MySQL支持的utf8编码,最大字符长度为3字节,如果遇到4字节的字符就会发生错误。utf8mb4最经典的业务场景就是存储emoji表情。

   存储emoji表情,以java程序为例,MySQL必须5.5.3之后,jdbc驱动程序必须5.1.13之后。


datetime和timestamp


函数UNIX_TIMESTAMP(now()) :将时间转换为时间戳。


存储时间可以选择:datetime、timestamp、bigint

原创粉丝点击