MySQL约束
一,约束种类
(1)主键约束(Primary Key) PK
主键约束是表中最常用的约束,它可以确保每条数据的唯一性,比如学号,身份证号之类的唯一性凭证,所以主键不允许为空且唯一。
(2)外键约束(Foreign Key) FK
外键约束经常和主键约束一起使用,用来确保数据的一致性。外键可以认为是表与表之间的桥梁,在主表中外键的取值只能在副表中取,比如部门ID号作为外键,那么只能在部门ID有定义的副表中取值。
(3)唯一性约束(Unique)
唯一约束与主键约束有一个相似的地方,就是它们都能够确保列的唯一性。与主键约束不同的是,唯一约束在一个表中可以有多个,并且设置唯一约束的列是允许有空值的。
(4)非空约束(Not Null)
非空约束用来约束表中的字段不能为空。
二,操作约束
(1)主键约束的操作
主键分为单一主键和联合主键,单一主键以一列作为主键,联合主键以多列作为主键,在联合主键中,只有全部值都相等时才会触发约束。
<1>添加主键
ALTER TABLE 表名 ADD PRIMARY KEY(列名)
主键的自增长:
alter table 表名 modify 主键 类型 auto_increment;
自增长需要主键类型为整型类型,当删除主键时,需要先清除自增长。
<2>删除主键
ALTER TABLE 表名 DROP PRIMARY KEY;
(2)外键约束的操作
<1>添加外键
ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY( 列 名 ) REFERENCES 参照的表名
(参照的列名);
外键可以看成用参照表中列的值来限制主表中的值,比如参照表中部门ID列只有1,2,3这三种情况,那么主表中部门ID的分配就只能在这三个值中选,不能跳出范围,因为员工不能分配到不存在的部门中。
<2>删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 约束名;
(3)唯一性约束操作
<1>添加唯一性约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名);
唯一性有约束只要不相等就可以,可以为空。
<2>删除唯一性约束
ALTER TABLE 表名 DROP KEY 约束名;
(4)非空约束操作
<1>添加非空约束
ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL;
<2> 删除非空约束
ALTER TABLE 表名 MODIFY 列名 类型 NULL;
三,创建表时添加约束
create table depts(department_id int primary
key auto_increment,department_name
varchar(30) unique,location_id int not null);