一、MySQL 约束的概念及使用方法
1、约束的概念
对表中的数据进行限定,保证数据的正确性、有效性和完整性。
2、约束的分类
(1)主键约束:primary key
(2)非空约束:not null
(3)唯一约束:unique
(4)外键约束:foreign key
2.1 非空约束:值不能为空
(1)创建表时添加约束
CREATE TABLE STU(
id INT,
name VARCHAR(20) NOT NULL;#name为非空
);
(2)创建表后,添加非空约束
ALTER TABLE stu MODIFY name VARCHAR(20) NOT NULL;
(3)删除name的非空约束
ALTER TABLE stu MODIFY name VARCHAR(20);
2.2 唯一约束:值不能重复
(1)创建表时添加约束
CREATE TABLE STU(
id INT,
tel VARCHAR(20) UNIQUE;#tel不能重复
);
(2)创建表后,添加唯一约束
ALTER TABLE stu MODIFY tel VARCHAR(20) UNIQUEL;
(3)删除tel的唯一约束
ALTER TABLE stu DROP INDEX tel;
2.3 主键约束:非空且唯一,一个表中只能有一个主键,唯一标识
(1)创建表时添加主键约束
CREATE TABLE STU(
id INT primary key,#添加主键
name VARCHAR(20)
);
(2)创建表后,添加主键约束
ALTER TABLE stu MODIFY id int primary key;
(3)删除主键约束
ALTER TABLE stu DROP PRIMARY KEY;
2.4. 主键约束中的自动增长
(1)创建表时添加主键约束及自增长
CREATE TABLE STU(
id INT primary key auto_increment,#添加主键及自增长
name VARCHAR(20)
);
(2)创建表后,添加主键约束及自增长
ALTER TABLE stu MODIFY id INT primary key auto_increment;
(3)删除自增长,无法删除主键
ALTER TABLE stu MODIFY id INT;
2.5 外键约束
(1)创建表时添加外键约束
CREATE TABLE 表名(
......
外键列
constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
);
(2)创建表后,添加主键约束及自增长
ALTER TABLE 表名 ADD constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称);
(3)删除外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
2.5.1 外键约束设置级联更新和级联删除
ALTER TABLE 表名 ADD constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称) on