• MySQL -- 数据类型


    MySQL – 数据类型


    一、数据类型

    1.数据类型分类

    在这里插入图片描述

    2.数值类型

    在这里插入图片描述

    2.1.tinyint

    tinyint类型的数值范围是-128 ~ 127;
    在这里插入图片描述
    可以看到越界的数值会报错,无法插入表中
    这是因为数据库内部是有约束的,符合约束条件才可以进行操作,不符合条件就无法操作;
    数据类型本质就是一种约束;
    在MySQL中,整形可以指定有符号和无符号的,默认是有符号的
    可以通过unsigned来说明某个字段是无符号的
    在这里插入图片描述
    在这里插入图片描述

    2.2.bit

    bit[(M)] :位字段类型。M表示每个值的位数,范围从1到64。 如果M被忽略,默认为1。
    在这里插入图片描述
    向bit类型元素中插入数据,但是没有显示,这是因为bit字段在显示的时候,是按照ASCII码对应显示的;
    在这里插入图片描述

    2.3小数类型

    • float:
      float[(m,d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节;
      float(4,2)表示的范围是-99.99 - 99.99,MySQL在保存值时会进行四舍五入
      在这里插入图片描述
      多出来的部分被四舍五入了;
      float还可以定义为无符号类型,使用unsigned修饰:
      在这里插入图片描述
    • decimal:
      decimal (m,d)[unsigned]:定点数m指定长度,d表示小数点的位数;
      decimal(5,2)表示的范围是-999.99 - 999.99;
      decimal(5,2) unsigned表示的范围0 ~ 999.99;
      decimal和float很像,但是有区别:float和decimal表示的精度不一样;
      在这里插入图片描述
      说明:
      • float表示的精度大约是7位;
      • decimal精度更高,整数最大位数m为65;支持小数最大位数d是30;如果d被省略,默认为0;如果m被省略,默认是10;

    3.字符串类型

    3.1.char

    char(L):固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255;
    在这里插入图片描述
    char(2)表示可以存放两个字符,可以是字母或汉字,但是不能超过2个,最多只能是255;

    3.2.varchar

    varchar(L):可变长度字符串,L表示字符长度,最大长度65535个字节;
    在这里插入图片描述
    关于varchar(len),Ien到底是多大,这个len值和表的编码密切相关:

    • varchar长度可以指定为0到65535之间的值,但是有1 - 3个字节用于记录数据大小,所以说有效字节数是65532;
    • 当我们的表的编码是utf8时, varchar(n)的参 数n最大值是65532/3-21844[因为utf中,-一个字符占
      用3个字节],如果编码是gbk, varchar(n)的参数n最大是65532/2-32766 (因为gbk中, -一个字符
      占用2字节)。

    char和varchar的比较
    在这里插入图片描述
    如何选择定长和变成字符串:

    • 如果数据确定长度都一样,就使用定长(char) ,比如:身份证,手机号,md5;
    • 如果数据长度有变化,就使用变长(varchar),比如:名字,地址,但是你要保证最长的能存的进去;
    • 定长的磁盘空间比较浪费,但是效率高;
    • 变长的磁盘空间比较节省,但是效率低;
    • 定长的意义是,直接开辟好对应的空间;
    • 变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少;

    4.时间和日期类型

    date:日期 ‘yyy-m-dd’ ,占用三字节;
    datetime:时间日期格式 ‘yyy-mm-dd HH : ii : ss’ 表示范围从1000到9999,占用八字节;
    timestamp:时间戳,从1970年开始的 ‘yyy-mm-dd HH : ii : ss’ 格式和datetime完全一致,占用四字节;
    在这里插入图片描述
    在表中只插入了前两个数据,但是时间戳的数据也更新到的最新的时间,这是因为只要对表中的数据做增、删、改,时间戳就会自动更新到最新时间;

    5.enum和set

    • enum:枚举,单选类型;
      enum(选项1, 选项2, 选项3…);
      该设定只是提供了若干个选项的值,最终一个单元格中, 实际只存储了其中一个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,3…最多65535个;当我们添加枚举值时,也可以添加对应的数字编号;
    • set:集合,多选类型;
      set(选项值1, 选项值2 ,选项值3, …)
      该设定只是提供了若干个选项的值,最终一个单元格中, 设计可存储了其中任意多个值;而且出于效率考虑,这些值实际存储的是”数字",因为这些选项的每个选项值依次对应如下数字:1,2,4,8,16,32,最多64个。
      set其实是位图类型,不是简单的数字;
      在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    使用find_in_set函数进行set的查询:
    在这里插入图片描述
    也可以通过与或级联条件进行查询;

  • 相关阅读:
    存储创新靠软件?
    Java版本电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展
    freertos信号量之互斥信号量
    C语言程序编译过程中自动添加编译时间等相关信息
    【每日一题Day44】LC1779找到最近的相同X和相同Y的点 | 模拟
    【DL】linux服务器上安装Anaconda3
    使用Oracle自带SqlPlus导入导出数据库脚本
    如何压缩视频?视频压缩变小方法汇总
    金仓数据库KingbaseES安全指南--3.1. 用户管理
    瑞吉外卖学习笔记6
  • 原文地址:https://blog.csdn.net/kissland96166/article/details/133999738