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

  • 相关阅读:
    Storm系列(六)架构分析之Scheduler-调度器[EventScheduler]
    Storm系列(五)架构分析之Nimbus启动过程
    Storm系列(四)Topology提交校验过程
    Storm系列(三)Topology提交过程
    Storm系列(二)系统结构及重要概念
    Esper系列(一)初探
    scala学习笔记(四)样本类与模式匹配
    Storm系列(一)集群的安装配置
    Kafka系列(二)特性和常用命令
    Kafka系列(一)安装和配置说明
  • 原文地址:https://www.cnblogs.com/little-tech/p/13633282.html
Copyright © 2011-2022 走看看