约束
概念:对表中的数据进行限定,保证数据的正确性、有效性和完整性
分类:
1)主键约束:primary key
2)非空约束:not null
3)唯一约束:unique
4)外键约束:foreign key
1)非空约束:not null
① 创建表时添加约束
-- 创建表时添加非空约束
CREATE TABLE stu2(
id INT,
NAME VARCHAR(20) NOT NULL -- name为非空(创建表时添加约束)
);
② 删除非空约束
-- 删除非空约束
ALTER TABLE stu2 MODIFY NAME VARCHAR(20);
③ 创建表之后,添加非空约束
-- 创建表之后,添加非空约束
ALTER TABLE stu2 MODIFY NAME VARCHAR(20) NOT NULL;
2)唯一约束:unique,值不可以重复
① 创建表时添加唯一约束
-- 创建表时添加唯一约束
CREATE TABLE stu3(
NAME INT,
phone_number VARCHAR(20) UNIQUE
);
-- 注意:在mysql中,唯一约束限定的列的值可以有多个null
② 删除唯一约束
-- 删除唯一约束
ALTER TABLE stu3 DROP INDEX phone_number;
③ 创建表后,添加唯一约束
-- 创建表后,添加唯一约束
ALTER TABLE stu3 MODIFY phone_number VARCHAR(20) UNIQUE;
3)主键约束:primary key
注意:
① 含义:非空 且 唯一
② 一张表只能有一个字段为主键
③ 主键就是表中记录的唯一标识*
① 创建表时添加主键
-- 创建表时添加主键
CREATE TABLE stu4(
id INT PRIMARY KEY,
NAME VARCHAR(20)
);
② 删除主键
-- 删除主键
ALTER TABLE stu4 DROP PRIMARY KEY;
③ 创建表之后,添加主键
-- 创建表之后,添加主键
ALTER TABLE stu4 MODIFY id INT PRIMARY KEY;
④ 自动增长
概念:如果某一列是数值型的,可以使用auto_increment来完成值的自动增长
-- 使用auto_increment完成主键的自动增长
-- 在创建表时,添加主键约束,并且完成主键的自动增长
CREATE TABLE stu5(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20)
);
-- 删除自动增长
ALTER TABLE stu5 MODIFY id INT;
-- 添加自动增长
ALTER TABLE stu5 MODIFY id INT AUTO_INCREMENT;
4)外键约束:foreign key
① 在创建表时,可以添加外键
create table 表名(
...
外键列
constraint 外键名称foreign key(外键名称) reference 主表名称(主表列名称)
);
栗子:
-- department表 (部门表) 主表
CREATE TABLE department(
id INT PRIMARY KEY AUTO_INCREMENT,
dep_name VARCHAR(20),
dep_location VARCHAR(20)
);
-- employee表 (员工表) 从表
CREATE TABLE employee(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20),
age INT,
dep_id INT, -- 外键 对应主表的主键
-- 创建外键约束 创建表时添加外键约束
CONSTRAINT emp_depid_fk FOREIGN KEY (dep_id) REFERENCES department (id)
);
② 删除外键
alter table 表名 drop foreign key 外键名称;
栗子:
-- 删除外键约束
ALTER TABLE employee DROP FOREIGN KEY emp_depid_fk;
③ 创建表之后,添加外键
alter table 表名 add constraint 外键名称 foreign key (外键字段名称) references 主表名称(主表列名称);
栗子:
-- 在employee表存在的情况下添加外键约束
ALTER TABLE employee ADD CONSTRAINT emp_depid_fk FOREIGN KEY (dep_id) REFERENCES department (id);
④ 级联操作
添加级联操作
语法:ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称 (主表列名称) ON UPDATE CASCADE ON DELETE CASCADE;
栗子:
ALTER TABLE employee ADD CONSTRAINT emp_depid_fk FOREIGN KEY (dep_id) REFERENCES department (id) ON UPDATE CASCADE ON DELETE CASCADE;
分类:
① 级联更新:ON UPDATE CASCADE
② 级联删除:ON DELETE CASCADE