多表联查场景
一对一
用户与用户信息表:当用户的信息数据过多时,我们可以将其分成两个表分别对应用户基本信息和用户的详情信息。
当用户信息过多时,就可以使用外键进行关联。在任意一方加入外键,关联另一方主键,并且设置外键为唯一的UNIQUE如下实现:
多对一
部门与员工:一个员工对应一个部门,一个部门对应多个员工
员工指向多的一方,部门指向一的一方。此时应该在员工表中创建外键,指向部门表中的主键
查询方法:
多对多
学生与课程:一个学生可以选修多门课程,一门课程可以被多个学生选择
此时我们应该在学生表与课程表之间建立中间表。中间表包含两个外键,分别对应学生表和课程表的主键
首先我们准备好数据,学生表+课程表+中间信息表
我们切换IDEA打开可以清晰的看到三个表之间的关系,中间信息表中的两个外键:student_id与course_id将学生表和课程表关联了起来
内连接查询
查询A集合与B集合的交集
示例:查询所有员工与其所属部门
外连接
右外连接:查询右表所有数据以及两表交集部分数据
左外连接:查询左表所有数据以及两表交集部分数据
示例:
自连接
当前表与自身的连接查询,自连接必须使用别名
格式:
在员工表中,所有的普通员工、管理者都是员工。查询每个员工归属哪个管理者管理就需要用到自连接
联合查询
关键字 union [all] 将两条sql语句查询的结果拼接起来
加上all表示不会去重,不加all表示去重复(即同时满足两条sql语句的只出现一次即可)
多张表的列数必须保持一致,字段类型也需要一致
子查询
子查询是指在SQL语句中嵌套select语句进行嵌套查询
子查询的外部语句可以是insert、uodate、delete、select的任何一个
标量子查询示例:查询‘ 开发部 ’的全部员工信息
首先你可以利用正常的两条sql去查询:
或者你可以使用内连接方式进行联查:
或者使用子查询:
到此这篇关于MySQL多表联查的实现思路的文章就介绍到这了,更多相关MySQL多表联查内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/yuqu1028/article/details/128879346