MySQL库表设计小技巧

2023-03-14 00:00:00 字段 时间 类型 几个 转换

前言:

在我们项目开发中,数据库及表的设计可以说是非常重要,我遇到过很多库表设计比较杂乱的项目,像表名、字段名命名混乱、字段类型设计混乱等等,此类数据库后续极难维护与拓展。我一直相信只有的库表设计才能发挥出MySQL大的性能,前面有篇文章也分享了数据库的使用规范,本篇文章主要讲几个库表设计的小技巧,希望对大家有所启发。

1.int类型的选用

整型字段类型包含 tinyintsmallintmediumintintbigint 五种,占用空间大小及存储范围如下图所示:


存储字节越小,占用空间越小。所以本着小化存储的原则,我们要尽量选择合适的整型,下面给出几个常见案例及选择建议。

  • 根据存储范围选择合适的类型,比如人的年龄用 unsigned tinyint(范围 0~255,人的寿命不会超过 255 岁);海龟就必须是smallint,但如果是太阳的年龄,就必须是int。
  • 若存储的数据为非负数值,建议使用 UNSIGNED 标识,可以扩大正数的存储范围。
  • 短数据使用 TINYINT 或 SMALLINT,比如:人类年龄,城市代码。
  • 存储状态变量的字段用 TINYINT ,比如:是否删除,0代表未删除 1代表已删除。
  • 主键列,无负数,建议使用 INT UNSIGNED 或者 BIGINT UNSIGNED;预估字段数字取值会超过 42 亿,使用 BIGINT 类型。

下面给出建表语句示范:

CREATE TABLE  `tb_int` (
  `increment_id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
  `stu_age` tinyint unsigned NOT NULL COMMENT '学生年龄',
  `is_deleted` tinyint unsigned DEFAULT '0' COMMENT '0:未删除 1:删除',
  `col1` bigint NOT NULL COMMENT 'bigint字段',
  PRIMARY KEY (`increment_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='int测试表';

相关文章