1、表设计进阶(数据类型选择)
在设计表时,数据类型应该如何选择? 表设计步骤:
-
第一步,确定大类型
数字、字符串、日期时间等
-
第二步,确定具体的类型
如整数类型:tinyint\smallint\mediumint\int\bigint
数据类型:
- 数字类型(整数/小数)
- 字符类型
- 日期时间类型
- 其他类型
1-1 数字类型
整数类型:
整数类型说明:
- 存储值的范围越大,所需要的存储空间也会越大
- 可以添加AUTO_INCREMENT自增约束条件
- UNSIGNED属性:正数的上限提升约一倍
- INT(11):显示宽度,即能显示的最大数字个数
小数类型
- M:精度(总共有多少位数);N:标度(小数位数)
- 如果超出精度范围,存储时会四舍五入
- 定点数DECIMAL以字符串形式存储
浮点数取值范围:
1-2 字符类型
- UTF-8编码,一个字符=3个字节
1-3 日期时间类型
- UTC时间:世界统一时间,国际标准时间
1-4 其他类型
示例:
CREATE TABLE temp_int(
id int NOT NULL AUTO_INCREMENT,
a int,
b TINYINT,
c INTEGER,
d int UNSIGNED,
e SMALLINT,
PRIMARY KEY(`id`)
);
CREATE TABLE temp_float(
x FLOAT(5, 1),
y DOUBLE(5, 1),
z DECIMAL(5, 1)
);
CREATE TABLE temp_other(
is_valid TINYINT DEFAULT 1,
sex ENUM('男', '女'),
hobby SET('篮球', '乒乓球', '羽毛球', '棒球')
);
INSERT INTO temp_other VALUES(1, '男', '篮球');
INSERT INTO temp_other VALUES(1, '未知', '篮球');
INSERT INTO temp_other VALUES(1, '女', '篮球,乒乓球');
数据类型的选择
- 尽可能选择满足业务需求的最小数据类型 速度更快,更省资源(磁盘,内存,CPU) 精度不同,消耗的资源不同
- 尽可能选择使用简单数据类型 如:整型比字符操作代价更低
- 尽可能避免NULL NULL与空值的区别