MySQL数据类型有哪些?

目录

1、整数类型

2、浮点数类型

3、定点数类型

4、字符类型

5、日期时间类型

6、二进制类型


1、整数类型

数据类型

范围

字节

tinyint

有符号值:-128到127
无符号值:0到255

1

smallint

? smallint 或 help smallint 或 \h smallint

2

mediumint

同上,详情查看文档帮助

3

int(integer)

同上,详情查看文档帮助

4

bigint

同上,详情查看文档帮助

8

Bool,boolean

等价于tinyint(1),0为false,其它为true

1

2、浮点数类型

float[(m,d)]

double[(m,d)

3、定点数类型

decimal(M,D)或dec(M,D) :内部是以字符串形式存储数值。其中,M是数值总位数,D是保留位数。DECIMAL 的存储空间并不是固定的,而由精度值 M 决定,占用 M+2 个字节。

浮点数 VS 定点数

  • FLOAT 和 DOUBLE 在不指定精度时,默认会按照实际的精度(由计算机硬件和操作系统决定),DECIMAL 如果不指定精度,默认为(10,0);
  • 不论是定点还是浮点类型,如果用户指定的精度超出精度范围,则会四舍五入进行处理;
  • 浮点数相对于定点数的优点是在长度一定的情况下,浮点数能够表示更大的范围;缺点是会引起精度问题;
  • 在 MySQL 中,定点数以字符串形式存储,在对精度要求比较高的时候(如货币、科学数据),使用 DECIMAL 的类型比较好,另外两个浮点数进行减法和比较运算时也容易出问题,所以在使用浮点数时需要注意,并尽量避免做浮点数比较。

4、字符类型

char(m):固定(定长)m个字符

varchar(m):变长字符串

tinytext

text

mediumtext

longtext

enum('值1','值2','值3',…):枚举类型,只选择其中一个值

set('值1','值2','值3',…):可选择多个值

5、日期时间类型

1)time:时:分:秒

2)date:年-月-日

3)datetime:年-月-日 时:分:秒

4)timestamp:如果需要经常插入或者更新日期为当前系统时间,则通常使用 TIMESTAMP 来表示。

5)year:年

TIMESTAMP 与 DATETIME 除了存储字节和支持的范围不同外,还有一个最大的区别是:

  • DATETIME 在存储日期数据时,按实际输入的格式存储,即输入什么就存储什么,与时区无关;
  • 而 TIMESTAMP 值的存储是以 UTC(世界标准时间)格式保存的,存储时对当前时区进行转换,检索时再转换回当前时区。即查询时,根据当前时区的不同,显示的时间值是不同的。

提示:如果为一个 DATETIME 或 TIMESTAMP 对象分配一个 DATE 值,结果值的时间部分被设置为 '00:00:00',因此 DATE 值未包含时间信息。如果为一个 DATE 对象分配一个 DATETIME 或 TIMESTAMP 值,结果值的时间部分被删除,因此DATE 值未包含时间信息。

6、二进制类型

1)bit(M)

# bit(M),M的取值范围1-64,默认为1
DROP TABLE IF EXISTS t ;
CREATE TABLE t (
	c bit(6)
);

# 如果为 BIT(M) 列分配的值的长度小于 M 位,在值的左边用 0 填充
# 13的二进制为1101,则以下插入值为:001101
INSERT INTO t values (13);

# 错误,64的二进制为1000000,溢出
INSERT INTO t values (64);

2)varbinary(m)

3)binary(m)

BINARY 和 VARBINARY 类型类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字节字符串。

  • BINARY 类型的长度是固定的,指定长度后,不足最大长度的,将在它们右边填充 “\0” 补齐,以达到指定长度;
  • VARBINARY 类型的长度是可变的,指定好长度之后,长度可以在 0 到最大值之间。
# BINARY 类型的长度是固定的,指定长度后,不足最大长度的,将在它们右边填充 “\0” 补齐,以达到指定长度。
DROP TABLE IF EXISTS t ;
CREATE TABLE t (
	c binary(3)
);

# 插入的值为:"a\0\0"
INSERT INTO t SET c='a';

# 验证1
select c,c='a',c='a\0\0' from t ;

# 插入的值为:'ab\0'
INSERT INTO t SET c='ab';

# 验证2
select c,c='ab',c='a\0\0',c='ab\0' from t ;

4)tinyblog(M)

5)blob(M)

6)mediumblog(M)

7)longblog(M)

BLOB 是一个二进制的对象,用来存储可变数量的数据。BLOB 类型分为 4 种:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB,它们可容纳值的最大长度不同。BLOB 列存储的是二进制字符串(字节字符串),TEXT 列存储的是非进制字符串(字符字符串)。BLOB 列是字符集,并且排序和比较基于列值字节的数值;TEXT 列有一个字符集,并且根据字符集对值进行排序和比较。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值