一、概念
对表中的数据进行限定,保证数据的正确性、有效性和完整性
二、分类
- 主键约束:primary key
- 非空约束:not null,值不能为 null
- 唯一约束:unique,值不能重复
- 外键约束:foreign key,让表与表产生联系,从而保证数据正确性
三、主键约束
1、添加约束(创建表时)
create table stu(
id int primary key, -- 给id添加主键约束
name varchar(20)
);
2、添加约束(创建完表后)
ALTER TABLE stu MODIFY id INT PRIMARY KEY;
3、删除约束
错误:
ALTER TABLE stu modify id int ;
正确:
ALTER TABLE stu DROP PRIMARY KEY;
4、自动增长
(1)概念
如果某一列是数值类型的,使用 auto_increment 可以来完成值的自动增长
(2)实现
- 添加主键约束,并让主键自动增长
create table stu(
id int primary key auto_increment,-- 给id添加主键约束
name varchar(20)
);
- 添加自动增长
ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;
- 删除自动增长
ALTER TABLE stu MODIFY id INT;
5、注意
- 主键约束非空且唯一
- 一张表只能有一个字段为主键
- 主键就是表中记录的唯一标识
四、非空约束
1、添加约束(创建表时)
CREATE TABLE stu(
id INT,
NAME VARCHAR(20) NOT NULL -- name为非空
);
2、添加约束(创建完表后)
ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;
3、删除约束
ALTER TABLE stu MODIFY NAME VARCHAR(20);
五、唯一约束
1、添加约束(创建表时)
CREATE TABLE stu(
id INT,
phone_number VARCHAR(20) UNIQUE -- 添加了唯一约束
);
2、添加约束(创建完表后)
ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;
3、删除约束
ALTER TABLE stu DROP INDEX phone_number;
六、外键约束
1、添加约束(创建表时)
create table 表名(
....
外键列
constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
);
2、添加约束(创建完表后)
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);
3、删除约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
4、级联操作
(1)添加级联操作
ALTER TABLE 表名 ADD CONSTRAINT 外键名称
FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE ;
(2)级联更新
ON UPDATE CASCADE
(3)级联删除
ON DELETE CASCADE