一、常见约束
1、default:声明默认值,若未有值输入则会按照默认值存储---create table t1(name varchar(8) default ‘other‘)
2、unique:声明为唯一
①单列唯一:若输入的值在该列中已存在,则会报错---create table t2(name varchar(8) unique)
②联合唯一:其中部分列可以重复,但是不可全体重复,否则报错---create table t3(id int, uid int, unique(id, uid))
3、primary key:主键----create table t4(name varchar(8) primary key)
①约束效果:not null + unique
②其他职能:主键除了有约束效果以外,还是innodb存储引擎组织数据的依据,相当于innodb创建表时的目录,能够帮助提升查询效率。
③一张表有且只能有一个主键,如果没有手动设置主键,innodb会从左往右依次检索,直到遇到一个非空且唯一的字段则将其自动升级为主键。---create table t5(name varchar(8) not null unique)
④如果表中没有设置主键,也没有其他非空且唯一的字段,innodb会采用自己内部的一个隐藏字段作为主键,该隐藏字段无法使用,所以也没法依靠其提升查询速度,隐藏字段只是因为用innodb存储引擎创建表的时候必须要有主键而临时配置的。
⑤一张表中通常应该主动设置一个主键,比如id,num,count等用于标识序号或者编号等。
⑥联合主键:即多个非空字段的联合唯一----create table t6(id int, uid int, primary key(id, uid))
4、auto_increment:自增,只能用于主键,升序增长----create table t7(id int primary key auto_increment)
①delete from t7:删除表中部分或者全部记录后,新增数据的自增值会按照老的向后接,不会复用已经删除了的。
②truncate t7:重置t7的记录,自增值重新开始计算。