zoukankan      html  css  js  c++  java
  • mysql数据类型

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

    1.日期

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

    日期时间类型 占用空间(bytes) 日期格式 描述 零值表示
    DATETIME 8  YYYY-MM-DD HH:MM:SS 日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS
    范围是从 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'
    0000-00-00 00:00:00
     TIMESTAMP 4  YYYY-MM-DD HH:MM:SS TIMESTAMP 值使用 Unix 纪元('1970-01-01 00:00:00' UTC) 至今的描述来存储。格式:YYYY-MM-DD HH:MM:SS
    范围是从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC
    00000000000000
     DATE 3  YYYY-MM-DD

    日期。格式:YYYY-MM-DD

    注释:支持的范围是从 '1000-01-01' 到 '9999-12-31'

    0000-00-00
    TIME 3 HH:MM:SS

    格式:HH:MM:SS 
    范围是从 '-838:59:59' 到 '838:59:59'

    00:00:00
    YEAR 1  YYYY

    2 位或 4 位格式的年

    4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069。

    0000

    备注:

      1) DATETIME 和 TIMESTAMP:DATETIME 和 TIMESTAMP 返回相同的格式,它们的工作方式很不同。

        在 INSERT 或 UPDATE 查询中,TIMESTAMP 自动把自身设置为当前的日期和时间。

        TIMESTAMP 也接受不同的格式,比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。

        TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。

        DATETIME,不做任何改变,基本上是原样输入和输出。

    2.number

      MySQL支持所有标准SQL数值数据类型。 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。

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

    类型 占用空间(bytes) 描述 备注
    tinyint 1 范围:(-128,127) (0,255) 小整数值
    smallint 2 (-32 768,32 767) 大整数值
    mediumint 3   大整数值
    intinteger 4   大整数值
    bigint 8   极大整数值
    float 4   单精度浮点数
    double 8   双精度浮点数
    decimal 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2   小数值

    3.字符串

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

    类型 大小(bytes) 用途
    char 0-255 定长字符串
    vachar 0-65535 变长字符串
    tinyblob 0-255 不超过 255 个字符的二进制字符串
    tinytext 0-255 短文本字符串
    blob 0-65 535 二进制形式的长文本数据
    text 0-65 535 长文本数据
    mediumblob 0-16 777 215 二进制形式的中等长度文本数据
    mediumtext 0-16 777 215 中等长度文本数据
    longblob 0-4 294 967 295 二进制形式的极大文本数据
    longtext 0-4 294 967 295 极大文本数据

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

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

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

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

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

    备注(数据类型中长度的含义):

      1). 字符串  常用的字符串类型的数据类型有 CHAR 和 VARCHAR 两种,两者后面都需要跟上一个数字表示长度,例如

        char(n),varchar(n),  两者中的 n 含义均为该字段最大可容纳的字符数。(注意早期的版本中,n指的是字节数,你也不需要关注是哪些版本,因为是十多年前的版本了,估计一般人也用不到)。

      (1个字符可能是字母或者汉字或者标点符号)

      2). 整数类型 常用的整数数据类型有 tinyint ,smallint ,mediumint , int ,bigint 共计5种,在声明列时,后面也可以跟上 n ,例如 int(n) 。实际上这里的 n 非常鸡肋,几乎没有任何使用场景。它的含义是“显示位宽”,这个 n 无论填任何数,不影响存储环节,仅影响在检索时的输出格式,而且在非常严格的情况下才成立。

      3).浮点型 FLOAT 类型固定占用4个字节, DOUBLE 类型固定占用8个字节,逻辑和上述的整型类似;DECIMAL 类型,它的定义方式是 DECIMAL(M,D) ,其中 M 表示最大位数,D 表示小数点右侧的位数 

      例如我们定义 DECIMAL(5,2) ,则表示最大位数为5位,小数点后2位,因此小数点前还剩下3位,于是取值范围为 -999.99至999.99 。存储以字符串存储,比如定义 DECIMAL(3,0) ,存入100时,实际存入的是由字符“1”,“0”,“0”拼接而成的字符串“100”的二进制值,存入时占用3个字节,分别是31,30,30(注意这是十六进制)。

      DECIMAL 类型在存储时有补0操作。小数点前不足,向更高位补0,小数点后不足,向更低位补0

     

    参考:

      https://blog.csdn.net/csdnluolei/article/details/86488461

      https://www.runoob.com/mysql/mysql-data-types.html

      https://www.w3school.com.cn/sql/sql_datatypes.asp

      https://zhuanlan.zhihu.com/p/111028232?from_voters_page=true

  • 相关阅读:
    [ERR] Node 10.211.55.8:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
    PAT A1137 Final Grading (25 分)——排序
    PAT A1136 A Delayed Palindrome (20 分)——回文,大整数
    PAT A1134 Vertex Cover (25 分)——图遍历
    PAT A1133 Splitting A Linked List (25 分)——链表
    PAT A1132 Cut Integer (20 分)——数学题
    PAT A1130 Infix Expression (25 分)——中序遍历
    PAT A1142 Maximal Clique (25 分)——图
    PAT A1141 PAT Ranking of Institutions (25 分)——排序,结构体初始化
    PAT A1140 Look-and-say Sequence (20 分)——数学题
  • 原文地址:https://www.cnblogs.com/little-tech/p/13633282.html
Copyright © 2011-2022 走看看