数据库学习笔记-03-(MySQL )->表设计/数据类型的选择

17 阅读2分钟

1、表设计进阶(数据类型选择)

在设计表时,数据类型应该如何选择? 表设计步骤:

  • 第一步,确定大类型

    数字、字符串、日期时间等

  • 第二步,确定具体的类型

    如整数类型:tinyint\smallint\mediumint\int\bigint

数据类型:

  • 数字类型(整数/小数)
  • 字符类型
  • 日期时间类型
  • 其他类型

1-1 数字类型

整数类型: image.png

整数类型说明:

  1. 存储值的范围越大,所需要的存储空间也会越大
  2. 可以添加AUTO_INCREMENT自增约束条件
  3. UNSIGNED属性:正数的上限提升约一倍
  4. INT(11):显示宽度,即能显示的最大数字个数

小数类型 image.png

  1. M:精度(总共有多少位数);N:标度(小数位数)
  2. 如果超出精度范围,存储时会四舍五入
  3. 定点数DECIMAL以字符串形式存储

浮点数取值范围: image.png

1-2 字符类型

image.png

  • UTF-8编码,一个字符=3个字节

1-3 日期时间类型

image.png

  1. UTC时间:世界统一时间,国际标准时间

1-4 其他类型

image.png

示例:

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, '女', '篮球,乒乓球');


数据类型的选择

  1. 尽可能选择满足业务需求的最小数据类型 速度更快,更省资源(磁盘,内存,CPU) 精度不同,消耗的资源不同
  2. 尽可能选择使用简单数据类型 如:整型比字符操作代价更低
  3. 尽可能避免NULL NULL与空值的区别

image.png