数据库中的约束:限制列的内容
意义:保证数据的有效性和完整性.可以确保数据满足业务规则
1.主键约束
主键约束:primary key
作用:设置某一个字段为主键,主键的特性是唯一(不能重复),且不能为空
一般使用一个没有任何意义的字段作为主键,比如id作为主键(没有意义的字段就不用修改了)
如果主键是int类型,还可以设置主键自增长(即在插入数据时,可以不插入主键值,让其自动以递增形式添加),(部分数值型可以设置自增长,例如varchar是无法设置自增长,会报错1063错误)
注意:一张表中只能有一个主键
1.1 主键示例
create table primarykey_demo
(
id int primary key auto_increment,
name varchar(20)
)
insert into primarykey_demo (name) values ('jack');
虽然我们没有设置id的值,但是结果中id被赋值了,这就是设置了主键自增的效果
同时我们也能主动给主键赋值
insert into primarykey_demo (id,name) values (3,'tom');
给主键赋值后,当我们再执行主键自增时,会根据已存在的最大的主键值+1
insert into primarykey_demo (name) values ('b');
1.2 主键约束的第二种方式
此种方式主要用于设置组成主键
create table primarykey_demo2
(
id int not null auto_increment,
name varchar(20),
PRIMARY key (id)
);
1.3 复合主键(了解)
所谓的复合主键 就是指你表的主键含有一个以上的字段组成,不使用无业务含义的自增id作为主键。
create table primarykey_demo
(
id int,
name varchar(20),
value varchar(20),
PRIMARY key (id,name)
);
当设置id和name为复合主键后,可以理解为id和name组成了一个字段,且这个字段因为是主键,所以只能出现1次
insert into primarykey_demo (id,name) values (1,'tom');
insert into primarykey_demo (id,name) values (1,'jack'); ok
insert into primarykey_demo (id,name) values (2,'tom'); ok
insert into primarykey_demo (id,name) values (1,'tom'); error
上面的name和id字段组合起来就是你demo表的复合主键 ,它的出现是因为你的name字段可能会出现重名,所以要加上ID字段这样就可以保证你记录的唯一性 ,一般情况下,主键的字段长度和字段数目要越少越好 。