第四章 MySQL 数据类型

4.1 MySQL 数据类型介绍

4.1.1 整数类型

TINYINT1字节

SMALLINT2字节

MEDIUMINT3字节

INT4字节

INTEGER4字节

BIGINT8字节

4.1.2 浮点数类型和定点数类型

FLOAT4字节

DOUBLE8字节

DECIMAL(M,D)M+2字节

MySQL可以指定浮点数和定点数的精度,基本形式:

数据类型 (M, D)

M参数称为精度,是数据的总长度;D 参数称为标度,小数点后的长度为D。

默认精度:FLOAT、DOUBLE 型默认保留实际精度,DECIMAL 型默认整数位为10,小数位为0,即默认为整数。

4.1.3 日期与时间类型

YEAR1字节

DATE4字节

TIME3字节

DATETIME8字节

TIMESTAMP4字节

1、YEAR 类型

使用四位字符串或数字表示,MySQL 以 YYYY 的形式显示,范围从 1901 ~ 2155。

使用两位字符串表示,‘00’ ~ ‘69’ 转换为 2000~2069,‘70’ ~ ‘99’ 转换为 1970 ~ 1999。

使用两位数字表示,1 ~ 69 转换为 2001 ~ 2069,70 ~ 99 转换为 1970 ~ 1999, 0 转化为 0000。

2、TIME 类型

MySQL 中以 HH:MM:SS 的形式显示 TIME 类型的值。TIME 类型范围从 ’-838:59:59‘ ~ ’838:59:59'

使用 ‘D HH:MM;SS' 格式的字符串表示。D 表示天数,取值范围 0 ~ 34 ,保存时小时的值等于 (D*24+HH)。可以不严格,也可以是 'HH:MM:SS'、'HH:MM'、'D HH:MM'、'D HH'、'SS' 等形式。

使用 ’HHMMSS‘ 格式的字符串或者 HHMMSS 格式的数值表示。

使用 CURRENT_TIME 或者 NOW() 输入当前系统时间。

3、DATE 类型

MySQL 中以 YYYY-MM-DD 显示,范围从 '1000-01-01' ~ '9999-12-31'。

使用 ’YYYY-MM-DD' 或者 'YYYYMMDD' 格式的字符串表示。任何标点都可以用来做间隔符。

使用 ‘YY-MM-DD' 或者 'YYMMDD' 格式的字符串表示,转换方法同 TIME 类型。

使用 YYYYMMDD 或 YYMMDD 格式的数字表示。

使用 CURRENT_DATE 和 NOW() 来输入当前系统日期。

4、DATETIME 类型

MySQL 中以 ‘YYYY-MM-DD HH:MM:SS' 的形式显示 DATETIME 类型。范围为 DATE+TIME 的范围。

使用 'YYYY-MM-DD HH:MM:SS'、'YYYYMMDDHHMMSS'、'YY-MM-DD HH:MM:SS'、'YYMMDDHHMMSS'、YYYYMMDDHHMMSS、YYMMDDHHMMSS 格式的字符串、数字表示。

使用 NOW() 来输入当前系统日期和时间。

5、TIMESTAMP 类型

MySQL中也是以 ‘YYYY-MM-DD HH:MM:SS' 形式显示 TIMESTAMP 类型。范围从 1970-01-01 08:00:01 ~ 2038-01-19 11:14:07。

TIMESTAMP 类型范围较小,使用与 DATETIME 一样的赋值方式。与 DATETIME 的不同点:

(1) 使用 CURRENT_TIMESTAMP 来输入系统当前日期与时间。

(2) 输入 NULL 时,系统会输入系统当前日期与时间。

(3) 无任何输入时,系统会输入系统当前日期与时间。

TIMESTAMP 时间根据时区显示。

4.1.4 字符串类型

1、CHAR 类型和 VARCHAR 类型

CHAR 类型和 VARCHAR 类型都是在创建表时指定了最大长度,其基本形式如下:

字符串类型(M)

M 参数指定了该字符串的最大长度为 M。CHAR 类型的长度是固定的,长度范围 0~255,VARCHAR 类型的长度时可变的,最大值可以是 0~65535 之间任意值,实际占用空间为字符串的实际长度加1,可以有效地节约系统空间。

2、TEXT 类型

TEXT 类型只能保存字符数据。

TINETEXT0~255 字节

TEXT0~65535 字节

3、ENUM 类型

又称枚举类型,创建表示,ENUM 类型的取值范围就以列表的形式指定了,其基本形式如下:

属性名 ENUM('值1’, '值2', ...'值n')

ENUM 类型的值只能取列表中的一个元素。列表中最多 65535 个值,每个值都有一个顺序排列的编号,MySQL 中存入的是这个编号,而不是列表中的值。

如果 ENUM 类型加上 NOT NULL 属性,其默认值为取值列表的第一个元素;如果不加,ENUM 类型将允许插入 NULL,而且 NULL 为默认值。

4、SET 类型

在创建表时,SET 类型的取值范围就以列表的形式指定了。其基本形式如下:

属性名 SET('值1', '值2', ...'值n')

SET 类型的值可以取列表中的一个或多个元素的组合,以逗号隔开。SET 类型的值最多只能是64个元素的组合。同 ENUM 类型一样,列表中的每个值都有一个顺序排列的编号。MySQL 中存入的是这个编号。插入记录是,元素顺序无关紧要,存入 MySQL 数据库后,数据库系统会自动按照定义时的顺序显示。

4.1.5 二进制类型

BINARY(M)字节数M

VARBINARY(M)允许长度 0~M 的变长二进制字符串

BIT(M)M位二进制数据

TINYBLOB可变长二进制数据,最多255字节

BLOB可变长二进制数据,最多 2^16-1 个字节

MEDIUMBLOB可变长二进制数据,最多 2^24-1 个字节

LONGBLOB可变长二进制数据,最多 2^32-1 个字节

1、BINARY 和 VARBINARY 类型

同 CHAR 和VARCHAR 类型。

2、BIT 类型

查询 BIT 类型的数据时,要用 BIN(字段名+0) 来将值转换为二进制显示。

3、BLOB 类型

特殊的二进制类型,可以用来保存数据量很大的二进制数据。

4.2 如何选择数据类型

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180720G0IQQ400?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券