–1,非空约束
哪个字段添加了非空约束,从此,字段值不能为空,使用not null
–2,主键约束
每个表都应该设计主键 , 主键是每条记录/数据的唯一标识.
现象是: 字段的值必须唯一且不能为空,使用primary key
主键自增策略: 使用auto_increment,让主键的值交给数据库自动维护
–3,唯一约束
哪个字段添加了唯一约束,从此,字段值不能相同,,使用unique
二,数据库的扩展
–1,索引
概述
好处是: 提高查询效率 坏处是: 本身是单独的空间来存储
分类:
1,单值索引:一个索引只包含一列
2,唯一索引:一个索引只包含一列,值不能重复
3,复合索引:一个索引包含多个列
单值索引
create index 索引名 on 表名(字段名)–一个索引只包含一个列
唯一索引
create unique index 索引名 on 表名(字段名)
一个索引只包含一个列,列的值不能重复
复合索引
create index 索引名 on 表名(字段名1,字段名2,字段名3…)
一个索引包含多个字段,用时要遵循最左原则,否则复合索引失效
失效的情况:按照 2 3 23 ,没有包含最左边的
删除索引
alter table 表名 drop index 索引名
show index from 表名
使用explain关键字检查,SQL中是否使用了索引(检查SQL的执行性能)
总结
缺点:
索引本身也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也要占用空间
索引表中的内容,在业务表中都有,数据是重复的,空间是“浪费的”
虽然索引大大提高了查询的速度,但对数据的增、删、改的操作需要更新索引表信息,如果数据量非常巨大,更新效率就很慢,因为更新表时,MySQL不仅要保存数据,也要保存一下索引文件
随着业务的不断变化,之前建立的索引可能不能满足查询需求,需要消耗我们的时间去更新索引