MySQL常用数据类型
常用数据类型
概述
- MySQL 数据库的表是一个二维表,由一个或多个数据列构成,每个列都要求有名称和数据类型。
- 数据类型是一个标签,是便于 SQL 了解每个列期望存储什么类型的数据的指南,它也标识了 SQL 如何与存储的数据进行交互。
- MySQL 支持多种数据类型,大致可以分为三类:数值、日期/时间和字符串类型。
数值
类型 | 大小 | 描述 |
---|---|---|
tinyint | 1字节 | 十分小的整数值 |
smallint | 2字节 | 较小的整数值 |
mediumint | 3字节 | 中等大小的整数值 |
int | 4字节 | 标准大小的整数值 |
bigint | 8字节 | 较大的整数值 |
float | 4字节 | 单精度浮点数 |
double | 8字节 | 双精度浮点数 |
decimal | 对decimal(M, D),如果M > D,为M+2字节;否则为D+2 | 字符串形式的浮点数 |
声明整型数据列时,可以为它指定显示宽度(长度),例如 int(5)
指定显示宽度为5个字符;如果没有给它指定显示宽度,MySQL 会为它指定一个默认值。显示宽度只用于显示,并不会限制取值范围和占用空间
浮点类型和定点类型都可以用(M, D)
来表示,其中M
称为精度,表示总共的位数(存储的有效位数);D
称为标度,表示小数的位数
float
和double
在不指定精度时,默认会按照实际的精度(由计算机硬件和操作系统决定),decimal
如果不指定精度,默认为(10,0)
字符串
类型 | 大小 | 描述 |
---|---|---|
char | 0 ~ 255字节 | 定长字符串 |
varchar | 0 ~ 65535字节 | 变长字符串 |
tinytext | 0 ~ 255字节 | 短文本字符串 |
text | 0 ~ 65535字节 | 长文本数据 |
char
值的长度固定为创建表时声明的长度,分配的存储空间和声明的长度一样多。存储char
值时,将在其右边填充空格以达到指定长度;检索char
值时,一般会删除尾部的空格
varchar
类型的字符串长度可变,在存储时不会被填充。若字符串本身以空格结尾,在存储和检索时也不会删除尾部空格
时间日期
类型 | 大小 | 显示格式 | 存储范围 | 描述 |
---|---|---|---|---|
year | 1字节 | YYYY | 1901 ~ 2155 | 年份值 |
date | 3字节 | YYYY-MM-DD | 1000-01-01 ~ 9999-12-31 | 日期值 |
time | 3字节 | hh:mm:ss或hhh:mm:ss | -838:59:59 ~ 838:59:59 | 时间值 |
datetime | 8字节 | YYYY-MM-DD hh:mm:ss | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | 日期时间的混合表示 |
timestamp | 4字节 | YYYY-MM-DD hh:mm:ss | UTC 1970-01-01 00:00:01 ~ 2038-01-19 03:14:01 | 时间戳 |
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的 MySQL 不能表示的值时使用"零"值(0000-00-00
or 0000-00-00 00:00:00
)
datetime
在存储日期数据时,按实际输入的格式存储,即输入什么就存储什么,与时区无关;而timestamp
值的存储是以 UTC(世界标准时间)格式保存的,存储时对当前时区进行转换,检索时再转换回当前时区,即查询时,根据当前时区的不同,显示的时间值是不同的