mysql中怎么创建和查询外键
来源:亿速云
时间:2023-06-03 17:12:21 420浏览 收藏
哈喽!今天心血来潮给大家带来了《mysql中怎么创建和查询外键》,想必大家应该对数据库都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习数据库,千万别错过这篇文章~希望能帮助到你!
一、什么是外键
外键是一个表格中的一列或多列,它用于指定这个列或多列中的值必须与另一个表格中的数据或者另一个表格中的主键相匹配。这个被匹配的表格称为被参考表。当我们需要在关系型数据库中连接两个或多个表格时,可以使用外键。
外键的目的是用来确保数据的完整性和一致性。当我们在一个表格中加入一行数据时,如果这个数据需要和另一个表格中的某些数据匹配,如果这个匹配关系是通过外键建立的,那么MySQL就会检查这个新增数据中的外键,看看在被参考表格中是否存在这个数据,如果不存在,就会拒绝在这个表格中插入这个数据。
二、如何创建外键
在MySQL中创建外键有多种方式,以下是两种比较常用的方式。
1、使用 ALTER TABLE 语句
通过 ALTER TABLE 语句添加外键的语法格式如下:
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (列名) REFERENCES 另一个表格的表名 (列名);
其中,外键名称是给外键的一个名称,这个名称应该具有唯一性,列名指的是当前表格的列名,另一个表格的表明和列名分别是被参考表的名称和被参考表的列名。
例如,我们有一个员工表(employees)和一个部门表(departments),他们之间是通过一个外键链接的,我们可以使用以下SQL语句创建这个外键。
ALTER TABLE employees ADD CONSTRAINT dept_fk FOREIGN KEY (dept_id) REFERENCES departments (dept_id);
这个语句的意思是,给员工表(employees)添加名为 dept_fk 的外键,dept_fk 指向employees表的dept_id列,它参考了departments表的dept_id列。
2、在创建表格时定义外键
在创建表格时定义外键也是一种常用的方式。语法格式如下:
CREATE TABLE 表名 ( 列名 数据类型, 外键名称 FOREIGN KEY (列名) REFERENCES 另一个表格的表名 (列名) );
例如,创建一个员工表(employees)和一个部门表(departments),并且使用dept_id列作为employees表的外键链接departments表的dept_id列,可以使用以下的SQL语句。
CREATE TABLE employees ( id INT NOT NULL, name VARCHAR(50) NOT NULL, dept_id INT, PRIMARY KEY (id), FOREIGN KEY (dept_id) REFERENCES departments (dept_id) )
三、如何查询外键
一旦在MySQL中设置了外键,就可以运用MySQL提供的查询语句来查询外键。查询外键的语法格式如下:
SELECT * FROM 表名 WHERE 列名 IS NULL;
这个语句返回的是表格中列名为空的数据,如果这个列是被定义为外键的,那么这个查询结果就是表格中与外键没有匹配行的数据。这个查询结果非常有帮助,因为它可以让我们找到那些需要手动解决、没有被正确匹配的记录。
例如,我们有一个 departments 表格,它的 dept_id 列被定义为外键,如果我们想要查询出那些在 departments 表格中没有匹配的记录,可以使用以下的SQL语句:
SELECT * FROM departments WHERE dept_id NOT IN (SELECT dept_id FROM employees);
这个语句的意思是,查询在 departments 表格中不包含在 employees 表格中的 dept_id 数据。
以上就是《mysql中怎么创建和查询外键》的详细内容,更多关于mysql的资料请关注golang学习网公众号!
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
119 收藏
-
324 收藏
-
308 收藏
-
381 收藏
-
101 收藏
-
499 收藏
-
361 收藏
-
113 收藏
-
434 收藏
-
335 收藏
-
242 收藏
-
449 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 508次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习