结合 DataGrip 新版建表 UI 复习 MySQL 建表知识

DataGrip 2022 更新了建表 UI,比之前功能更多,也更好用了。在此结合它来复习一下建表相关的知识。

  • Engine: 优先选择 InnoDB,它是事务型的,支持行级锁。
  • Collection: 创建数据库时使用 utf8mb4_general_ci ;创建表时不填写即可,会根据数据库的设置来优先选择。

Date Type:

  • 字符串: char 是定长的,如手机号码;varchar 可变长字符串,如用户名;
  • 大文本: text 大文本,文章详情、json串等使用,非必要时不使用;索引需要使用范围索引;
  • 日期、时间: datetime
  • 整数: tinyint, 0 ~ 255 之间,用于存年龄、状态值等; int,有 42 亿的范围,适合大部分场景;bigint,几百亿;INT(11) 中的数字只是规定了显示字符的个数,不影响存储和计算。
  • 浮点数:double

Not Null

  • 大部分情况下不推荐使用可空列,勾上该 Not Null 选项
  • 字符串默认值 '', 数值默认值 0
  • 软删除如果需要使用 delete_time 字段,则使用可空列

Auto Increment

  • int 类型主键自增时使用

Default Expression

  • 默认值,如日期类型指定 CURRENT_TIMESTAMP

On Update

  • 更新时设置,如 update_time 字段指定 CURRENT_TIMESTAMP

  • 需建立主键、唯一键等,可在“列”中通过右键创建
  • 可选中多个字段后按右键创建键,如创建多个字段结合的唯一键

索引

  • 不使用外键索引,通过 ORM 代码层面建立关联关系
  • 索引选择性高时,才需要加索引
  • text 类型需使用范围索引
  • 联合索引按最左前缀顺序进行匹配才会命中
  • 如果已存在联合索引,对于前缀部分不需要再创建索引
本文收录于专栏
一些 MySQL 使用过程中的记录