一.概念
二.运用
创建约束表:(也可以直接在创建新表目录,选择创建约束,不需要写代码)
create table user(
id int primary key auto_increment comment '主键',
name varchar(10) not null unique comment '姓名',
age int check ( age > 0 && age <= 100 ) comment '年龄',
status char(1) default '1' comment '状态',
gender char(1) comment '性别'
) comment '用户表';
约束条件:
插入数据:(插入的数据一定要在约束条件内,否则报错)
insert into user(name,age,status,gender) values ('是1',99,'1','男'),('是二',22,'1','女');
三.外键约束
概念:用来让两张表的数据之间建立连接,保证数据的一致性和完整性
语法:
create table 表名(
字段名 数据类型,
....
[constraint] [外键名称] foreign key(外键字段名) references 主表(主表列名)
);
准备副表数据:
create table dept(
id int auto_increment comment 'ID' primary key ,
name varchar(50) not null comment '部门名称'
)comment '部门表';
insert into dept (id, name) values (1, '研发部'), (2, '市场部'), (3, '财务部'), (4, '销售部'), (5, '技术部');
运行结果:
主表数据:
create table emp2(
id int auto_increment comment 'ID' primary key ,
name varchar(50) not null comment '姓名',
age int comment '年龄',
job varchar(20) comment '职位',
salary int comment '薪资',
entrydate date comment '入职时间',
managerid int comment '直属领导ID',
dept_id int comment '部门ID'
)comment '员工表';
结果:
插入员工数据:
insert into emp2 (id, name, age, job,salary, entrydate, managerid, dept_id) VALUES
(1, '谢谢', 26, '董事长',30000, '2004-02-08', null,5),
(2, '孙悟空', 56, '项目经理',20000, '2007-07-08', 1,1),
(3, '猪八戒', 43, '开发',15000, '2012-05-12', 2,1),
(4, '沙和尚', 38, '开发',17000, '2014-03-08', 2,1),
(5, '唐僧', 57, '总经理',25000, '2016-02-12', 3,1),
(6, '飞天', 67, '财务',11000, '2018-02-08', 2,1);
添加外键(注意表名的不同)
--添加外键
alter table emp2 add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);
删除外键
--删除外键
alter table emp2 drop foreign key fk_emp_dept_id ;
外键的删除和更新行为:
演示cascade行为(也可以在表中点击modify table,shan删除/添加外键操作)
--外键的删除和更新
alter table emp2 add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update cascade on delete cascade ;