• MySql数据类型


    一、MySql 的数据类型

    MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

    1、数值类型

    MySQL 支持所有标准 SQL 数值数据类型。

    这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC),以及近似数值数据类型(FLOAT、REAL 和 DOUBLE PRECISION)。

    关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。

    BIT数据类型保存位字段值,并且支持 MyISAM、MEMORY、InnoDB 和 BDB表。

    作为 SQL 标准的扩展,MySQL 也支持整数类型 TINYINT、MEDIUMINT 和 BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

    类型大小范围(有符号)范围(无符号)用途
    TINYINT1 Bytes(-128,127)(0,255)小整数值
    SMALLINT2 Bytes(-32 768,32 767)(0,65 535)大整数值
    MEDIUMINT3 Bytes(-8 388 608,8 388 607)(0,16 777 215)大整数值
    INT或INTEGER4 Bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
    BIGINT8 Bytes(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
    FLOAT4 Bytes(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度浮点数值
    DOUBLE8 Bytes(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度浮点数值
    DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值小数值

    注意

    1. 整形
      取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。
      int(m)里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,没有影响到显示的宽度。
    2. 浮点型(float和double)
      设一个字段定义为float(6,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。整数部分最大是3位,如果插入数12.123456,存储的是12.1234,如果插入12.12,存储的是12.1200。
    3. 定点数
      浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。
      decimal(m,d) 参数m<65 是总个数,d<30且 d

    2、日期和时间类型

    表示时间值的日期和时间类型为 DATETIME、DATE、TIMESTAMP、TIME和YEAR。

    每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

    TIMESTAMP类型有专有的自动更新特性,将在后面描述。

    类型大小( bytes)范围(有符号)范围(无符号)用途
    DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
    TIME3‘-838:59:59’/‘838:59:59’HH:MM:SS时间值或持续时间
    YEAR11901/2155YYYY年份值
    DATETIME8‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’YYYY-MM-DD hh:mm:ss混合日期和时间值
    TIMESTAMP4‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-19 03:14:07’ UTC结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07YYYY-MM-DD hh:mm:ss混合日期和时间值,时间戳

    注意

    若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。

    3、字符串类型

    字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。

    类型大小( bytes)范围用途
    CHAR310-255
    VARCHAR20-65535变长字符串
    TINYBLOB10-255不超过 255 个字符的二进制字符串
    TINYTEXT10-255短文本字符串
    BLOB20-65535二进制形式的长文本数据
    TEXT20-65535长文本数据
    MEDIUMBLOB30-16 777 215二进制形式的中等长度文本数据
    MEDIUMTEXT30-16 777 215中等长度文本数据
    LONGBLOB40-4294967295二进制形式的极大文本数据
    LONGTEXT40-4294967295极大文本数据

    注意

    1、char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。

    2、CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

    3、BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

    4、BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。

    5、有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。

    参考文章:https://www.cnblogs.com/-xlp/p/8617760.html

  • 相关阅读:
    C++ 游戏飞机大战, 字符型的
    C++中的auto是一个关键字,用于在编译时自动推导变量的类型
    VUE系列 --- 网络模块axios(二 )
    重学JavaScript Promise API
    MySql8.0对JSON数据的操作简记
    P1886 滑动窗口 /【模板】单调队列
    【HCIE】03.BGP高级特性
    python django 小程序图书借阅源码
    第1章 JDBC概述 & 第2章 获取数据库连接
    HStore表全了解:实时入库与高效查询利器
  • 原文地址:https://blog.csdn.net/qq_43468807/article/details/127750057