菜鸟笔记——纠结的左外连接查询和右外连接查询

1.前言

  外连接查询也是很基础的知识,可是我也花了几个小时才理解透。在本文不太过多用书本语言来描述,我会以自己的思维理解和描述该知识

2.引出

   首先,连接查询的方法也有很多。但是有些知识点学了,我们必须清楚会在什么情况下用到。

例:查询没有参加考试的学生信息。  按常规的做法内连接查询是无法得到的,为什么?因为内连接查询时,数据结果集是匹配条件列相等的数据。如果某行数据匹配的列的值不相等,那么行

数据将不会显示。这时候就需要用到外连接查询。

3.什么是做表?什么是右表?

写在关键字Left join前面的是左表,写在Right join后面的是右表

--首先,我自定义两个对象:中轴对象、参照物。 我们使用连接时就要确定这两个对象为那张表
--中轴对象: 该对象安装关键字的特征定位,如Left join 那么就在左,Right join就在右
--参照物:拿来和中轴对象对比的,如果关联的列的值在中轴对象里不存在,那么参照物的列会以NULL显示

4.左连接

如左连, 我们把 left join前面的表作为中轴对象,那么参照物就是右表,
--我们拿参照物和中轴对象比较,如果 on 关联的字段存在,就正常显示数据,如果不存在,参照物的列会以NULL显示出来

5.右连

右连:把中轴对象放在 Right join 后面 ,参照物为左表在Right join前面,根据on 匹配相等的字段值,
如果该值在中轴对象里没有,那么该行的列会以NULL显示

6.总结

--显示NULL的都是参照物表的字段,参照胡表是以中轴对象膜拜的
 左连:不管匹配列的信息怎么样,始终会显示左表的所有信息
 右连:不管匹配列的信息是否相等,始终会显示出右表的所有信息,左表匹配不到会以NULL显示
*/

  

  

时间: 2024-08-03 20:31:45

菜鸟笔记——纠结的左外连接查询和右外连接查询的相关文章

[原创]java WEB学习笔记88:Hibernate学习之路-- -Hibernate检索策略(立即检索,延迟检索,迫切左外连接检索)

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

在查询用户的权限的时候 使用左外连接 和 access数据库中左外连接

一般做视图最好是做成左外连接的.而其作用尤其在我们查询用户当前的权限时尤为明显,我们将 权限表即模块表放→角色权限表→角色表→用户角色表→用户表 就这样left outer join 连接起来,这样就保证了该用户的所用权限都能查询出来. access数据库中的左外连接很特别,它是先写里面的然后逐步扩展到最后,先执行里面的. 例子 SELECT xt_user.Pkid, xt_user.UserID, xt_user.UserName, xt_user.Password, xt_user.Sta

MySQl 子查询,左右连接,多表连接学习笔记

1.子查询是指在另一个查询语句中的SELECT子句. 例句: SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2); 其中,SELECT * FROM t1 ...称为Outer Query[外查询](或者Outer Statement), SELECT column1 FROM t2 称为Sub Query[子查询]. 所以,我们说子查询是嵌套在外查询内部.而事实上它有可能在子查询内部再嵌套子查询. 子查询必须出现在圆括号之间. 行

深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接(转载)

1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接.     内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行.     2.外联接.外联接可以是左向外联接.右向外联接或完整外部联接.     在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:     1)LEFT  JOIN或LEFT OUTER JOIN     左向外联接的结果集包括  LEFT

Hibernate迫切左外连接和迫切内连接

•迫切左外连接: •LEFT JOIN FETCH 关键字表示迫切左外连接检索策略. –list() 方法返回的集合中存放实体对象的引用, 每个 Department 对象关联的 Employee  集合都被初始化, 存放所有关联的 Employee 的实体对象. –查询结果中可能会包含重复元素, 可以通过一个 HashSet 来过滤重复元素 •左外连接: –LEFT JOIN 关键字表示左外连接查询. –list() 方法返回的集合中存放的是对象数组类型 –根据配置文件来决定 Employee

左外连接和右外连接的差别以及运用

A(id,name)数据:(1,张三)(2,李四)(3,王五)B(id,name)数据:(1,学生)(2,老师)(4,校长) 左连接结果:select A.*,B.* from A left join B on A.id=B.id;1 张三 1 学生2 李四 2 老师3 王五 NULL NULL 右链接结果:select A.*,B.* from A right join B on A.id=B.id;1 张三 1 学生2 李四 2 老师NULL NULL 4 校长 **************

oracle 内连接 左外连接 右外连接的用法,(+)符号用法

1. 内连接很简单 select A.*, B.* from A,B where A.id = B.id select A.*, B.* from A inner join B on A.id = B.id 以上两句是完全等价的 2. 左外连接 select * from emp a left join dept d on a.deptno=d.deptno select * from emp a,dept d where a.deptno=d.deptno(+) 以上两句是完全等价的 3. 右

内连接association 左外连接collection

前提条件: 学生表 (多  子表) 年级表(一  主表) 1,第一种情况:先查子表所有 student.sql.xml文件如何配 由于有多表连接,无法把查询结果直接封装成一个实体对象-------->   结果转换规则:自己手动指定 内连接 返回单个association <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//D

【转】深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接

[原文]:http://www.jb51.net/article/39432.htm 1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接.     内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行.       2.外联接.外联接可以是左向外联接.右向外联接或完整外部联接.     在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:     1)LEFT