mysql 创建外键约束

article/2025/9/29 11:11:17

前言

如果一张表中有一个非主键的字段指向了另一张表中的主键,就将该字段叫做 外键
一张表中外键可以有多个,也就是不同字段指向了不同表中的主键。

方式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图表:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/7hn4kcKu.shtml

相关文章

外键及外键约束理解

转自&#xff1a;https://www.cnblogs.com/chenxiaohei/p/6909318.html 数据库&#xff08;外键及其约束理解&#xff09; 一&#xff1a;首先是外键的定义 如果一个字段X在一张表&#xff08;表一&#xff09;中是主关键字&#xff0c;而在另外一张表&#xff08;表二&#…

MySQL的约束——外键约束

约束&#xff1a; MySQL的约束的概述&#xff1a; 概念&#xff1a; 约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据 目的&#xff1a; 保证数据库中数据的正确&#xff0c;有效和完整性 分类 1.非空约束 NOT NULL 限制该字段的数据不能为null2.唯一…

4、外键约束(FOREIGN KEY)

MySQL 外键约束&#xff08;FOREIGN KEY&#xff09;是表的一个特殊字段&#xff0c;经常与主键约束一起使用。对于两个具有关联关系的表而言&#xff0c;相关联字段中主键所在的表就是主表&#xff08;父表&#xff09;&#xff0c;外键所在的表就是从表&#xff08;子表&…

【表的完整性约束外键约束】

外键约束 今天跟大家聊聊这个外键约束&#xff0c;简单来说呢&#xff0c;就是&#xff0c;嗯&#xff0c;&#xff0c;关于两个表的操作。对&#xff0c;就是这样的&#xff0c;来跟我一起看看叭。 【1】什么是外键约束&#xff1f; 外键约束&#xff08;FOREIGN KEY&#xf…

MySQL外键约束详解

今天继续给大家介绍MySQL相关知识&#xff0c;本文主要内容是MySQL外键约束详解。 一、MySQL外键约束作用 外键约束&#xff08;Foreign Key&#xff09;即数据库中两个数据表之间的某个列建立的一种联系。这种联系通常是以实际场景中含义完全相同的字段所造成的。MySQL通过外…

【MySQL】外键约束

文章目录 &#xff08;一&#xff09;外键约束&#xff08;二&#xff09;外键约束的功能&#xff08;三&#xff09;学生表和班级表&#xff08;1&#xff09;练习&#xff08;2&#xff09;两个问题&#xff08;3&#xff09;解决方案&#xff08;4&#xff09;结果展示 &…

JavaWeb JSP内置对象之session对象

4、session对象 在WEB应用中&#xff0c;当一个客户首次访问服务器上的某个jsp页面时&#xff0c;jsp引擎&#xff08;比如TOMCAT&#xff09;将为这个客户创建一个session对象&#xff0c;当客户关闭浏览器离开之后&#xff0c;session对象被注销。 设置session的目的是为了服…

jsp内置对象之session对象

在WEB应用中&#xff0c;当一个客户首次访问服务器上的某个jsp页面时&#xff0c;jsp引擎&#xff08;比如TOMCAT&#xff09;将为这个客户创建一个session对象&#xff0c;当客户关闭浏览器离开之后&#xff0c;session对象被注销。 设置session的目的是为了服务器端识别客户。…

JAVA Web入门之JSP内置对象的解析及使用(超详细必看)

创作不易 觉得有帮助请点赞关注收藏~~ 概述&#xff1a;由于JSP使用java作为脚本语言 所以JSP具有强大的对象处理能力 并且可以动态创建web页面内容 但java语言在使用一个对象前 需要先实例化这个对象 为了简化开发 JSP提供了一些内置对象 用来实现JSP应用 在使用JSP内置对象…

JSP内置对象和四大作用域

一、JSP九大内置对象 名称 类型 含义 获取方式 request HttpSevletRequest 封装所有请求信息 方法参数 response HttpServletResponse 封装所有响应信息 方法参数 session HttpSession 封装所有会话信息 req.getSession() application ServletContext 所有信…

jsp内置对象的作用范围

内置对象的作用范围是指每个内置对象的某个实例在多长时间和多大的范围中有效&#xff0c;即在什么样的范围内可以有效地访问同一个对象实例。 在javax.servlet.jsp.PageContext的类中定义了4个常量来指定内置对象的作用范围&#xff1a;APPLICATION_SCOPE、SESSION_SCOPE、PAG…

JSP内置对象——application对象

在介绍appl ication 对象之前&#xff0c;先简单介绍一些Web 服务器的实现原理。 对于大部分浏览器而言&#xff0c;它通常负责完成三件事情&#xff1a; &#xff08;1&#xff09;向远程服务器发送请求。 &#xff08;2&#xff09;读取远程服务器返回的字符串数据。 &#x…

JSP入门之JSP内置对象

系列文章目录 目录 前言 一、request对象 1.获取用户提交的信息 2.JSP页面文件的编码方式 3.常用方法举例 4.处理HTML标记 5.处理超链接 二、response对象 1.动态响应contentType属性 2.response对象的HTTP文件头 3.response对象的重定向 三、session对象 1.se…

JSP内置对象request

1.request对象 request对象是最常用的JSP内置对象之一,其中包含了有关浏览器请求的信息 可以在JSP页面中通过调用request对象的方法来获取请求中的相关数据以及浏览器的有关信息。 request对象用于处理请求的方法有很多 request的getPaeameter&#xff08;&#xff09;方法是…

【Jsp】第七课 Jsp内置对象的学习和使用

概念 什么是JSP内置对象&#xff1f; } JSP 内置对象是 Web 容器创建的一组对象 } JSP 内置对象是可以直接在 JSP 页面使用的对象 &#xff0c;无需使用“ new” 获取实例 } JSP 内置对象的名称是 JSP 的保留字 } 内置对象说白了就是别人创建好了的对象&#xff0c;我们…

JSP内置对象详解 常用方法

目录 out request response session application exception page config pageContext JSP内置对象的作用域 JSP内置对象是在JSP运行环境中已定义好的对象&#xff0c;可在JSP页面的脚本部分直接使用。 out对象 out 为输出流对象&#xff0c;主要用于向客户端输出流…

JSP内置对象

JSP内置对象的分类内置对象属性保存范围JSP内置对象的常用方法&#xff08;只列了一些&#xff09;小例子 一&#xff1a;JSP内置对象的分类 这些对象不用经过显示声明直接引用&#xff0c;也不用代码创建其实例&#xff0c;可在程序中直接使用&#xff0c;由Web Container为对…

jsp内置对象之request

一、内置对象概述 有些对象不用声明即可在jsp页面的java程序片和表达式中使用&#xff0c;这就是jsp 的内置对象。Jsp的常用的内置对象有request&#xff0c;response&#xff0c;session&#xff0c;aplication和out。Response和request对象是jsp内置对象中比较重要的两个&am…

JSP的内置对象详解

JSP内置对象 文章目录 JSP内置对象前言一、out对象1.原理2. 向客户端输出数据 二、page对象1.范围 三、pageContext 对象1.获取内置对象2.存储数据 四、request对象1.创建及获取请求2.范围 五、response 对象1.重定向网页2.处理HTTP文件头 六、session对象1.创建及获取客户的会…

JSP常用内置对象概述

1、概述 JSP提供了9个预设的对象&#xff0c;我们将其称为内置对象。这些对象内置在JSP网页环境之下&#xff0c;因此用户不需要引用这些对象所属的包&#xff0c;便可以直接在JSP网页中使用这些对象。 如图&#xff1a; (1 ) request与response对象。JSP网页能够具备与用户…