zoukankan      html  css  js  c++  java
  • 史上最简单MySQL教程详解(基础篇)之数据类型

    数值类

    整数型

    数据类型 说明 字节数
    TINYINT -128~127 1
    SMALLINT -32768~32767 2
    MEDIUMINT -8388608~8388607 3
    INT -2147483648~2147483647 4
    BIGINT -9223372036854775808~9223372036854775807 8

    小数型

    数据类型 说明 字节数
    FLOAT 单精度小数 4
    DOUBLE 双精度小数 8
    DECIMAL 精确计算时使用的数据类型 根据精度确定

    注意事项

    • 指定精度时,如果插入值的精度高于实际定义的精度,系统会自动进行四舍五入处理,使值的精度达到要求。
    • 当不指定精度时,Float、Double默认会保存实际精度,而Decimal默认是整数;

    日期类

    数据类型 说明
    DATE类型: 支持的范围为’1000-01-01’到’9999-12-31’
    TIME类型: 支持的范围是’-838:59:59’到’838:59:59’
    DATETIME类型 支持的范围是’1000-01-01 00:00:00’到’9999-12-31 23:59:59’
    TIMESTAMP类型: 时间戳,用于INSERT或UPDATE操作时自动获得当前时间
    YAER类型: 支持范围是1901~2155

    注意事项

    • 在MySQL中除了timestamp 类型允许有默认值外,其他时间类型都不能有默认值,不然会报错;
    • TimeStamp使用Current_TimeStamp()而DateTime使用NOW(来获取当前时间);
    • Datetime存储的时间与时区无关,Timestamp存储的时间及显示的时间都依赖于当前时区;

    字符串类

    数据类型 说明
    char: 固定长度字符串,需要设定长度值,不足设定值,则右侧自动填满空格;最大255个字符
    varchar: 可变长字符串需要设定长度值,最大65532个字节
    tinytext 用于存储普通文本,28-1字节的可变长度字符串
    text: 用于存储普通文本,不受行的最大长度的限制,216-1字节的可变长度字符串
    mediuntext 用于存储普通文本,224-1字节的可变长度字符串
    longtext 用于存储普通文本,264-1字节的可变长度字符

    注意事项:

    • CHAR 和 VARCHAR 的区别:
      1.字符串末尾空格的处理方式不同。
      2.CHAR列的长度固定为创建表时声明的长度,所以效率比VARCHAR要高,但会造成一定的空间浪费,VARCHAR 与之相反

    二进制类

    数据类型 说明
    binary: 定长二进制字符串,应该设定长度值,按“二进制字节”保存存字符数据,最大255个字节,无编码问题
    varbinary: 变长二进制字符串,需要设定长度值,按“二进制字节”存字符数据,最大65532个字节,无编码问题
    TINYBLOB 可变长二进制数据,最多255个字节
    BLOB 可变长二进制数据,最多216-1个字节
    MEDIUMBLOB 可变长二进制数据,最多224-1个字节
    LONGBLOB 可变长二进制数据,最多232-1个字节

    注意事项:

    • BINARY、VARBINARY和 BLOB可以理解为是CHAR、VARCHAR和TEXT的二进制版本
    • BINARY和VARBINARY:两者唯一的差别在于BINARY当长度不够时会补“”。
    • BLOB类型是一种特殊的二进制类型。BLOB可以存储数据量很大的二进制数据,如图片,视频等。不同BLOB之间的区别也只是最大长度不同。

    枚举类

    数据类型 说明
    ENUM(var1,var2,var3,…) 单选可能的枚举型
    SET(var1,var2,var3,…) 多选可能的枚举型

    数据类型选择的个人建议

    • 整型:根据要显示的最大值决定;
    • 浮点型:要显示小数。如果要精确到小数点后10位,就选择DOUBLE,而不应该选择FLOAT。同时,浮点数在存储过程中会出现精度丢失的问题。DECIMAL精度较高,浮点数会出现误差,如果精度较高,则应选择定点数DECIMAL;
    • 字符串型:定长与变长的区别,CHAR类型占用空间比较大,但是处理速度比VARCHAR快,如果长度变化不大,最好选择CHAR类型。对于长度不确定的,最好选择VARCHAR;
    • 时间:根据实际情况决定,如果需要显示的时间与时区对应,就应该选择TIMESTAMP;
    • ENUM类型和SET类型:长度不同,ENUM类型最多可以由65535个成员,而SET类型最多只能包含64个成员。且ENUM只能单选,而SET类型可以多选;
    • TEXT类型和BLOB类型:TEXT只能存储字符数据,而BLOB可以存储二进制数据。如果是纯文本,适合TEXT,,但是文本数据不是必要情况下,最好选择VarCharl类型。如果是图片,视频等适合存二进制,但通常图片视频等的储存是将文件储存在服务器,而在数据库记录文件地址来实现的;
  • 相关阅读:
    反序列化
    反序列化使用
    Serializer序列器
    DRF工程搭建
    JDK目录介绍
    Java环境变量配置
    Java语言的特性
    Java语言概述
    计算机编程语言介绍
    软件开发介绍
  • 原文地址:https://www.cnblogs.com/newtol/p/10159114.html
Copyright © 2011-2022 走看看