1.数据库字段设置
id 主要设置有bigint 和int两种 长度一般都是20
字符 主要设置 varchar 长度 我一般设置 255
时间 主要是设置为timestamp 混合日期和时间值,时间戳 ,建议在java端的DTO或者request设置时间格式
判断状态 比如mybatis-plus的逻辑删除 建议设置为tinyint 长度为1 就行
大文本 text一般都够用了
2.利用Navicat建库
字符集建议设置成utf8m64,
排序规则:
utf8_general_ci:不缺分大小写,核对速度快,准确度稍差
utf8_general_cs:区分大小写
utf8_bin:字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容
utf8_unicode_ci:准确度高,但校对速度稍慢
3.利用Navicat建表
主键id一定要把自增加上,不然在插入时候会报错 一张表必须有主键,
建议把字段的注释写上,
表注释
4.用Navicat设置约束(索引)
假设我们表中的邮箱email不能重复的
UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空。例如注册用户的手机号,身份证号等。(唯一经常用)
FULLTEXT:全文索引 表示全文收索,在检索长文本的时候,效果最好,短文本建议使用Index,但是在检索的时候数据量比较大的时候,现将数据放入一个没有全局索引的表中,然后在用Create Index创建的FULLTEXT索引,要比先为一张表建立FULLTEXT然后在写入数据要快的很多
NORMAL :普通索引 表示普通索引,大多数情况下都可以使用
SPATIAL :空间索引 空间索引是对空间数据类型的字段建立的索引,MYSQL中的空间数据类型有4种,分别是GEOMETRY、POINT、LINESTRING、POLYGON。MYSQL使用SPATIAL关键字进行扩展,使得能够用于创建正规索引类型的语法创建空间索引。创建空间索引的列,必须将其声明为NOT NULL,空间索引只能在存储引擎为MYISAM的表中创建
索引方法:有BTREE和HASH选择,我一般用BTREE,
最后一句别忘了写注释
5.设置字段默认值
6.设置自动增长初始值
alter table 表名AUTO_INCREMENT 2000;
7.设置外键(可以用于权限设置比较)
1.cascade方式
在父表上update/delete记录时,同步update/delete掉子表的匹配记录
2.set null方式
在父表上update/delete记录时,将子表上匹配记录的列设为null
要注意子表的外键列不能为not nul川
3.No action方式
如果子表中有西配的记录,则不允许对父表对迹侯选键进行update/delete操作
4.Restrict方式
同no action,都是立即检查外键约束
5.Set default方式
父表有变更时,子表将外键列设置成一个默认的值但nnodb不能识别