类型
大小(字节)
有符号(SIGNED)范围
无符号(UNSIGNED)范围
描述
TINYINT
1
(-128,127)
(0,255)
小整数值
SMALLINT
2
(-32768,32767)
(0,65535)
大整数值
MEDIUMINT
3
(-8388608,8388607)
(0,16777215)
大整数值
INT/INTEGER
4
(-2147483648, 2147483647)
(0,4294967295)
大整数值
BIGINT
8
(-2^63,2^63-1)
(0,2^64-1)
极大整数 值
FLOAT
4
(-3.402823466 E+38, 3.402823466351 E+38)
0 和 (1.175494351 E- 38,3.402823466 E+38)
单精度浮 点数值
DOUBLE
8
(-1.7976931348623157 E+308, 1.7976931348623157 E+308)
0 和 (2.2250738585072014 E-308, 1.7976931348623157 E+308)
双精度浮 点数值
DECIMAL
依赖于M(精度)和D(标度) 的值
依赖于M(精度)和D(标度)的 值
小数 值(精 确定 点数)
以
int
类型为例,
int
类型占用4个字节,也就是32位,所以一个
int
类型的数字的取值范围就是是 -2^31~2^31-1 ,也就是 -2147483648 ~ 2147483647)。如果是无符号的
int
,会将负数范围分配到正数上,所以无符号 int 的范围大小 是0到4294967295 。
在表示人类年龄时,由于年龄不会有负数,因为使用
tinyint
类型(0~255)就很合适。
像 JavaScript,Java 等编程语言中会有布尔类型来表示真假,是否,但是 MySQL 中并没有布尔类型,可以使用
TINYINT(1)
来代表布尔类型,其中 1 表示 True,0表示False。
大部分时候,如果要表示整数类型,都会用
int
类型,表示浮点数类型,会使用
double
。
字符串类型
字符串类型是用到的最多的类型之一。
类型
大小(字节)
描述
CHAR
0-255
定长字符串,使用时需要指定长度
VARCHAR
0-65535
变长字符串,使用时需要指定长度
TINYBLOB
0-255
不超过255个字符的二进制数据
TINYTEXT
0-255
短文本字符串
BLOB
0-65 535
二进制形式的长文本数据
TEXT
0-65 535
长文本数据
MEDIUMBLOB
0-16 777 215
二进制形式的中等长度文本数据
MEDIUMTEXT
0-16 777 215
中等长度文本数据
LONGBLOB
0-4 294 967 295
二进制形式的极大文本数据
LONGTEXT
0-4 294 967 295
极大文本数据
使用最多的字符串类型是
CHAR
和
VARCHAR
。
CHAR
表示定长字符串,指定长度多长,就占用多少个字符,和字节无关。比如定义一个人的性别时,可以使用
CHAR(1)
,则该字段就只占用一个字符,可以用“男”或者“女”来存储性别。当设置“男性”时,两个字符超过限制,就会报错。当存储的字符串长度不够时,剩下的用空格填充,但是在查询时会丢弃。
VARCHAR
是变长字符串,指定的长度为字符的最长长度,比如存储密码时可以使用
VARCHAR(256)
,则密码字段的值最长有 256 个字符。当不够时,剩下的也不会用空格去填充。
虽然
BLOB
用于存储大二进制数据(大文件),但不会这么做,一般都是将大文件直接存储到磁盘上的,数据库中只保存文件的位置信息。
类型
大小(字节)
范围
格式
描述
DATE
3
1000-01-01 至 9999-12-31
YYYY-MM-DD
日期值
TIME
3
-838:59:59 至 838:59:59
HH:MM:SS
时间值或持续 时间
YEAR
1
1901 至 2155
YYYY
年份值
DATETIME
8
1000-01-01 00:00:00 至 9999-12-31 23:59:59
YYYY-MM-DD HH:MM:SS
混合日期和时 间值
TIMESTAMP
4
1970-01-01 00:00:01 至 2038-01-19 03:14:07
YYYY-MM-DD HH:MM:SS
混合日期和时 间值,时间戳
常用的日期类型主要是
DATE
、
TIMESTAMP
、
DATETIME
这三个。比如要定义生日字段,可以使用
DATE
类型,要记录一条数据的创建时间,可以使用
DATETIME
类型。
示例:创建用户表
了解了常用的数据类型后,就可以在使用
CREATE TABLE
建表时,要给表中的每个字段指定数据类型。比如要创建一张用户表:
create table user (
id int comment 'ID' ,
username varchar (10 ) comment '用户名' ,
password varchar (64 ) comment '密码' ,
gender char (1 ) comment '性别' ,
age tinyint unsigned comment '年龄' ,
phone varchar (11 ) comment '手机号' ,
register_time date comment '注册时间'
) comment '用户表' ;
本文介绍了 MySQL 中常用的三种数据类型:数值类型,字符串类型和日期时间类型。在实际使用时,要根据需要,选择一种最精确的类型,可以提高数据库的性能,优化存储空间。
1.0w
SegmentFault思否
MySQL
1.9w
lizheming
ThinkJS
MySQL