MySQL 外连接查询
MySQL 中内连接是在交叉连接的结果集上返回满足条件的记录;而外连接先将连接的表分为基表和参考表,再以基表为依据返回满足和不满足条件的记录。
外连接更加注重两张表之间的关系。按照连接表的顺序,可以分为左外连接和右外连接。
左外连接又称为左连接,在 FROM 子句中使用关键字 LEFT OUTER JOIN 或者 LEFT JOIN,用于接收该关键字左表(基表)的所有行,并用这些行与该关键字右表(参考表)中的行进行匹配,即匹配左表中的每一行及右表中符合条件的行。
在左外连接的结果集中,除了匹配的行之外,还包括左表中有但在右表中不匹配的行,对于这样的行,从右表中选择的列的值被设置为 NULL,即左外连接的结果集中的 NULL 值表示右表中没有找到与左表相符的记录。
在 tb_students_info 表和 tb_departments 表中查询所有学生,包括没有学院的学生,输入的 SQL 语句和执行结果如下所示。
mysql> SELECT name,dept_name-> FROM tb_students_info s-> LEFT OUTER JOIN tb_departments d-> ON s.dept_id = d.dept_id;
+--------+-----------+
| name | dept_name |
+--------+-----------+
| Dany | Computer |
| Jane | Computer |
| Jim | Computer |
| Henry | Math |
| John | Math |
| Green | Chinese |
| Thomas | Chinese |
| Susan | Economy |
| Tom | Economy |
| Lily | NULL |
+--------+-----------+
10 rows in set (0.03 sec)
结果显示了 10 条记录,name 为 Lily 的学生目前没有学院,因为对应的 tb_departments 表中并没有该学生的学院信息,所以该条记录只取出了 tb_students_info 表中相应的值,而从 tb_departments 表中取出的值为 NULL。
右外连接又称为右连接,在 FROM 子句中使用 RIGHT OUTER JOIN 或者 RIGHT JOIN。与左外连接相反,右外连接以右表为基表,连接方法和左外连接相同。在右外连接的结果集中,除了匹配的行外,还包括右表中有但在左表中不匹配的行,对于这样的行,从左表中选择的值被设置为 NULL。
在 tb_students_info 表和 tb_departments 表中查询所有学院,包括没有学生的学院,输入的 SQL 语句和执行结果如下所示。
mysql> SELECT name,dept_name-> FROM tb_students_info s-> RIGHT OUTER JOIN tb_departments d-> ON s.dept_id = d.dept_id;
+--------+-----------+
| name | dept_name |
+--------+-----------+
| Dany | Computer |
| Green | Chinese |
| Henry | Math |
| Jane | Computer |
| Jim | Computer |
| John | Math |
| Susan | Economy |
| Thomas | Chinese |
| Tom | Economy |
| NULL | History |
+--------+-----------+
10 rows in set (0.00 sec)
可以看到,结果只显示了 10 条记录,名称为 History 的学院目前没有学生,对应的 tb_students_info 表中并没有该学院的信息,所以该条记录只取出了 tb_departments 表中相应的值,而从 tb_students_info 表中取出的值为 NULL。
MySQL 外连接查询相关推荐
- MySQL—外连接查询
举例:2个表:员工表和部门表 1.inner join - on 语句,查询所有的匹配信息 select * from emp e inner join dept d on e.deptno=d.de ...
- Mysql学习总结(25)——MySQL外连接查询
2019独角兽企业重金招聘Python工程师标准>>> 1.左外连接left outer join或者left jion,outer可以省略不写,下边的右连接和全连接也一样: 左外连 ...
- mysql限制查询/外连接查询和内连接查询/联合查询
mysql查询之limit限制查询 作用:对查询结果起到限制条数的作用 语法:limit n,m n:代表起始条数值,默认为0:m代表取出的条数 应用场合:数据量过多时,起到限制作用 如图 mysql ...
- MySql 内连接,外连接查询方式区别
MySql 内连接,外连接查询方式 CREATE TABLE `question_test` (`q_id` int(11) DEFAULT NULL,`q_name` varchar(10) DEF ...
- 新手:MySQL 左连接 右连接 内连接 全外连接查询数据
A 表 tb_as B表 tb_pslos LEFT JOIN 左连接 SELECT a.iob_name,b.iob_name FROM tb_as a LEFT JOIN tb_pslos b ...
- 【mysql】左外连接查询中 on 和 where 的区别
论点 在使用 mysql 的左外连接(left join)查询时,驱动表(left join 左边的表),亦即数据需要全部被查出表的查询条件建议用 where 设定,被驱动表(left join 右边 ...
- Mysql数据库基本操作(六)多表查询-内连接查询,外连接查询
数据准备 use mydb3 ; --创建部门表 create table if not exists dept3 ( deptno varchar (20) primary key , --部门号 ...
- mysql支不支持fulljoin_MySQL5中是否可以进行完整外连接查询(full join)?解决方法
mysql5中是否可以进行完整外连接查询(full join)? 在MySQL5中建立如下表: create table table1(id1 int,name varchar(10) ...
- 【MySQL联合查询】外连接查询详解
外连接可以做什么 当我们在查询数据时,要求返回所操作表中至少一个表的所有数据记录,通过SQL语句"OUTER JOIN-ON"来实现.外连接数据查询语法形式如下: SELECT f ...
最新文章
- 下列哪些说法符合《阿里巴巴Java开发手册》
- tum robotics
- [Java] HashMap 源码简要分析
- 随时间的反向传播算法 BPTT
- java导入lang_为什么java.lang不需要导放
- java httpurlconnection 设置编码_java – 通过HttpURLConnection发送UTF-8字符失败
- java string to bit_Java Convert String to Binary
- 计算机excel图表y轴怎么改,excel图表横坐标轴修改?excel图表里,请问怎么设定X,Y轴...
- 【VBScript恶搞代码】电脑自爆警告
- 总结Learning Efficient Single-stage Pedestrian Detectors by Asymptotic Localization Fitting
- Revit二次开发——新建墙类型
- 使用现有在线翻译服务进行代码翻译的体验
- [个人小记]U盘文件超过4g怎么办?
- 据说这是一堂价值300万元的课。有空看下,不要错过
- python教程cos_Python爬虫入门教程 12-100 半次元COS图爬取
- 【面试题记录】2020前端秋招笔试面试题目记录
- 2021银4 各大厂前端面试题分享
- blog群发王(价值1980元)源代码提供 1
- yocto,poky,qemu
- martin fowler_Martin Kleppmann的大型访谈:“弄清楚分布式数据系统的未来”
热门文章
- python数据库自动重连_python mysql断开重连的实现方法
- Windows7系统资源怎么看?
- android 怎么刷机,android系统怎么刷机
- List.addAll方法的入参不能为null
- loadrunner支持php包吗,Loadrunner自带的WebTours
- java 类 加载 初始化_java中类的初始化和加载
- stm32 lwip 如何发送不出_mbedtls | 移植mbedtls库到STM32裸机的两种方法
- android有关医疗实现功能,基于Android的智能医疗监测系统的设计与实现_问答库
- ul 原点显示_web前端开发学习教程,CSS HTML - ul li列表原点如何相连
- Android adb 启动APP