• 6 MySQL常用的数据类型


    1、整型
    -- TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT 分别使用 8, 16, 24, 32, 64 位存储空间,一般情况下越小的列越好;
    
    • 1
    2、浮点数
    -- 1.FLOAT 和 DOUBLE 为浮点类型,DECIMAL 为高精度小数类型。CPU 原生支持浮点运算,但是不支持 DECIMAl 类型的计算,因此 DECIMAL 的计算比浮点类型需要更高的代价;
    -- 2.FLOAT、DOUBLE 和 DECIMAL 都可以指定列宽,例如 DECIMAL(18, 9) 表示总共 18 位,取 9 位存储小数部分,剩下 9 位存储整数部分;
    
    • 1
    • 2
    3、字符串
    -- 1.CHAR 和 VARCHAR 两种类型,一种是定长的,一种是变长的
    -- 2.VARCHAR 这种变长类型能够节省空间,因为只需要存储必要的内容。但是在执行 UPDATE 时可能会使行变得比原来长,当超出一个页所能容纳的大小时,就要执行额外的操作。MyISAM 会将行拆成不同的片段存储,而 InnoDB 则需要分裂页来使行放进页内。
    -- 3.VARCHAR 会保留字符串末尾的空格,而 CHAR 会删除;
    
    • 1
    • 2
    • 3

    MysQL支持多种字符串类型,包括VARCHAR和CHAR类型、BLOB和TEXT类型、ENUM(枚举)和SET类型;
    VARCHAR和 CHAR是两种最主要的字符串类型。
    VARCHAR

    1.VARCHAR类型用于存储可变长字符串,是最常见的字符串数据类型。它比定长类型更节省空间,因为它仅使用必要的空间
    
    • 1

    CHAR与VARCHAR如何选择?

    1.字符串列的最大长度比平均长度大很多,列的更新很少;使用了像UTF-8这样复杂的字符集,每个字符都使用不同的字节数进行存储。
    2.CHAR适合存储很短的字符串,或者所有值定长或都接近同一个长度
    
    • 1
    • 2
    4、时间和日期

    MySQL 提供了两种相似的日期时间类型: DATETIME 和 TIMESTAMP

    DATETIME

    --1.能够保存从 1001 年到 9999 年的日期和时间,精度为秒,使用 8 字节的存储空间;
    --2.它与时区无关
    --3.默认情况下,MySQL 以一种可排序的、无歧义的格式显示 DATETIME 值,例如“2008-01-16 22:37:08”,这是 ANSI 标准定义的日期和时间表示方法。
    
    • 1
    • 2
    • 3

    TIMESTAMP

    --1.和 UNIX 时间戳相同,保存从 1970 年 1 月 1 日午夜(格林威治时间)以来的秒数,使用 4 个字节,只能表示从 1970 年 到 2038 年
    --2.它和时区有关,也就是说一个时间戳在不同的时区所代表的具体时间是不同的.
    --3.MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提供了 UNIX_TIMESTAMP() 函数把日期转换为 UNIX 时间戳;
    --4.默认情况下,如果插入时没有指定 TIMESTAMP 列的值,会将这个值设置为当前时间
    --5.应该尽量使用 TIMESTAMP,因为它比 DATETIME 空间效率更高
    
    • 1
    • 2
    • 3
    • 4
    • 5
    5、BLOB 和 TEXT
    --1.BLOB和TEXT都是为存储很大的数据而设计的数据类型,分别采用二进制和字符方式存储
    --2.与其他类型不同,MySQL把每个BLOB和TEXT值当做一个独立的对象去处理。当BLOB和TEXT值太大时,InnoDB会使用专门的“外部”存储区域来进行存储,此时每个值在行内需要1~4个字节存储一个指针,然后在外部存储区域存储实际的值。
    --3.MySQL对BLOB和TEXT列进行排序与其他类型是不同的:它只对每个列的最前max_sort_length个字节而不是整个字符串做排序。同样的,MySQL也不能将BLOB或TEXT列全部长度的字符串进行索引;
    
    • 1
    • 2
    • 3
  • 相关阅读:
    docker学习笔记
    第十二章:Java异常概念、处理和自定义异常类
    Spring 源码(7)Spring的注解是如何解析的?
    1130 - Host ‘192.168.10.10‘ is not allowed to connect to this MysOL server
    c++_0基础_讲解7 练习
    MicroPython-On-ESP8266——8x8LED点阵模块(2)使用74HC595驱动
    【获取当前月时间】elementul日期选择器在页面一进来直接获取到本月1号到当前日期的方法【详细注释】
    1114: 逆序(数组)
    【LeetCode】1979. 找出数组的最大公约数
    是便秘还是攒肚子?宝宝6天没有便便,宝妈三招教你辨别
  • 原文地址:https://blog.csdn.net/weixin_39563769/article/details/134220474