1.sql查询时什么叫左连接和右连接
    左连接和右连接都是外部连接,也就是区别于内部连接,它对不满足连接条件的行
并不是象内部连接一样将数据完全过滤掉,而是保留一部分数据,行数不会减少。
    左或右連接查詢實際上是指定以哪個表的數據為准﹐而默認(不指定左或右連接)是以兩個表中都存在關鍵列的數據的為准。

2.内连接
    内部连接是两个表中都必须有连接字段的对应值的记录,数据才能检索出来。
    左连接是只要左边表中有记录,数据就能检索出来,而右边有的记录必要在左边表中有的记录才能被检索出来
    右连接是只要右边表中有记录,数据就能检索出来

为更好的理解这个概念,我们介绍两个表作演示。苏格兰议会中的政党表(party)和议员表(msp)。

party(Code,Name,Leader)
Code: 政党代码
Name: 政党名称
Leader: 政党领袖

msp(Name,Party,Constituency)
Name: 议员名
Party: 议员所在政党代码
Constituency: 选区

在介绍左连接、右连接和全连接前,有一个数据库中重要的概念要介绍一下,即空值(NULL)。有时表中,更确切的说是某些字段值,可能会出现空值, 这是因为这个数据不知道是什么值或根本就不存在。

空值不等同于字符串中的空格,也不是数字类型的0。因此,判断某个字段值是否为空值时不能使用=,<>这些判断符。必需有专用的短语:IS NULL 来选出有空值字段的记录,同理,可用 IS NOT NULL 选出不包含空值的记录。 小虫网络技术http://www.chinaccna.com

例如:下面的语句选出了没有领导者的政党。(不要奇怪,苏格兰议会中确实存在这样的政党)

SELECT code, name FROM party
WHERE leader IS NULL

又如:一个议员被开除出党,看看他是谁。(即该议员的政党为空值)

SELECT name FROM msp
WHERE party IS NULL

好了,让我们言归正传,看看什么叫左连接、右连接和全连接。A left join(左连接)包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录。同理,也存在着相同道理的 right join(右连接),即包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录。

而full join(全连接)顾名思义,左右表中所有记录都会选出来。讲到这里,有人可能要问,到底什么叫:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录。

我们来看一个实例:

SELECT msp.name, party.name
FROM msp JOIN party ON party=code

这个是我们上一节所学的Join(注意:也叫inner join),这个语句的本意是列出所有议员的名字和他所属政党。

很遗憾,我们发现该查询的结果少了两个议员:Canavan MSP, Dennis。为什么,因为这两个议员不属于任何政党,即他们的政党字段(Party)为空值。那么为什么不属于任何政党就查不出来了?这是因为空值在作怪。因为议员表中政党字段(Party)的空值在政党表中找不到对应的记录作匹配,即FROM msp JOIN party ON party=code 没有把该记录连接起来,而是过滤出去了。在该短语中,msp在Join的左边,所有称为左表。party在Join的右边,所有称为右表。

现在再看看这句话,“包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录”,意思应该很明白了吧。执行下面这个语句,那两个没有政党的议员就漏不了了。

SELECT msp.name, party.name
FROM msp LEFT JOIN party ON party=code

关于右连接,看看这个查询就明白了:

SELECT msp.name, party.name
FROM msp RIGHT JOIN party ON msp.party=party.code

这个查询的结果列出所有的议员和政党,包含没有议员的政党,但不包含没有政党的议员。 那么既要包含没有议员的政党,又要包含没有政党的议员该怎么办呢,对了,全连接(full join)。

SELECT msp.name, party.name
FROM msp FULL JOIN party ON msp.party=party.code

转载于:https://www.cnblogs.com/yeminglong/archive/2011/10/15/2212966.html

sql查询时的左连接,右连接,和内连接详细解释相关推荐

  1. mysql 中的左连接,右链接和内连接

    左连接,右链接和内连接 在自己做项目的过程中,遇到了相关的数据库的查询的问题,在这里做一下简短的记录和总结 其中左连接和右链接属于外连接: 左连接: left (outer) join 右链接: ri ...

  2. 理解内连接中的隐式内连接、显式内连接和外连接中的左外连接、右外连接

    一.多表查询 二.在 MySQL 中创建 book 和 actor 两张表 1 创建 book 表及添加数据 CREATE TABLE `book` (`id` INT PRIMARY KEY NOT ...

  3. oracle中使用sql查询时字段为空则赋值默认

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值 oracle 函数介绍之nvl ...

  4. oracle判断字段为空时选用别的字段_oracle中使用sql查询时字段为空则赋值默认

    转至:http://www.th7.cn/db/Oracle/201501/86125.shtml oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值 oracle 函数介绍之nvl ...

  5. mysql自然连接和等值连接_区分笛卡儿积,自然连接,等值连接,内连接,外连接...

    1.区分笛卡儿积,自然连接,等值连接,内连接,外连接(左连接,右连接和全连接) 假设存在两张表R和S,这里使用的是MySQL数据库. 下面这张表是R 下面这张是S 为了测试左连接和右连接,现在增加一张 ...

  6. mysql内连接的自连接_mysql 内连接、外连接、自连接

    一)内连接(等值连接):查询客户姓名,订单编号,订单价格 --------------------------------------------------- select c.name,o.isb ...

  7. mysql 内连接关键词_Mysql的内连接、左连接、右连接以及全连接查询

    转载:https://blog.csdn.net/zjt980452483/article/details/82945663 一.内连接查询  inner join 关键字:inner  join  ...

  8. sql中的左连接、右链接、内连接

    首先建立两张表,班级表和学生表如图 这里的数据中有的学生的班级不在班级表中,有的班级人数为0: 1.左连接 SELECT * FROM `student` LEFT JOIN class on stu ...

  9. ORACLE中的全连接(Full Join)、内连接(JOIN/INNER JOIN)、左连接(Left Join)、右连接(Left Join)、(+)符号以及Theta连接

    测试表: A表:LS_TEMP1 B表:LS_TEMP2 左连接(左外连接)A LEFT JOIN B / (+)放在B表后边:左表为基础,显示所有左表数据,右表只显示能与左表关联上的数据 右连接(右 ...

最新文章

  1. eigen跟踪MILTracker代码分析
  2. gperf的学习笔记(一)
  3. NBU备份之一 Windows操作系统BMR的配置
  4. java+实现集合并运算_JAVA程序设计报告+集合运算
  5. K8S常见错误、原因及处理方法
  6. 05.analysis-normalizer应用
  7. 小程序 foreach_【第2106期】小程序依赖分析实践
  8. 怎样永久更改嵌入式linux系统ip,如何修改嵌入式系统IP
  9. java程序运行三步骤 理解编译
  10. PHP 文件与目录操作
  11. 嘀嗒与钉钉合作推出职场顺风车 3月已在杭州测试
  12. PS基础教程[1]如何制作微信泡泡
  13. 干货3分钟搞懂私募投以及技术面试
  14. 国内免费的mqtt测试服务器或者mqtt broker
  15. 将字体变成红色加粗字体
  16. python中notebook左侧in中_Python Pmw.NoteBook方法代码示例
  17. GPT专业应用:如何让GPT策划方案
  18. 营销革命4.0 从传统到数字
  19. 物理内存是什么是计算机的显卡内存吗,物理内存可用数_可用内存和物理内存是什么意思?_可用物理内存...
  20. 程序员的核心竞争力是什么?

热门文章

  1. 有人滥用 GitHub Actions在 GitHub 服务器挖掘密币,且正在蔓延
  2. 瑞士表商 Swatch 关闭 IT 系统,阻止网络攻击
  3. D-Link 不止暴露固件镜像密钥,还被曝5个严重0day
  4. VMware Cloud Director 被曝严重漏洞,可导致黑客接管企业服务器
  5. mimimiaaaaaa
  6. Nodejs实现的一个静态服务器例子
  7. 黑苹果 装SVN工具 cornerstone无法打开解决办法——网卡内建
  8. 15款优雅的 WordPress 电子商务网站主题
  9. 【Vegas原创】SQL Server 2005部署备份任务
  10. 在java中如何把字符串转换成时间格式?