MySQL之数据类型


常用数据类型

类型名称 说明
int 整数类型
double ⼩数类型
decimal(m,d) 指定⻓度的⼩数类型
date ⽇期类型,格式为 yyyy-MM-dd,包含年⽉⽇,不包含时分秒
datetime ⽇期类型,格式为 YYYY-MM-DD HH:MM:SS,包含年⽉⽇时分秒
varchar(M) ⽂本类型, M 为 0~16383 之间的整数(可变⻓度)
char(M) ⽂本类型, M 为 0~255 之间的整数(不可变⻓度)

扩展数据类型

整数扩展

类型 有符号取值范围(signed) ⽆符号取值范围(unsigned) 占⽤字节
TINYINT -128 ~ 127 0 ~ 255 1
SMALLINT -32768 ~ 32767 0 ~ 65535 2
MEDIUMINT -8388608 ~ 8388607 0 ~ 16777215 3
INT -2147483648 ~ 2147483647 0 ~ 4294967295 4
BIGINT -9223372036854775808 ~ 9223372036854775807 0 ~ 8446744073709551615 8

浮点数类型与定点数扩展

  • 浮点数类型和定点数类型的可以表示⼩数。

  • 浮点数类型有两种:

    • 单精度浮点类型 FLOAT(M,D)
    • 双精度浮点类型 DOUBLE(M,D)
    • M 取值范围是[1,255],D 的取值范围 是[1,30]。
  • 定点数类型只有⼀种:DECIMAL(M,D)。

  • M 表示总共的位数(整数位数 + ⼩数位数),D 表示⼩数部分多少位。

  • 类型 有符号 ⽆符号 占⽤字节
    FLOAT (-3.402823466E+38 ~ -1.175494351E-38), 0 , (1.175494351E-38 ~ 3.402823466E+38) 0, 1.175494351E-38 ~ 3.402823466E+38 4
    DOUBLE (-1.7976931348623157E+308 ~ 2.2250738585072014E-308),0, (2.2250738585072014E-308 ~1.7976931348623157E+308) (2.2250738585072014E-308 ~1.7976931348623157E+308) 8
  • DECIMAL(M,D)⽐较特殊, M 的范围[1,65],D 的范围[0,30],其中 D≤M,占⽤字节是变⻓的(M+2)。

  • FLOAT 和 DOUBLE 不指定精度时,默认会按照实际的精度存储(有计算机硬件和操作系统决定),DECIMAL 不指定精度时,默认为 (10,0)。

  • 因为 FLOAT 和 DOUBLE 并不精确,所以在计算⼀些精度要求⽐较⾼的时候字段时(⽐如⾦额)要⽤ DECIMAL。

  • 演示:

  • CREATE TABLE test(
        double_price double,
        decimal_price decimal(2, 2)
    );
    INSERT INTO test
    VALUES (0.47, 0.47),
           (0.44, 0.44),
           (0.19, 0.19);
    
    SELECT sum(double_price), sum(decimal_price) FROM test;
    

二进制字符串类型

类型 说明 最⼤⻓度
BIT(M) 位字段类型 ⼤约(M+7)/8 个字节 (M 最⼤是 64)
BINARY(M) 固定⻓度的⼆进制字符串 255
VARBINARY(M) 可变⻓度的⼆进制字符串 16384
TINYBLOB(M) ⾮常⼩的 BLOB 256
BLOB(M) ⼆进制⼤对象 可以存储⼆进制⽂件 16K

文本字符串类型

字符串类型⽤来存储字符串数据,除了可以存储字符串数据外,还可以存储其他数据,⽐如图⽚和声⾳的⼆进制数据。 MySQL ⽀持两类字符型数据:⽂本字符串和⼆进制字符串。

类型 说明 最⼤⻓度
CHAR(N) 定⻓ 字符 255
VARCHAR(N) 变⻓ 字符 16383
TINYTEXT ⾮常⼩的变⻓字符串 255
TEXT ⼩的变⻓字符串 16K
MEDIUMTEXT 中等⼤⼩的变⻓字符串 16M
LONGTEXT ⼤的变⻓字符串 4G
ENUM 枚举类型 最多 65536 个值
SET 集合类型 最多 64 个值
  • 注意:char 和 varchar 中的 N 指的是 字符长度 ,不是字节⻓度。

⽇期与时间类型

类型 ⽇期格式 ⽇期范围 字节
YEAR YYYY 1901 ~ 2155 1
TIME HH:MM:SS -838:59:59 ~ 838:59:59 3
DATE YYYY-MM-DD 1000-01-01 ~ 9999-12-3 3
DATETIME YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 8
TIMESTAMP YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:01 UTC ~ 2038-01- 19 03:14:07 UTC 4

文章作者: Axieyun
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Axieyun !
评论
评论
  目录