文章目录
数据类型
数值类型:
整数类型:
- tinyint 默认有符号,[unsigned]代表无符号,超出范围显示最大范围。
语法:
tinyint[(m)] [unsigned] [zerofill]
- int类型无符号的存储宽度4个字节,
- 创建表整形类型不指定宽度。指定宽度对存储宽度没用,只是更改显示宽度。显示宽度是指查询时显示的宽度,用 [zerofill] 填充。
- 其他所有类型指定宽度都表示存储宽度。
- 默认得无符号得显示宽度 是10
默认得有符号得显示宽度 是11
语法:
int[(m)][unsigned][zerofill]
浮点型:
浮点类型:float double decimal=dec
作用:存储薪资、身高、体重、体质参数等。
规则:
# FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
定义:
单精度浮点数(非准确小数值),
m是数字总个数,d是小数点后个数。m最大值为255,d最大值为30
精确度:
随着小数的增多,精度变得不准确 ****
# DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
定义:
双精度浮点数(非准确小数值),
m是数字总个数,d是小数点后个数。m最大值为255,d最大值为30
精确度:
随着小数的增多,精度比float要高,但也会变得不准确
# decimal[(m[,d])] [unsigned] [zerofill]
定义:
准确的小数值,
m是数字总个数(负号不算),d是小数点后个数。 m最大值为65,d最大值为30。
精确度:
随着小数的增多,精度始终准确
decaimal能够存储精确值的原因在于其内部按照字符串存储。
示例:
1 mysql> create table t1(x float(256,31));
2 ERROR 1425 (42000): Too big scale 31 specified for column 'x'. Maximum is 30.
5 mysql> create table t1(x float(255,30)); #建表成功
8 mysql> create table t2(x double(255,30)); #建表成功
15 mysql> create table t3(x decimal(65,30)); #建表成功
28 mysql> insert into t1 values(1.1111111111111111111111111111111); #小数点后31个1
29 Query OK, 1 row affected (0.01 sec)
30
31 mysql> insert into t2 values(1.1111111111111111111111111111111);
32 Query OK, 1 row affected (0.00 sec)
33
34 mysql> insert into t3 values(1.1111111111111111111111111111111);
35 Query OK, 1 row affected, 1 warning (0.01 sec)
36
37 mysql> select * from t1; #随着小数的增多,精度开始不准确
38 +----------------------------------+
39 | x |
40 +----------------------------------+
41 | 1.111111164093017600000000000000 |
42 +----------------------------------+
43 row in set (0.00 sec)
44
45 mysql> select * from t2; #精度比float要准确点,但随着小数的增多,同样变得不准确
46 +----------------------------------+
47 | x |
48 +----------------------------------+
49 | 1.111111111111111200000000000000 |
50 +----------------------------------+
51 row in set (0.00 sec)
52
53 mysql> select * from t3; #精度始终准确,d为30,于是只留了30位小数
54 +----------------------------------+
55 | x |
56 +----------------------------------+
57 | 1.111111111111111111111111111111 |
58 +----------------------------------+
59 row in set (0.00 sec)
精度: decimal double float