MySQL数据类型

在MySQL数据库中,每一条数据都有其数据类型。MySQL支持的数据类型,主要分成3类:数字类型、字符串(字符)类型、日期和时间类型。

1、数字类型

MySQL支持所有的ANSI/ISO SQL 92数字类型。这些类型包括准确数字的数据类型(NUMERIC、DECIMAL、INTEGER和SMALLINT),还包括近似数字的数据类型(FLOAT、REAL和DOUBLE PRECISION)。其中的关键词INT是INTEGER的同义词,关键词DEC是DECIMAL的同义词。

整数数据类型:

数据类型说明
TINYINT最小的整数
BIT最小的整数
BOOL最小的整数
SMALLINT小型整型
MEDIUMINT中型整型
INT标准整型
BIGINT大型整型

浮点数据类型:

数据类型说明
FLOAT单精度浮点数
DOUBLE双精度浮点数
DECIMAL一般精度浮点数

在创建表时,使用哪种数字类型,应遵循以下原则。

(1)选择最小的可用类型,如果值永远不超过127,则使用TINYINT比INT强。

(2)对于完全都是数字的,可以选择整数类型。

(3)浮点类型用于可能具有小数部分的数,如货物单价、网上购物交付金额等。

 

2、字符串类型

字符串类型可以分为3类:普通的文本字符串类型(CHAR和VARCHAR)、可变类型(TEXT和BLOB)和特殊类型(SET和ENUM)。它们之间都有一定的区别,取值的范围不同,应用的地方也不同。

(1)普通的文本字符串类型,即CHAR和VARCHAR类型,CHAR列的长度被固定为创建表所声明的长度,取值在1~255之间;VARCHAR列的值是变长的字符串,取值和CHAR一样。

数据类型说明
[national]
char(M)
[binary|ASCII|unicode]
固定长度为M的字符串,其中M的取值范围为0~255。National关键字指定了应该使用的默认字符集。Binary关键字指定了数据是否区分大小写(默认是区分大小写的)。ASCII关键字指定了在改列中使用latin1字符集。Unicode关键字指定了使用UCS字符集
[national]
varchar(M)
[binary]
长度可变,其他和char(M)类似

(2)可变类型(TEXT和BLOB)。它们的大小可以变化,TEXT类型适合存储长文本,而BLOB类型适合存储二进制数据,支持任何数据,如文本、声音和图像等。

数据类型说明
TINYBLOB小BLOB字段
TINYTEXT小TEXT字段
BLOB常规BLOB字段
TEXT常规TEXT字段
MEDIUMBLOB中型BLOB字段
MEDIUMTEXT中型TEXT字段
LONGBLOB长BLOB字段
LONGTEXT长TEXT字段

(3)特殊类型(SET和ENUM)。

数据类型说明
ENUM(value1,value2,...)该类型的列只可以容纳所列值之一或为NULL
SET(value1,value2,...)该类型的列可以容纳一组值或为NULL

创建表时,使用字符串类型时应遵循以下原则。

(1)从速度方面考虑,要选择固定长度的列,可以使用CHAR类型。

(2)要节省空间,使用动态的列,可以使用VARCHAR类型。

(3)要将列中的内容限制在一种选择,可以使用ENUM类型。

(4)允许在一个列中有多于一个的条目,可以使用SET类型。

(5)如果要搜索的内容不区分大小写,可以使用TEXT类型。

(6)如果要搜索的内容要区分大小写,可以使用BLOB类型。

 

3、日期和时间数据类型

日期和时间类型包括:DATETIME、DATE、TIMESTAMP、TIME和YEAR。其中的每种类型都有其取值的范围,如赋予它一个不合法的值,将会被“0”代替。

数据类型说明
DATE日期,格式YYYY-MM-DD
TIME时间,格式HH:MM:SS
DATETIME日期和时间,格式YYYY-MM-DD HH:MM:SS
TIMESTAMP时间标签,在处理报告时使用显示格式取决于M的值,格式YYYY-MM-DD HH:MM:SS
YEAR年份可指定两位数字和四位数字的格式

DATETIME与TIMESTAMP有什么不同?

相同点:TIMESTAMP列的显示格式与DATETIME列相同。显示宽度固定在19字符,并且格式为YYYY-MM-DD HH:MM:SS。

不同点:

TIMESTAMP:4个字节储存,时间范围:1970-01-01 08:00:01 ~ 2038-01-19 11:14:07
值以UTC格式保存,涉及时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区。

DATETIME:8个字节储存,时间范围:1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
实际格式储存,与时区无关。

存储时间(精确到秒)建议使用TIMESTAMP类型,因为TIMESTAMP使用4字节,DATETIME使用8个字节。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pan_junbiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值