精华内容
下载资源
问答
  • 连接连接中,只有满足连接条件的元组才能作为结果输出,即当任一个表中为null则不会输出。 SQL 语句:123SELECT ...左外连接如果在查询时需要保留一个表中全部的元组,就需要使用外连接。 SQL12SELECT Student....

    内连接

    内连接中,只有满足连接条件的元组才能作为结果输出,即当任一个表中为null则不会输出。

    SQL 语句:

    1
    2
    3
    SELECT FIRST.Cno,SECOND.Cpno
    FROM Course FIRST,Course SECOND
    WHERE FIRST.Cpno=SECOND.Cno;

    左外连接

    如果在查询时需要保留一个表中全部的元组,就需要使用外连接。

    SQL

    1
    2
    SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
    FROM Student LEFT JOIN SC ON (Student.Sno=SC.Sno)

    LEFT JOINLEFT OUTER JOIN 相同

    使用左外连接会保存左边关系(表Student)中所有的元组以及右边关系(表SC)符合条件的元组。

    右外连接

    SQL

    1
    2
    SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
    FROM Student RIGHT JOIN SC ON (Student.Sno=SC.Sno)

    RIGHT JOINRIGHT OUTER JOIN 相同

    使用右外连接会保存右边关系(SC)中所有的元组以及右边关系(Student)符合条件的元组。

    全外连接

    SQL

    1
    2
    SELECT A.*,B.*
    FROM A FULL JOIN B ON A.id=B.id

    完整外部连接返回左表和右表中的所有行,不管另外一边的表中是否存在与它们匹配的行。

    展开全文
  • 外连接左外连接 与 右外连接 为啥要用外连接外连接 总结 内连接 外连接

    外连接 之 左外连接 与 右外连接

    我们先来看个之前的 女神男朋友的案例
    传送:数据库学习之MySQL (十三)——多表查询 SQL92 SQL99 连接种类划分
    在这里插入图片描述
    在这里插入图片描述
    我们先考虑一一映射的情况 也就是男女不会脚踏多条船 而是一对一的
    那么 之前说了 我们以女神为主
    以女生的信息为主表 会有12行 因为有12个女生实例 匹配不到男生的就空着
    在这里插入图片描述
    以男生为主 以男生的信息为主表 则明显 只会有4个男生对象实例
    在这里插入图片描述
    这里,因为没有一一映射 (张有三个女朋友) 导致多了两行 但实际上是以男生为主表

    那么 以······为主 代码上怎么实现呢?
    我这里放第一个 女神为主表的实现代码:

    USE data1;
    SELECT 
      a.`id` AS 女神id,
      a.`name` AS 女神名字,
      a.`phone` AS 女神电话,
      a.`boyfriend_id` AS 男朋友id,
      b.`boyName` AS 男朋友名字 
    FROM beauty AS a
    LEFT JOIN boys AS b
    
    ON a.`boyfriend_id` = b.`id`;
    

    LEFT 关键字尤为重要 全称为LEFT OUTER 左外连接 可以省略outer

    或者我这么写

    FROM beauty AS a LEFT JOIN boys AS b
    

    懂了吧?left 左边为主表 所以是左外连接

    那么 我这么写呢?

    USE data1;
    SELECT 
      a.`id` AS 女神id,
      a.`name` AS 女神名字,
      a.`phone` AS 女神电话,
      a.`boyfriend_id` AS 男朋友id,
      b.`boyName` AS 男朋友名字 
    FROM  boys AS b
    RIGHT JOIN beauty AS a
    
    ON a.`boyfriend_id` = b.`id`;
    

    答案是一样的

    所以用的时候 左右连接 选一个就OK 一个道理而已

    为啥要用外连接

    我们看过十三节 其实用内连接的 等值连接 人家很智能的会把匹配不到的给去掉
    现在我们把匹配不到的给弄出来的岂不是画蛇添足?

    其实不然
    比如我还看到别的信息呢?也就是女神我一定要看 有没有男朋友我不是很在意 那就需要全表

    基于全表 我们再怎么筛选也不会漏数据(漏女神)

    全外连接

    所谓全外 就是左外+右外
    啥意思?两个表都是主表
    那么 两个表的所有实例都会表现出来 无论是否匹配得到
    那么按照之前

    名称关键词主表实例
    左外LEFT女神为主表12个实例女神
    右外RIGHT男神为主表4个实例男神
    全外FULL两个都是主表16个实例神
    USE data2;
    SELECT 
      b.`id` AS 男神id,
      b.`boyName` AS 男神名字,
      b.`userCP` AS 男神指数,
      a.`id` AS 女神id,
      a.`name` AS 女朋友名字 
    FROM beauty AS a
    FULL JOIN boys AS b
    ON a.`boyfriend_id` = b.`id`;
    

    在这里插入图片描述
    不过 MySQL 支持 全连接 其他的都OK 这里就不测试了 代码可以在支持的SQL引擎中实现:

    总结 内连接 外连接

    我拿男神女神匹配这个案例来说
    男神是女神的真子集 也就是匹配完 女生还有圣女 男生全都抱得美人归了

    名称关键词结果数学表达实例
    内连接INNER互相都能匹配得到的交集4个实例CP神
    左外连接RIGHT左边的女神实例保留 其他尽量匹配 匹配不到为NULL女神集4个实例男神
    右外连接FULL右边的男神实例保留 其他尽量匹配 匹配不到为NULL男神集16个实例神
    全外连接FULL左右神的实例都保留 匹配不到就为NULL全集16个实例神

    这个是结合代码的示意图 看看能否理解:
    在这里插入图片描述

    交叉连接

    还记得我们之前的那个 笛卡尔乘积 问题嘛
    传送:数据库学习之MySQL (十三)——多表查询 SQL92 SQL99 连接种类划分

    其实就好像数学考试的握手游戏
    这里 每个人(男神或者女神)都必须要和其他所有异性匹配 成一行实例输出

    我们当时没用多表查询 瞎搞出来的代码,出来了这样的效果
    在这里插入图片描述
    其实 交叉连接就是得到这样的结果
    这两段代码是等效
    意思 不用INNER OUTER限定 默认就是交叉连接

    #1  错误写法
    SELECT * FROM `beauty`,`boys`  
    
    
    #2  SQL99 交叉连接写法
    SELECT 
      a.*,
      b.* 
    FROM
      `beauty` AS a,
      `boys` AS b 
    CROSS JOIN `boys` ;
    
    

    下一站:数据库学习之MySQL (十七)—— SQL99 主查询与子查询 子查询分类之WHERE的子查询

    展开全文
  • 1、等值连接:从表中取出每一条记录,去右表中与所有的记录进行匹配:匹配必须是某个条件在表中与右表中相同最终才会保留结果,否则不保留。 2、内连接 以上可以看出,内连接有两种写法,一种是inner ...

    UserInfo表:

    WorkInfo表:

    1、等值连接:从左表中取出每一条记录,去右表中与所有的记录进行匹配:匹配必须是某个条件在左表中与右表中相同最终才会保留结果,否则不保留。

    2、内连接

    以上可以看出,内连接有两种写法,一种是inner join,另一种是join,这两种写法都是一样的,可以理解为join是inner join的缩写。还可以看出,等值连接和内连接的效果一样,但是开发中建议使用内连接,因为等值连接在查询的时候会将2个表会先进行笛卡尔乘积运算,生成一个新表格,占据在电脑内存里,当表的数据量很大时,很耗内存,这种方法效率比较低;内连接查询时会将2个表根据共同ID进行逐条匹配,不会出现笛卡尔乘积的现象,效率比较高。

    3、左连接,也成为左外连接:从左表那里返回所有的行,即使在右表中没有匹配的行。

    4、右连接,也成为右外连接:右表那里返回所有的行,即使在左表 中没有匹配的行。

    5、全连接:只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。

    6、笛卡尔乘积:通俗的说就是查询所得的结果行数是两张表行数的乘积。

    展开全文
  • 一、测试用例 其中学生表有两个属性学号(Sno)、姓名(Sname),选课表有两个属性课程号(Cno)、学号(Sno). 二、区别 ... 自然连接(natural join) ...内连接与自然连接的 区别就是保留重复的列属...

    一、测试用例

     

    其中学生表有两个属性学号(Sno)、姓名(Sname),选课表有两个属性课程号(Cno)、学号(Sno).

    二、区别

    • 自然连接(natural join)

    自然连接是一种特殊的等值连接。自然连接在结果中把重复的行和重复的属性列去掉。根据测试用例,可得自然连接如下表:

    • 内连接(inner join

     内连接与自然连接的 区别就是保留重复的列属性和保留重复的行。根据测试用例,可得内连接如下表:

    • 左外连接(left outer join

    左外连接:就是把左边表的数据全部取出来,而右边表的数据有相等的,显示出来,如果没有,显示NULL。根据测试用例,可得左外连接如下表:

    • 右外连接(right outer join

    右外连接:就是把右边表的数据全部取出来,而左边表的数据有相等的,显示出来,如果没有,显示NULL。根据测试用例,可得右外连接如下表:

    展开全文
  • 左外连接表不加限制,保留左表的数据,匹配右表,右表没有匹配到的行中的列显示为null。右外连接:右表不加限制,保留右表的数据。匹配表,表没有匹配到的行中列显示为null。完全外连接:左右表都不加限制。...
  • 2. 左外连接 left join关键字左边的表,也就是teacher表保留所有记录,右边对应没匹配上的置为null 3. 右外连接 right join关键字右边的表,也就是teacher表保留所有记录,左边对应没匹配上的置为null 4. 内连接 ...
  • sql语句 内连接左外连接、右外连接的理解 大家在初学数据库时,对DQL中的连接查询是否有些疑惑,不知道什么时候什么场景下该用那种连接查询? 不要着急,接下来由我来给大家介绍一下,本人对内连接左外连接、右...
  • 之前的博客内容我们分享了数据表的查询与管理,但那只是针对数据库中的一个...基本连接,内连接左外连接,右外连接,全外连接,交叉连接,自连接 如果对连接方式了解的人看到这里会感到很熟悉,但对于不了解的人...
  • 左连接 [LEFT JOIN] 右 连接 [RIGHT JOIN] 连接 [FULL JOIN] 自连接 1.概述 关联查询一共有几种情况: 内连接:INNER JOIN 、CROSS JOIN 连接:左连接(LEFT OUTER JOIN)、右连接(RIGHT OUTER JOIN...
  • 连表查询(内查询,左查询,右查询,...左连接 右连接 全连接 连表查询(内查询,左查询,右查询,全查询) 说明 mysql版本:Server version: 5.7.17 MySQL Community Server (GPL) 操作系统:win...
  • 在from子句中表示连接操作有四种:inner(内连接),left[outer](左外连接),right[outer](右外连接),full[outer](完全外连接)。 一、理论讲解 1、内连接join 结果集中只保留了符合连接条件的元组,而...
  • 一、连接查询简介  连接查询中用来连接连个表的条件称为连接条件或连接谓词。其形式为: [].列名1>连接运算符>[].列2>   常见的连接运算符包括  1、比较运算符:=、>、=、  2、逻辑运算符:not、and、or。...
  • Mysql—— 内连接、左连接、右连接以及全连接查询

    万次阅读 多人点赞 2018-10-05 23:03:31
    一、内连接查询 inner join 关键字:inner join on 语句:select * from a_table a inner join b_table b on a.a_id = b.b_id; 说明:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集...
  • 连接连接也叫连接,是最早的一种连接,最早被称为普通连接或自然连接。内连接是从结果中删除其他被连接表中没有匹配行的所有行,所以内连接可能会丢失信息。内连接使用比较运算符根据每个表共有的列的值...
  • 连接左外连接,右外连接

    千次阅读 2010-10-02 12:10:00
    连接连接也叫连接,是最早的一种连接,最早被称为普通连接或自然连接。内连接是从结果中删除其他被连接表中没有匹配行的所有行,所以内连接可能会丢失信息。内连接的语法:SELECT fieldlistFROM table1 [INNER]...
  • Hive支持通常的SQL JOIN语句,但是只支持等值连接,==不支持非等值连接==。 案例实操 select * from stu left join score on stu.id = score.s_id; 根据学生和成绩表,查询学生姓名对应的成绩 2 表的别名 好处...
  • 1. 内连接很简单select A.*, B.* from A,B where A.id = B.idselect 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.deptnoselect
  • (一) 内连接内连接,...自然连接(二) 连接 连接,返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左 连接或左连接))、右表(右连接或右连接)或两个边接表(全连接)中的所有数据行。 左连
  • 阅读目录 1、准备工作2、左外连接(LEFT OUTER JOIN/ LEFT JOIN)3、右外连接(RIGHT OUTER JOIN/RIGHT JOIN)4、全外连接(FULL OUTER JOIN/FULL JOIN) ...左外连接(左边的表不加限制)右外连接(右边的表不
  • 首先呢,今天在数据库中写好了笛卡尔连接,后面要改写成LINQ的方式。突然瞬间蒙了,写多了JOIN却忘了怎么去写交叉连接(笛卡尔连接)。 顺便复习一下LINQ的连接操作: static public class SampleData { static ...
  • 连接外连接区别

    千次阅读 2016-08-24 00:59:03
    内连接 只取2个表能连接上的数据,连接不上的...左连接就是把左边表的数据全部保留,右边表只保留能连接上的数据。 右连接同左连接。 全连接就是保留2个表的全部数据,包括连接上的,也包括没有连接上的。 ...
  • 1左外连接 应用 结果 2右外连接 应用 结果 3全外连接 测试SQL 4内连接 测试SQL 结果-1、SQL脚本SET FOREIGN_KEY_CHECKS=0;-- ---------------------------- -- Table structure for `clazz` -- --------------------...
  • 数据库中涉及两个表之间的数据查询通常使用连接的方法实现。...左外连接:左边表数据行全部保留,右边表保留符合连接条件的行右外连接:右边表数据行全部保留,左边表保留符合连接条件的行 全外连接左外连接
  • SQL连接(左连接、右连接、全连接)

    千次阅读 2013-11-28 16:50:34
     2、 连接:左连接和右连接都是外部连接,也就是区别于内部连接,它对不满足连接条件的行并不是象内部连接一样将数据完全过滤掉,而是保留一部分数据,行数不会减少。 3、左连接:是只要左边表中有记录,数据就...
  • mysql 内连接、自然连接外连接的区别

    万次阅读 多人点赞 2018-12-02 23:57:12
    连接、自然连接外连接的区别
  • 需要查找两张表中一张表存在,另一张表不存在的时候使用左外链接 或 右链接 内连接的查询结果都是满足连接条件的元组。但有时我们也希望输出那些不满足连接条件的元组信息。比如,我们想知道每个学生的选课情况,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 173,690
精华内容 69,476
关键字:

左外连接保留什么