数据类型
数据类型是指列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。
整型
数据类型 |
存储范围(有符号值) |
存储范围(无符号值) |
字节 |
用途 |
TINYINT |
(-128,127)(-2^(7) 到 2^(7) - 1) |
(0,255) (0 到 2^(8) - 1) |
1 |
小整数值 |
SMALLINT |
(-32 768,32 767)(-2^(15) 到 2^(15) - 1) |
(0,65 535) (0 到 2^(24) - 1) |
2 |
大整数值 |
MEDIUMINT |
(-8 388 608,8 388 607)(-2^(23) 到 2^(23) - 1) |
(0,16 777 215) (0 到 2^(16) - 1) |
3 |
大整数值 |
INT或INTEGER |
(-2 147 483 648,2 147 483 647)(-2^(31) 到 2^(31) - 1) |
(0,4 294 967 295) (0 到 2^(32) - 1) |
4 |
大整数值 |
BIGINT |
(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)(-2^(63) 到 2^(63) - 1) |
(0,18 446 744 073 709 551 615) (0 到 2^(64) - 1) |
8 |
极大整数值 |
浮点型
数据类型 |
存储范围(有符号值) |
存储范围(无符号值) |
字节 |
用途 |
FLOAT[(M,D)] |
(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) |
0,(1.175 494 351 E-38,3.402 823 466 E+38) |
4 |
单精度浮点数值 |
DOUBLE[(M,D)] |
(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) |
0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) |
8 |
双精度浮点数值 |
PS M 是数字总位数,D 是小数点后后面的位数,如果 M 和 D 被省略,根据硬件允许的限制来保存值
日期和时间类型
类型 |
字节 |
范围 |
格式 |
用途 |
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/2037 年某时 |
YYYYMMDD HHMMSS |
混合日期和时间值,时间戳 |
字符串类型
类型 |
字节 |
用途 |
CHAR(n) |
0-255 |
定长字符串 |
VARCHAR(n) |
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 |
极大文本数据 |
ENUM(‘value1’, ‘value2’) |
1 或 2 个字节,取决于枚举类型的个数(最多 65 535 个值) |
枚举 |
SET(‘value1’, ‘value2’) |
1、2、3、4 或者 8 个字节,取决于 set 成员的数目(最多 64 个成员) |
集合 |
PS CHAR 和 VARCHAR
- CHAR(n) 若存入字符数小于 n,则以空格补于其后,查询之时再将空格去掉。所以 CHAR 类型存储的字符串末尾不能有空格,VARCHAR 不限于此。
- CHAR(n) 固定长度,CHAR(4) 不管是存入几个字符,都将占用 4 个字节,VARCHAR 是存入的实际字符数 +1 个字节(n<=255)或 2 个字节 (n>255),所以 VARCHAR(4),存入3个字符将占用4个字节。
- CHAR 类型的字符串检索速度要比 VARCHAR 类型的快。
数据类型的属性
关键字 |
含义 |
NULL |
数据列可包含NULL值 |
NOT NULL |
数据列不允许包含NULL值 |
PRIMARY KEY |
主键约束,每张数据表只能存在一个主键,保证记录的唯一性,自动为 NOT NULL |
UNIQUE KEY |
唯一约束,每张数据表可以存在多个唯一约束,保证记录唯一性,可以为空值(NULL) |
AUTO_INCREMENT |
自动递增,适用于整数类型,默认情况下,起始值为1,每次增量为1,且必须与主键组合使用 |
DEFAULT |
默认值 |
UNSIGNED |
无符号 |
CHARACTER SET name |
指定一个字符集 |