zoukankan      html  css  js  c++  java
  • 01-MySQL支持的数据类型

    1、数值类型

    • 整数类型

    MySQL 支持的整数类型有 SQL 标准中的整数类型 INTEGER,SMALLINT,TINYINT、MEDIUMINT和BIGINT。其整数类型的特性如下表所示:

    在上述INT类型中,又有三个可选属性,分别是:

    1. (M):M 指定了 INT 型数据显示的宽度。
    2. UNSIGNED:UNSIGNED(无符号)修饰符规定字段的值只能保存正数。
    3. ZEROFILL:ZEROFILL(零填充)修饰符规定可以用 0(不是空格)来填补输出的值。使用这个修饰符可以阻止 MySQL 数据库存储负值。
    •  浮点数类型和定点数类型

    浮点数类型包括单精度(FLOAT)和双精度(DOUBLE)两种,定点数类型只包括DEC/DECIMAL/NUMERIC 一种,DEC/DECIMAL 与 NUMERIC 表示的是同一种数据类型。

    浮点数类型所占空间大小及表数范围如下表所示:

     在浮点数数中有一个默认值参数(M,D),“(M,D)”中的 M 表示浮点数据类型中数字的总个数,D 表示小数点后数字的个数。

    注意:

      (1) M 的取值范围为 0~255。但由于 FLOAT 只能保证 6 位有效数字的准确性,所以在FLOAT(M,D)中,当 M<=6 时,数字通常是准确的;而 DOUBLE 只能保证 16 位有效数字的准确性,所以在 DOUBLE(M,D)中,当 M<=16 时,数字也通常是准确的。
      (2) D 的取值范围为 0~30,同时必须满足 D<=M,否则会报错。
      (3)浮点数类型(M,D)的用法为非标准用法,如果需要数据库迁移,则不要这么使用。

    定点数的类型特性如下所示:

      (1) DECIMAL 类型的 M 默认值为 10,D 默认值为 0。如果在创建表时,定义某字段为DECIMAL 类型而没有带任何参数,则等同于 DECIMAL(10,0),如果只带一个参数,则该参数为 M 值,D 则取默认值 0。
      (2) M 的取值范围为 1~65,取 0 时会被设为默认值 10,超出范围则会报错。
      (3) D 的取值范围为 0~30,同时必须满足 D<=M,否则会报错。
     
    2、日期和时间类型
    MySQL 提供了TIME、DATE、YEAR.、DATETIME 和 TIMESTAMP五种数据类型。其类型特性如下所示:
    • TIME类型

    TIME类型用来存储记录只有时间没有日期的数据,

    MySQL的表示方法:'HH:MM:SS'/'HHH:MM:SS'(时间值较大时用来表示)

    (1)HH 表示小时,取值范围为-838~838,如果表示一天中的某个时间,此时小时取值为 0~23;如果表示两个事件的时间间隔,此时小时的取值可能会比 23大,甚至是负数;

    (2)MM 表示分,取值范围为 0~59;

    (3)SS 表示秒,取值范围为 0~59。

    • DATE类型

    DATE用来存储日期数据,支持的范围是'1000-01-01'到'9999-12-31'。使用 CURRENT_DATE、NOW()或者 SYSDATE()三种方式获取系统当前日期。

    YYYY 表示年,取值范围为 1000~9999;
    MM 表示月,取值范围为 1~12;
    DD 表示日,取值范围为 1~31。
    • YEAR类型

    YEAR 类型只是用来表示年份的数据类型,其取值范围为 1901~2155 以及 0000,使用 NOW()或者 SYSDATE()两种方式获取系统当前年份。

    • DATETIME类型
    DATETIME类型适用于需要同时存储日期与时间,DATETIME 类型的取值范围为'1000-01-01 00:00:00'~'9999-12-31 23:59:59'。
    • TIMESTAMP类型
    TIMESTEMP 类型的数据指定方式与 DATETIME 基本相同,不同之处在于:
    (1) 数据的取值范围不同,TIMESTEMP 类型的取值范围更小。
    (2) TIMESTAMP 类型的字段没有明确赋值,或是被赋与了 NULL 值,MySQL 会自动将该字段赋值为系统当前的日期与时间。
    (3) TIMESTEMP 类型还可以使用 CURRENT_TIMESTAMP 来获取系统当前时间。
    (4) TIMESTEMP 类型有一个很大的特点,那就是时间是根据时区来显示的。
    (5)MySQL 在存储 TIMESTEMP 类型的数据时,会转换成 UTC 时间存储,显示数据时再转换成当地时区的时间。
     
    3、字符串类型
    字符串类型是在数据库中存储字符串的数据类型。字符串类型有 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET 等。其类型特性如下所示:
    • CHAR 和 VARCHAR 类型

    CHAR和VARCHAR类型相似,均用于较短的字符串,不同的是CHAR用于固定的长度,VARCHAR用于可变的长度,且VARCHAR存储的数据所占空间大小为字符串的实际长度加 1,如下图所示:

     如果CHAR不足的字节部分会使用空格符补齐,而VARCHAR则有多少长度存储多少。

    • BINARY 和 VARBINARY 类型
    BINARY 和 VARBINARY 数据类型与 CHAR 和 VARCHAR 数据类型相似,BINARY 和 VARBINARY用于存储二进制字符串,还有一些不同在于:
    (1)、BINARY(M)和 VARBINARY(M)中的 M 值代表的是字节数,而非字符长度。
    (2)、CHAR 和 VARCHAR 在进行字符比较时,比较的只是本身存储的字符(忽略填充字符),而BINARY 和 VARBINARY 是按照二进制值来进行比较的,因此结果会不同。
    (3)、对于 BINARY 字符串,其填充字符是'',而 CHAR 的填充字符为空格。
    • TEXT 和 BLOB 类型

     TEXT用于存储较大的文本数据类型,TEXT的子类型有TINYTEXT、TEXT、MEDIUMTEXT 以及 LONGTEXT四种。

    BLOB 类型与 TEXT 类型很类似。不同点在于 BLOB 类型用于存储二进制数据。
    • ENUM 类型
    ENUM 类型的中文名称为枚举类型。ENUM 是一个字符串对象,其值通常选自一个允许值列表中,该列表在创建表时会被明确地设定,设定的格式为:ENUM('value1', 'value2', 'value3', 'value4', 'value5', ···)。
    • SET 类型
    SET 类型也是一个字符串对象,与 ENUM 类似但不相同。SET 类型可以从允许值列表中选择多个字符串成员,列表设定方式为SET('value1', 'value2', 'value3','value4', 'value5', ···)
     
    4、JSON类型
    MySQL5.7.8之后支持两种JSON数据,即JSON数组和JSON对象。
    (1) JSON 数组。JSON 数组中可以存储多种数据类型,其格式为:[值 1, 值 2, 值 3, ···],如["abc", 10, null, true, false]。
    (2) JSON 对象。JSON 对象是以“键/值”对形式存储的,其格式为:{“键 1”: 值 1, “键2”: 值 2, ···},如{"k1": "value", "k2": 10}。
     
  • 相关阅读:
    DAY1 linux 50条命令
    安卓2.0,3.0,4.0的差别
    java历史
    晶体管共射极单管放大电路
    jquery取消选择select下拉框
    oarcle数据库导入导出,创建表空间
    360chrome,google chrome浏览器使用jquery.ajax加载本地html文件
    jquery 选择器
    nodejs 相关
    关于http请求
  • 原文地址:https://www.cnblogs.com/clearlie/p/13201841.html
Copyright © 2011-2022 走看看