数据库类型

整型

类型 占用字节 无符号范围 有符号范围 数据长度
tinyint 1 0 - 255 -128 - 127 3
smallint 2 0 - 65535 -32768 - 32767 5
mediumint 3 0 - 16777215 -8388608 - 8388607 8
int 4 0 - 2^32 -2^31 - 2^32-1 10
bigint 8 0 - 2^64 -2^63 - 2^63-1 20

数字类型

1
2
3
4
5
6
7
8
9
10
float
float: 表示不指定小数位的浮点数
float(M,D): 表示一共存储M个有效数字,其中小数部分占D位
float(10,2): 整数部分为10位,小数部分为2位

double
双精度:系统用8个字节来存储数据,表示范围更大,10^308次方,但是精度只有15位左右。

decimal
系统自动根据存储的数据来分配存储空间,大概九个数值就会分配四个字节来进行存储,同时小数和整数部分是分开的。decimal(M,D): M表示总长度,最大值不能超过65,D代表小数部分长度,最长不能超过30.

字符串类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
char
定长字符: 指定长度之后,系统一定会分配指定的空间用于存储数据。
基本语法: char(L),L代表字符数(中文与英文字母一样),L长度为0 ~ 255。

varchar
变长字符: 指定长度之后,系统会根据实际存储的数据来计算长度,分配合适的长度(数据不能超出长度)。基本语法: varchar(L),L代表字符数,L的长度理论值为0 ~ 65535。因为varchar要根据数据的长度自动分配空间,所以插入varchar类型数据后,如果数据小于255个字符,额外增加一个字节。如果数据大于255个字符,额外增加两个字节。用来保存数据所占用的空间长度。

text
文本类型用于存储普通的字符文本mysql一共提供了四种text类型
tinytext:使用一个字节来保存,实际能够存储的数据为2^8 + 1
text:使用两个字节保存,实际存储 2 ^ 16 + 2
mediumtext:使用三个字节保存,实际存储为 2 ^ 24 + 3
longtext:使用四个字节保存,实际存储为 2 ^ 32 + 4

注意:不用定义text类型,当数据超过255个字符的时候,系统会根据存储的数据长度来选择合适的文本类型。

blob
存储二进制文本,例如图片,文件。一般不会使用blob来存储文件本身,通常是使用一个链接来执行对应的文件本身。

enum
枚举:创建列时,设定几个选项,该列的数据结果就是设定的几个选项任意一个。
例如性别:男/女小于255字符使用一个字节来存储枚举的数据大于255小于65535字符会使用两个字节来存储枚举的数据

时间类型

类型 占用字节 范围 格式 用途
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:00 ~ 2038-1-19 11:14:07 YYYMMDD HHMMSS 混合时期和时间值/戳