1.6 字段约束
1.6.1主键约束 (primary key)
概念:
主键约束:如果为一个列添加了主键约束,那么这个键就是主键,主键的特点是唯一且不能为空。通常情况下,每张表都会有主键。
主键自增策略:
当主键为数值类型时,为了方便维护,可以设置自增策略(auto_incremrnt),设置了主键自增策略后,数据库会在表中保持一个AUTO_INCREMENT变量值,初始值为1,当需要值时,我们不需要指定值,由数据库负责AUTO_INCREMENT获取一个值,作为主键值插入到表中。而且每次用完AUTO_INCREMENT值,都会自增1.
【ps:①前面我们在概念中所说主键不能为空,而在主键自增策略中又说不需要指定值,这两句话总的来说并不矛盾。在我们为主键设置了自增策略后,如果我们输入主键为null,那么系统会自动为我们赋予一个值给主键,最终存入数据库中的主键不为空。
②主键是如何自增的?在我们从一串连续的主键值中删去某一个,如从1,2,3,4,5,6中删去3,那么下一个自动填充的值,将会是主键最大的数值+1,即变成1,2,4,5,6,7】
**格式:**主键名 数据类型 primary key auto_increment
1.6.2非空约束(not null)
概念:
如果为一个列添加了非空约束,那么这个列的值就不能为空。
格式:
列名 数据类型 not null
【ps:①为什么主键不用给它添加非空约束not null,系统任然限制它非空?
因为你如果选择某一列为主键以后,系统会默认的将它设置为非空约束,不需要手动设置。
②非空约束是否可以重复?
非空约束可以重复,但如果是主键虽然非空,那么不能重复,根据主键的定义可知,主键是作表的行的惟一标识的候选关键字,如果重复,那将失去主键的意义。】
1.6.3唯一约束(unique)
概念:
如果为一个列添加了唯一约束,那么这个列的值就必须是唯一的(即不能重复),但可以为空。
格式:
列名 数据类型 unique
【ps:设置了唯一约束的这一列,虽然可以为空,但只能存在一个null,否则就重复,报错。】
**