介绍
字符串类型
| 类型 | 大小 | 说明 |
|---|---|---|
| CHAR(n) | 0-255 bytes | 定长字符串,不足个数后面补空格 |
| VARCHAR(n) | 0-65535 bytes | 变长字符串 |
| 类型 | 大小 | 说明 |
|---|---|---|
| TINYTEXT | 0-255 bytes | 短文本字符串 |
| TEXT | 0-65 535 bytes | 长文本数据 |
| MEDIUMTEXT | 0-16 777 215 bytes | 中等长度文本数据 |
| LONGTEXT | 0-4 294 967 295 bytes | 极大文本数据 |
使用
char(n) 和 varchar(n) 中的 n 代表字符的个数
如:CHAR(30) 可以存储 30 个字符
整型
| 类型 | 大小 | 范围(有符号) | 范围(无符号) | 说明 |
|---|---|---|---|---|
| TINYINT | 1 byte | (-128,127) | (0,255) | 小整数值 |
| SMALLINT | 2 bytes | (-32 768,32 767) | (0,65 535) | 大整数值 |
| MEDIUMINT | 3 bytes | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 |
| INT | 4 bytes | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 |
| BIGINT | 8 bytes | (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) | 极大整数值 |
TINYINT 注意事项
问题:
TINYINT 长度是 1 时,且值为 0、1,JDBC查询出来的值是 Boolean 类型,而不是 Integer 类型
解决:
长度大于 1 即可
浮点型
| 类型 | 大小 | 范围(有符号) | 范围(无符号) | 说明 |
|---|---|---|---|---|
| FLOAT | 4 byte | (-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) | 单精度浮点数值 |
| DOUBLE | 8 byte | (-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) | 双精度浮点数值 |
使用
定义方式为:
FLOAT(M,D)
DOUBLE(M,D)
解释:
M:
整数的个数 +小数的个数D:
小数的个数
例子
FLOAT(7,4) 可以显示为999.9999。MySQL保存值时进行四舍五入,因此如果在FLOAT(7,4)列内插入999.00009,近似结果是999.0001。
缺点
由于计算机只能存储二进制,所以浮点型数据在存储的时候,必须转化成二进制,在换算时,会导致数字不准确
CREATE TABLE `f` (
`f1` float(10,2) DEFAULT NULL
)
insert into a value (131072.32);
select * from f;
结果是: 131072.31
定点小数类型
DECIMAL 和 NUMERIC 类型在MySQL中视为相同的类型。它们用于保存必须为确切精度的值。
定点数以 字符串 形式存储,对精度要求高时使用 decimal 较好,比如 金额
使用
DECIMAL(M,D)
解释:
M:
整数的个数 +小数的个数,默认值为10,取值范围为1~65,取0时会被设为默认值,超出范围会报错D:
小数的个数,默认值为0,取值范围为0~30,而且必须<=M,超出范围会报错。
某字段定义为decimal类型不带任何参数,等同于 decimal(10,0) 。带一个参数时,D取默认值。
例子
DECIMAL(3,2)
上例中的取值范围为 -999.99~999.99
如果存储时,整数部分超出了范围(如上面的例子中,添加数值为1000.01),MySql就会报错,不允许存这样的值。
如果存储时,小数点部分若超出范围,就分以下情况:
若四舍五入后,整数部分没有超出范围,则只警告,但能成功操作并四舍五入删除多余的小数位后保存。如999.994实际被保存为999.99。
若四舍五入后,整数部分超出范围,则MySql报错,并拒绝处理。如999.995和-999.995都会报错。
日期和时间类型
应用场景
- DATE:如 生日
- TIME:定时时间
- DATETIME:创建时间、上一次修改时间
Timestamp
由于范围小,不推荐使用
二进制类型
BLOB 是二进制大对象,可以容纳可变数量的数据
| 类型 | 大小 | 说明 |
|---|---|---|
| TINYBLOB | 0-255 bytes | 二进制 |
| BLOB | 0-65 535 bytes | 二进制 |
| MEDIUMBLOB | 0-16 777 215 bytes | 二进制 |
| LONGBLOB | 0-4 294 967 295 bytes | 二进制 |
BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串
感谢:
https://blog.csdn.net/anxpp/article/details/51284106
https://blog.csdn.net/donghaixiaolongwang/article/details/74905954

