失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > mysql 创建外键约束

mysql 创建外键约束

时间:2020-02-03 20:54:49

相关推荐

mysql 创建外键约束

前言

如果一张表中有一个非主键的字段指向了另一张表中的主键,就将该字段叫做外键

一张表中外键可以有多个,也就是不同字段指向了不同表中的主键。

方式1-在创建表时设置外键约束

[constraint <外键名>] foreign key 字段名 [,字段名2,…] references <主表名> 主键列1 [,主键列2,…]

create database mydb3; //创建数据库use mydb3;//使用数据库-- 创建部门表create table if not exists dept(deptno varchar(20) primary key , -- 部门号name varchar(20) -- 部门名字);create table if not exists emp(eid varchar(20) primary key , -- 员工编号ename varchar(20), -- 员工名字age int, -- 员工年龄dept_id varchar(20), -- 员工所属部门constraint emp_fk foreign key (dept_id) references dept (deptno) -- 外键约束);

方式2-在创建表后设置外键约束

格式:alter table <数据表名> add constraint <外键名> foreign key(<列名>) references <主表名> (<列名>);

alter table emp add constraint dept_id_fk foreign key(dept_id) references dept (deptno);

操作:

在外键约束下的数据操作

-- 1、添加主表数据-- 注意必须先给主表添加数据insert into dept values('1001','研发部');insert into dept values('1002','销售部');insert into dept values('1003','财务部');insert into dept values('1004','人事部');-- 2、添加从表数据-- 注意给从表添加数据时,外键列的值不能随便写,必须依赖主表的主键列insert into emp values('1','乔峰',20, '1001');insert into emp values('2','段誉',21, '1001');insert into emp values('3','虚竹',23, '1001');insert into emp values('4','阿紫',18, '1002');insert into emp values('5','扫地僧',35, '1002');insert into emp values('6','李秋水',33, '1003');insert into emp values('7','鸠摩智',50, '1003'); insert into emp values('8','天山童姥',60, '1005'); -- 不可以

删除数据

/*注意:1:主表的数据被从表依赖时,不能删除,否则可以删除2: 从表的数据可以随便删除*/delete from dept where deptno = '1001'; -- 不可以删除delete from dept where deptno = '1004'; -- 可以删除,因为没有外键引用'1004'这个部门delete from emp where eid = '7'; -- 可以删除

删除外键约束

格式:alter table <表名> drop foreign key <外键约束名>;

alter table emp drop foreign key dept_id_fk;

外键约束-多对多关系

-- 学生表和课程表(多对多)-- 1 创建学生表student(左侧主表)create table if not exists student(sid int primary key auto_increment,name varchar(20),age int,gender varchar(20));-- 2 创建课程表course(右侧主表)create table course(cid int primary key auto_increment,cidname varchar(20));-- 3 创建中间表student_course/score(从表)create table score(sid int,cid int,score double);-- 4 建立外键约束(2次)alter table score add foreign key(sid) references student(sid);alter table score add foreign key(cid) references course(cid);-- 5 给学生表添加数据insert into student values(null,'小龙女',18,'女'),(null,'阿紫',19,'女'),(null,'周芷若',20,'男');-- 6 给课程表添加数据insert into course values(null,'语文'),(null,'数学'),(null,'英语');-- 7 给中间表添加数据insert into score values(1,1,75),(1,2,83),(2,1,67),(2,3,80),(3,2,90),(3,3,88);

ER图表:

如果觉得《mysql 创建外键约束》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。