字符集及数据类型

字符集及数据类型

一、字符集

  • 字符集是对SQL语句编码风格的一种标准规范,如果没有统一的字符集,SQL语句在使用的过程中就会混乱。
  • 查询所有的字符集:show charset;
  • 数据库刚建之初的字符集编码格式是latin1,现在在中国使用的数据库主流字符集是utf8或者utf8mb4,少量会使用gbk。
  • utf8和utf8mb4的区别:
    • utf8:一个中文占据3个字节,该字符集下不能存储emoji表情数据
    • utf8mb4:一个中文占4个字节,该字符集下可以存储emoji表情数据,并且mb4包含普通的utf8

    在数据库创建时建议直接选择utf8mb4。

二、校验规则/排序规则(collation)

  • 查看所有的排序规则:show collation;
  • utf8mb4_general_ci:大小写不敏感
  • utf8mb4_bin:大小写敏感

根据不同的场景来选择对于嗯的排序规则

三、数据类型

  • 数字类型:
    • tinyint:极小的整数类型,范围在0~256
    • smallint:较小的整数类型,范围在-215~215
    • int类型:常规的整数类型,范围在-232~232-1
  • 字符串
    • 在生产中使用最多的数据类型
    • 类别:
      • char(100):定长的数据类型,100表示数据的长度,不管存储的字符串长度多长,都立即分配100个字符长度的存储空间,未占满的空间使用空格来填充
      • varchar(num):不定长的数据类型,num表示数据的长度。每次存储数据之前都要先判断一下字符串的长度,按需分配磁盘空间。会单独申请一个字符串长度空间来存储字符串长度(少于255),
        如果超过以上的字符串长度会占用两个存储空间。

      如何选择这两个数据类型:当数据长度小于255,并且是定长的数据就选择char(100),如果数据长度大于255或者不定长的则选择varchar(num)

      • enum(枚举)
  • 时间
    • datatime:年月日时分秒
      • 范围:1000-01-01 00:00:00 到 9999-12-31 23:59:59.999999
      • 开始设置的什么时区就一直固定,不会变
    • timestamp:年月日时分秒
      • 范围:1970-01-01 00:00:00 到 2038-01-19 03:14:07.999999
      • 会自动根据所在的时区走
  • 二进制
posted @ 2020-03-24 10:51  大道至诚  阅读(706)  评论(0编辑  收藏  举报