精华内容
下载资源
问答
  • 自然连接
    千次阅读
    2021-02-01 23:43:34

    在基本查询一节的示例中,我们有从 instructor 和 teaches 表组合信息,匹配条件是 instructor.ID 等于 teaches.ID 的查询,ID 属性是两个表中具有相同名称的所有属性,按照两个表中所有相同名称属性组合实际上是一种通用情况,即 from

    子句中的匹配条件在最自然的情况下需要在所有匹配名称的属性上相等。因此,SQL 提供了完成这种操作的运算,称之为自然连接(natural join)。实际上,SQL 还支持更丰富的连接(join)运算,后面会提到。

    自然连接运算作用于两个关系,并产生一个关系作为结果,不同于两个关系上的笛卡尔积,笛卡尔积将第一个关系的每个元组与第二个关系的所有元组都进行连接;自然连接只考虑那些在两个关系模式中都出现的属性上取值相同的元组对。

    因此,回到 instructor 和 teaches 关系的例子上,它们的自然连接只考虑在唯一共有属性 ID 上取值相同的元组对。

    mysql> select name, course_id

    -> from instructor natural join teaches;

    +------------+-----------+

    | name | course_id |

    +------------+-----------+

    | Srinivasan | CS-101 |

    | Srinivasan | CS-315 |

    | Srinivasan | CS-347 |

    | Wu | FIN-201 |

    | Mozart | MU-199 |

    | Einstein | PHY-101 |

    | El Said | HIS-351 |

    | Katz | CS-101 |

    | Katz | CS-319 |

    | Crick | BIO-101 |

    | Crick | BIO-301 |

    | Brandt | CS-190 |

    | Brandt | CS-190 |

    | Brandt | CS-319 |

    | Kim | EE-181 |

    +------------+-----------+

    15 rows in set (0.01 sec)

    我们知道 from

    子句可以涉及多个关系,现在我们可以说,这些关系也可以是自然连接的结果,这是很直观的,因为自然连接的结果也是一个关系。

    考虑查询,列出教师的名字以及他们讲授课程的名称。

    mysql> select name, title

    -> from instructor natural join teaches, course

    -> where teaches.course_id = course.course_id;

    +------------+----------------------------+

    | name | title |

    +------------+----------------------------+

    | Crick | Intro. to Biology |

    | Crick | Genetics |

    | Srinivasan | Intro. to Computer Science |

    | Katz | Intro. to Computer Science |

    | Brandt | Game Design |

    | Brandt | Game Design |

    | Srinivasan | Robotics |

    | Katz | Image Processing |

    | Brandt | Image Processing |

    | Srinivasan | Database System Concepts |

    | Kim | Intro. to Digital Systems |

    | Wu | Investment Banking |

    | El Said | World History |

    | Mozart | Music Video Production |

    | Einstein | Physical Principles |

    +------------+----------------------------+

    15 rows in set (0.01 sec)

    这个查询首先计算 instructor 和 teaches 的自然连接,如前所见,再计算这个救过和 course 的笛卡尔积,然后按照 where

    子句筛选出结果,注意 where

    子句中的 teaches.course_id 表示自然连接结果中的 course_id 域,这是因为该域最终来自 teaches 关系。

    下面的查询给出的结果虽然在当前模式下相同,但其实是有问题的。

    mysql> select name, title

    -> from instructor natural join teaches natural join course;

    +------------+----------------------------+

    | name | title |

    +------------+----------------------------+

    | Crick | Intro. to Biology |

    | Crick | Genetics |

    | Srinivasan | Intro. to Computer Science |

    | Katz | Intro. to Computer Science |

    | Brandt | Game Design |

    | Brandt | Game Design |

    | Srinivasan | Robotics |

    | Katz | Image Processing |

    | Brandt | Image Processing |

    | Srinivasan | Database System Concepts |

    | Kim | Intro. to Digital Systems |

    | Wu | Investment Banking |

    | El Said | World History |

    | Mozart | Music Video Production |

    | Einstein | Physical Principles |

    +------------+----------------------------+

    15 rows in set (0.00 sec)

    它的问题在于 course 关系和 instructor 关系中都包含了 dept_name 属性,因此它们自然连接的结果要在这个属性上相同,这样的查询会遗漏以下模式的元组对,教师所讲授的课程不是他所在系的课程,前一个查询能够正确输出这样的元组对。

    为了应付这个问题,即在保留自然连接的简洁性的同时规避过多的属性匹配,SQL 提供了一种自然连接的构造形式,允许用户来指定需要哪些列相等。

    mysql> select name, title

    -> from (instructor natural join teaches) join course using (course_id);

    +------------+----------------------------+

    | name | title |

    +------------+----------------------------+

    | Crick | Intro. to Biology |

    | Crick | Genetics |

    | Srinivasan | Intro. to Computer Science |

    | Katz | Intro. to Computer Science |

    | Brandt | Game Design |

    | Brandt | Game Design |

    | Srinivasan | Robotics |

    | Katz | Image Processing |

    | Brandt | Image Processing |

    | Srinivasan | Database System Concepts |

    | Kim | Intro. to Digital Systems |

    | Wu | Investment Banking |

    | El Said | World History |

    | Mozart | Music Video Production |

    | Einstein | Physical Principles |

    +------------+----------------------------+

    15 rows in set (0.00 sec)

    join ... using

    运算中需要给定一个属性名列表,其两个输入中都必须具有指定名称的属性,考虑运算 r1 join r2 using (A1, A2)

    ,它与 r1 和 r2 的自然连接类似,只不过在 t1.A1 = t2.A1

    且 t1.A2 = t2.A2

    的情况下就能匹配 r1 的元组 t1 和 r2 的元组 t2,即使它们都有属性 A3,也不考虑这个属性的事。

    注意:本文来自博客园精华区。本站无法对本文内容的真实性、完整性、及时性、原创性提供任何保证,请您自行验证核实并承担相关的风险与后果!

    CoLaBug.com遵循[CC BY-SA 4.0]分享并保持客观立场,本站不承担此类作品侵权行为的直接责任及连带责任。您有版权、意见、投诉等问题,请通过[eMail]联系我们处理,如需商业授权请联系原作者/原网站。

    更多相关内容
  • 数据库自然连接与等值连接

    千次阅读 2021-01-28 06:47:53
    mysql-数据查询语句-多表连接查询连接查询,是关系数据库中最主要的查询,包括等值查询、自然连接查询、非等值查询、自身连接查询、外连接查询和复合条件连接查询等。1、等值与非等值连接查询连接查询的where子句中...

    mysql-数据查询语句-多表

    连接查询

    连接查询,是关系数据库中最主要的查询,包括等值查询、自然连接查询、非等值查询、自身连接查询、外连接查询和复合条件连接查询等。

    1、等值与非等值连接查询

    连接查询的where子句中用来连接两个表的条件称为连接条件或连接谓词。当连接运算符为 = 时,称为等值连接。使用其他运算符称为非等值连...

    文章

    harry_h

    2018-06-26

    819浏览量

    SQL - 内连接与外连接

    PDF下载地址:SQL-内连接与外连接.pdf

    连接查询在关系型数据库中经常用到,是多表联合查询的基础。

    主要包含:内连接,外连接,交叉连接。

    SQL - 内连接与外连接

    内连接

    等值连接

    不等值连接

    自然连接

    外连接

    左连接

    右连接

    全连接...

    文章

    北岛知寒

    2016-03-27

    674浏览量

    SQL应用与开发:(五)多个数据表的连接

    数据库中的各个表中存储着不同的数据,用户往往需要用多个表中的数据来组合、提炼出所需要的信息。如果一个查询需要对多个表进行操作,就称为连接查询。连接查询的结果集或结果表称为表之间的连接。查询实际上是通过各个表之间共同列的关联性来查询数据的,它是关系型数据库查询最主要的特征。

    实现连接的结果是在向数据...

    文章

    吴士龙

    2015-04-04

    1262浏览量

    ff0c35e3aa0877a25f7873cca08f3438.png

    Quick BI 数据可视化分析平台

    2020年入选全球Gartner ABI魔力象限,为中国首个且唯一入选BI产品

    广告

    MySQL 基础---多表数据查询

    多表数据记录查询:

    关系数据的各种操作

    内连接查询

    外连接查询

    子查询

    关系数据操作

    传统的运算:

    并(UNION)

    笛卡尔积(CARTESIAN PRODUCT)

    专门针对数据库操作的运算---连接(JOIN)

    (1) 并(UNION)

    “并”就是把具有相同字段数目和字段类型的表合并...

    文章

    凌浩雨

    2017-10-11

    619浏览量

    数据库多表连接查询详解

    通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。

    在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。连接操作给用户带来很大...

    文章

    橘子红了呐

    2017-11-08

    980浏览量

    《数据库技术基础与应用(第2版)》学习笔记——第4章

    第4章 关系运算

    4.1 关系代数

    基于集合运算分类

    传统的集合运算:并、差、交、乘积

    专门的关系运算:选择、投影、连接、自然连接、除法等

    基于关系代数完备性分类

    五种基本运算:并、差、乘积、选择、投影,构成关系代数完备运算集

    其他扩充运算:交、连接、自然连接、除法等

    4.1.1 关系代数的五种基...

    文章

    李博 bluemind

    2017-12-06

    901浏览量

    《数据库原理与应用(第3版)》——习题

    本节书摘来自华章出版社《数据库原理与应用(第3版)》一 书中的第3章,第3.1节,作者:何玉洁,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

    习题

    1.?试述关系模型的三个组成部分。2.?解释下列术语的含义:(1)笛卡儿积(2)主键(3)候选键(4)外键(5)关系(6)关系模式(7)关系...

    文章

    华章计算机

    2017-05-02

    1616浏览量

    数据库常见面试题总结

    说明:本文仅供学习交流。转载请标明出处,欢迎转载!

    数据库常见面试题总结

    1.      SQL的表连接方式有哪些?

    SQL中连接按结果集分为:内连接。外连接,交叉连接

    内连接:inner join on,两表都满足的组合。内连接分为等值连接,不等连接。自然连接。

    等值连接:两表中同...

    文章

    技术mix呢

    2017-10-19

    855浏览量

    SQL 多个表之间联合查询

    非常少用join,这次学学,并备忘两篇文章!

    转自:http://hcx-2008.javaeye.com/blog/285661

    连接查询

    通过连接运算符能够实现多个表查询。连接是关系数据库模型的主要特点,也是它差别于其他类型数据库管理系统的一个标志。

    在关系数据库管理系统中,表建立时各数据之间...

    文章

    云栖希望。

    2018-01-06

    1430浏览量

    Apache Spark机器学习.2.5 数据集连接

    2.5 数据集连接

    本节,我们将介绍数据连接的技术,并讨论Spark处理数据连接的特有的特征,以及一些使工作更容易进行的数据连接解决方案。

    学习完本节,我们将有能力按照各类机器学习需要做数据连接。

    2.5.1 数据连接及其工具——Spark SQL

    为机器学习项目准备数据集时,我们一般需要组合多...

    文章

    华章计算机

    2017-05-02

    1855浏览量

    通用SQL数据库查询语句精华使用简介

    通用SQL数据库查询语句精华使用简介

    一、 简单查询

    简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。

    例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。

    SE...

    文章

    余二五

    2017-11-14

    845浏览量

    漫谈SQL查询语句

    漫谈SQL查询语句

    无锡/王乾

    本文来谈谈SQL Server的查询语句,包括简单查询、联合查询、连接查询:

    一.简单查询

    简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。

    例如,下面的...

    文章

    技术小美

    2017-10-31

    956浏览量

    sql常用语句

    一、 简单查询

    简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的

    表或视图、以及搜索条件等。例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。

    SELECT nickname,email...

    文章

    范大脚脚

    2017-11-20

    900浏览量

    软件设计师12-数据库(数据操作)

    数据操作

    二目运算

    1)并   RUS

    R U S={t|t∈R v t∈S}

    2)差:R-S

    R-S={t|t∈R v t∉ S}

    3)交: R ∩ S

    R ∩ S={t|t∈R^t∈S}

    3)笛卡儿积

    关系运算

    1)投...

    文章

    阿墨呦

    2018-10-15

    852浏览量

    《数据库原理与应用(第3版)》——3.5 关系代数

    本节书摘来自华章出版社《数据库原理与应用(第3版)》一 书中的第3章,第3.5节,作者:何玉洁,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

    3.5 关系代数

    关系模型源于数学。关系是由元组构成的集合,可以通过关系的运算来表达查询要求,而关系代数恰恰是关系操作语言的一种传统的表示方式,它...

    文章

    华章计算机

    2017-05-02

    1598浏览量

    MySQL-简要说明

    分类

    安装发展顺序分为:

    网状型数据库

    层次型数据库

    关系型数据库

    面向对象数据库

    主流:关系型数据库

    关系型数据库

    事务transaction:

    多个操作被当作一个整体对待

    • ACID:     A :原子性     C :一致性     I :隔离性     D:持久性

    实体Ent...

    文章

    刘小四

    2018-07-29

    1013浏览量

    oracle数据库 总结

    数据库概念

    oracle数据库

    一组:数据文件、控制文件、日志文件

    oracle实例,它与数据库的关系

    oracle实例:实例就是数据库启动后分配的内存和建立的后台进程. 数据库关闭后,物理上的文件还存在,但实例(分配的内存和建立的进程)就没有了

    数据库:物理操作系统文件或磁盘(disk)的集合。...

    文章

    wbliu

    2013-09-26

    756浏览量

    数据库(mysql oracle)学习小结

    数据库概念

    oracle数据库

    一组:数据文件、控制文件、日志文件

    oracle实例,它与数据库的关系

    oracle实例:实例就是数据库启动后分配的内存和建立的后台进程. 数据库关闭后,物理上的文件还存在,但实例(分配的内存和建立的进程)就没有了

    数据库:物理操作系统文件或磁盘(disk)的集合。...

    文章

    wbliu

    2013-09-25

    939浏览量

    SQL语法大全

    SQL语法大全

    1. ASP与Access数据库连接:

    <%@ language=VBscript%>

    <%

    dim conn,mdbfile

    mdbfile=server.mappath("数据库名称.mdb")

    set conn=server.createobject("ad...

    文章

    科技探索者

    2017-11-18

    867浏览量

    学习SQLite之路(三)

    20160616更新

    参考: http://www.runoob.com/sqlite/sqlite-tutorial.html

    1. SQLite  PRAGMA:可以用在 SQLite 环境内控制各种环境变量和状态标志。

    一个 PRAGMA 值可以被读取,也可以根据需求进行设置。

    ...

    文章

    xcywt

    2016-06-20

    503浏览量

    1-6 数据查询(下)——复杂查询

    1-6-4 多表连接查询及使用关系代数的理论查询数据

    多表连接查询是用来连接两个表的条件称为连接条件或连接谓词,其一般格式为:

    [.]   [.]

    其中比较运算符主要有:=、...

    文章

    余二五

    2017-11-15

    935浏览量

    (转)经典SQL查询语句大全

    (转)经典SQL查询语句大全

    一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addum...

    文章

    thinkyoung

    2015-09-22

    765浏览量

    MySQL 学习笔记 二

    Ø function 函数

    函数的作用比较大,一般多用在select查询语句和where条件语句之后。按照函数返回的结果,

    可以分为:多行函数和单行函数;所谓的单行函数就是将每条数据进行独立的计算,然后每条数据得到一条结果。

    如:字符串函数;而多行函数,就是多条记录同时计算,得到最终只有一条结...

    文章

    嗯哼9925

    2017-11-23

    930浏览量

    MySQL数据库常用面试题解析(100题收藏版)

    前言 MySQL数据库常用面试题解析(100题收藏版) 数据库 1. MySQL 索引使用有哪些注意事项呢? 可以从三个维度回答这个问题:索引哪些情况会失效,索引不适合哪些场景,索引规则 索引哪些情况会失效

    查询条件包含or,可能导致索引失效

    如何字段类型是字符串,where时一定用引号括起来,...

    文章

    游客x3ep55vjljc6o

    2020-09-29

    461浏览量

    云原生之数据库:《数据库最佳实践_问题诊断》

    演讲嘉宾简介:郑旦,阿里云高级数据库专家 以下内容根据演讲视频以及PPT整理而成。本次分享主要围绕以下三个方面:

    一、MySQL基本原理

    二、库表设计规范

    三、诊断实践案例

    一、MySQL基本原理

    MySQL是非常常见的数据库,适用于多种场景中的应用,其次MySQL活跃的社区使其流行度非常高。同...

    文章

    영~

    2020-06-24

    302浏览量

    Android SQLite (五 ) 全面详解(三)

    SQLite约束

    约束是在表的数据列上强制执行的规则。这些是用来限制可以插入到表中的数据类型。这确保了数据库中数据的准确性和可靠性。约束可以是列级或表级。列级约束仅适用于列,表级约束被应用到整个表。

    以下是在SQLite中常用的约束:

    NOT NULL约束:确保某列不能有NULL值。

    DEFAU...

    文章

    技术小胖子

    2017-11-14

    963浏览量

    数据仓库架构的变迁

    数据仓库架构的变迁

    作者

    digoal

    日期

    2016-11-10

    标签

    Greenplum , HAWQ , PostgreSQL , MPP , OLAP , HDFS , Hadoop

    背景

    本文是HashData发表的关于Greenplum, HAWQ的文章,内容很丰富,向作者致...

    文章

    德哥

    2016-11-24

    3533浏览量

    mysql查询

    查询有多种方式:普通查询,连接查询,子查询查询,集合查询

    1.select 查询语句具有5个子句,只有from是必须的。

    SELECT [ALL|DISTINCT|DISTINCTROW|TOP]{*|table.*|[table.]field(x)[AS alias(x)]}

    FROMtabl...

    文章

    技术小阿哥

    2017-11-27

    923浏览量

    《MySQL DBA修炼之道》——3.3 SQL基础

    本节书摘来自华章出版社《MySQL DBA修炼之道》一书中的第3章,第3.3节,作者:陈晓勇,更多章节内容可以访问云栖社区“华章计算机”公众号查看

    3.3 SQL基础

    SQL是一种高级查询语言,它是声明式的,也就是说,只需要描述希望怎么获取数据,而不用考虑具体的算法实现。3.3.1 变量MySQL...

    文章

    华章计算机

    2017-05-02

    1406浏览量

    MySql高级二

    一、库的创建、删除及修改:

    create database [if not exists] db_anme [default] [character set=''] [collate=''];

    drop database if exists db_name;

    alter database db...

    文章

    技术小甜

    2017-11-16

    657浏览量

    展开全文
  • SQL语法 自然连接 外连接 内连接

    千次阅读 2021-06-23 17:19:31
    文章目录笛卡尔积连接内连接自连接自然连接外连接左外连接右外连接区分连接自然连接 内连接内连接、外连接on 和 where 条件过滤的区别参考链接 笛卡尔积 结果集数目为多个表的所有记录数的乘积 多表关联,不加上...

    笛卡尔积

    • 结果集数目为多个表的所有记录数的乘积
    • 多表关联,不加上过滤条件,得到结果集数目的就是笛卡尔积



    连接

    内连接

    • 使用 INNER JOIN 关键字,典型的多表关联语法
    • ON 过滤条件
      在这里插入图片描述

    自连接

    • 一个表与自身做连接,通过表别名来区分
      在这里插入图片描述

    自然连接

    • 就是普通的多表关联查询,即内部连接,没有左外连接 右外连接
      在这里插入图片描述



    外连接

    左外连接

    • 有 LEFT OUTER JOIN 关键字
    • 左边的表记录全选,右边的表记录可有可没有,若右边的表没有记录,则值为NULL

    右外连接

    • 有 RIGHT OUTER JOIN 关键字
    • 右边的表记录全选,左边的表记录可有可没有,若左边的表没有记录,则值为NULL



    区分连接

    自然连接 内连接

    • 可以认为是同一个东西

    内连接、外连接

    • 都可以用 ON 关键字做提前过滤,来减小关联的数据集大小,再用where关键字
    • 例如
      • 对每个客户下了多少订单进行计数,包括那些至今尚未下订单的客户
      • 对于客户表A,订单表B,此时应该使用左外连接,即 A LEFT OUTER JOIN B

    on 和 where 条件过滤的区别

    • on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录
    • where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

    简单来说,在使用INNER JOIN时会产生一个结果集,WHERE条件在这个结果集中再根据条件进行过滤,如果把条件都放在ON中,在INNER JOIN的时候就进行过滤了。

    • 例如

    例子1

    SELECT *
             FROM A
          INNER JOIN B
              ON B.ID = A.ID
              AND B.State = 1
          INNER JOIN C
              ON B.ID = C.ID
    


    例子2

    SELECT *
             FROM A
          INNER JOIN B
              ON B.ID = A.ID
          INNER JOIN C
              ON B.ID = C.ID
             WHERE B.State = 1
    
    • 例子1,在联查B表时,就把状态不等于1的忽略掉了,这样对于状态不等于1的就不需要去联查C表了
    • 例子2,则不管B的状态是否满足,都去联查C,最后再将B状态满足的查出来



    参考链接

    MYSQL 必知必会

    一个破名想半年 | sql语句中join on和where用法的区别和联系

    展开全文
  • ????这里是数据库加油站 ????如果对你有帮助,给博主一个免费的点赞以示鼓励 ...文章目录内连接自然连接和等值连接的区别内连接的实现方式外连接左连接右连接全连接 ...从数学的角度讲就是求两个表的交集,从...自然连接

    🔎这里是数据库加油站
    👍如果对你有帮助,给博主一个免费的点赞以示鼓励
    欢迎各位🔎点赞👍评论收藏⭐️

    数据库版本:mysql8。0.27
    如果以下代码执行有问题欢迎留言,一起探讨

    内连接

    • 内连接INNERJOIN是最常用的连接操作。从数学的角度讲就是求两个表的交集,从笛卡尔积的角度讲就是从笛卡尔积中挑出ON子句条件成立的记录。
    • 在我看来内连接和等值连接差不多,自然连接是内连接中的一个特殊连接

    自然连接和等值连接的区别

    什么是自然连接?

    • 自然连接(Naturaljoin)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。

    什么是等值连接?

    • 等值连接是关系运算-连接运算的一种常用的连接方式。是条件连接(或称θ连接)在连接运算符为“=”号时,即θ=0时的一个特例

    举例分析
    表aaa
    在这里插入图片描述
    表bbb:
    在这里插入图片描述

    查询表aaa和表bbb中属性C B D相等的数据
    等值连接查询:

    SElect*from aaa,bbb WHERE aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E 
    

    结果:在这里插入图片描述
    自然连接查询:

    -- 自然连接用关键字 natural join
    SELECT*from aaa natural join bbb;
    

    结果:
    在这里插入图片描述
    由上面两个结果可以看出,等值连接就是从两个表数据的交集中取指定值相等的数据。而自然连接就是取两个表中相同属性,并且值相等的数据,而且消除了相同属性列。

    内连接的实现方式

    第一种:where

    SElect*from aaa,bbb WHERE aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E 
    

    第二种:inner join

    select*from aaa inner join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E;
    

    第三种:join

    select*from aaa join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E;
    

    第四种:STRAIGHT_JOIN

    select*from aaa STRAIGHT_JOIN bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E;
    

    后面三种效果一样,第三种可以理解为第二种的缩写。第四种和第二种主要区别是插入方式不同,第四种性能略低

    外连接

    • 外连接分为三种:左外连接,右外连接,全外连接。对应SQL:LEFT/RIGHT/FULL OUTER JOIN。

    左连接

    什么是左连接?

    • 左连接LEFT JOIN的含义就是求两个表A表和B表的交集外加左表剩下的数据。依旧从笛卡尔积的角度讲,就是先从笛卡尔积中挑出ON子句条件成立的记录,然后加上左表A表中剩余的记录

    在这里插入图片描述
    代码实现

    select*from aaa left join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E;
    

    结果
    在这里插入图片描述

    右连接

    什么是左连接?

    • 同理右连接RIGHT JOIN就是求两个表A和B表的交集外加右表B剩下的数据。再次从笛卡尔积的角度描述,右连接就是从笛卡尔积中挑出ON子句条件成立的记录,然后加上右表中剩余的记录
      在这里插入图片描述
      代码实现
    select*from aaa right join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E;
    

    结果
    在这里插入图片描述

    全连接

    • 全外连接就是求两个表A和B集合的并集。从笛卡尔积的角度讲就是从笛卡尔积中挑出ON子句条件成立的记录,然后加上左表中剩余的记录,最后加上右表中剩余的记录。另外MySQL不支持OUTER JOIN,但是我们可以对左连接和右连接的结果做 UNION 操作来实现。
      在这里插入图片描述

    代码实现:

    select*from aaa left join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E
    union 
    select*from aaa right join bbb on aaa.C=bbb.C and aaa.D=bbb.D and aaa.E=bbb.E
    

    结果:
    在这里插入图片描述

    展开全文
  • 我们今天来学习一下sql语句中的左连接右连接以及自然连接,先说结论: 左连接:以左表为主,显示左表所有的数据,右表中没有的显示null值。 右连接:以右表为主,显示右表所有的数据,左表中没有的显示null值. 内...
  • 1、自然连接(natural join) 自然连接是一种特殊的等值连接,他要求两个关系表中进行连接的必须是相同的属性列(名字相同),无须添加连接条件,并且在结果中消除重复的属性列。 select * from student NATURAL ...
  • MYSQL自然连接

    2020-12-03 09:08:01
    自然连接 目标:了解自然连接的特性,知道自然连接的使用方式。 概念:natural join,是一种自动寻找连接条件的连接查询。 重点: 1.自然连接包含自然内连接和自然外连接。 自然内连接: natural join 自然外连接...
  • 超级通俗易懂的自然连接

    千次阅读 多人点赞 2021-09-10 15:04:16
    原题:求两个关系RA和RB的自然连接,书本上的原题是这样的(有点歪,将就一下) 解题思路: 1、首先找到RA 和RB 中相同的列,是不是只有A和C两列是他们都有的; 2、我们就只看两个关系式中的A列和C列所在的行;...
  • 自然连接 natural join                 我们来看一个超级简单的例子(下面的地址单词写错了,每个图都要重改太麻烦了):         现在有两个表,一...
  • mysql 内连接、自然连接、外连接的区别

    万次阅读 多人点赞 2018-12-02 23:57:12
    内连接、自然连接、外连接的区别
  • 深入分析内连接、外连接、左连接、右连接、等值连接、自然连接和自连接之间的区别,看这篇就够了!
  • 内连接查询分为:交叉连接、相等连接、自然连接。 1.交叉连接又称为“笛卡尔连接”或“叉乘”,它是所有类型的内连接的基础 语法:SELECT *FROM 表名1 CROSS JOIN 表名2 等价于:SELECT *FROM 表名1,表名2。 注意:...
  • 自然连接分为两种:内自然连接(natural join)和外自然连接,其中外自然连接又分为左外自然连接(natural left join)和右外自然连接(rnatural right join)。注意:自然连接没有判断语句。 三、自然连接的语法...
  • 上面的等值连接进行比较的都是B属性, 但还可以进行R.B = S.E等值连接, 而自然连接只能是同名属性组 四,总结 1. 等值连接必须要有等值的条件,当条件不同时连接的结果也不相同,两个关系可以没有相同的属性...
  • MYSQL自然连接!!!

    千次阅读 2021-06-15 19:47:43
    1.自然连接 (Natural Join) 是一种特殊的内连接,它要求相连接的两张表的连接依据列必须是相同的字段(字段名相同,字段属性相同)。 2.在自然连接中两张表的所有名称相同的列都将被比较,并且在结果集中把重复的列...
  • 1、笛卡尔积:笛卡尔积的元素是元组,关系A和B的笛卡尔积可以记为(AXB),如果A为a目,B为b目,那么A和B的笛卡尔积为(a+b)列的元组集合。...2、内连接:内连接又称为普通连接或自然连接。在说自然连接...
  • 等值连接与自然连接的区别

    千次阅读 2020-12-04 23:04:20
    等值连接和自然连接相比较,正确的是 A等值连接和自然连接的结果完全相同 B等值连接的属性个数大于自然连接的属性个数 C等值连接的属性个数大于或等于自然连接的属性个数 D等值连接和自然连接的连接条件相同 等值...
  • 自然连接

    千次阅读 2017-09-05 14:15:19
    自然连接:点击打开链接 S.A=S.A c31c4 去掉c 的 c314
  • 在查询中,同时涉及两个或两个以上的表,要根据表中数据的情况作连接。 示例:查询学习课程名为‘数学’的学生学号和姓名。 select student.sno,sname ...一, 等值连接和自然连接 等值连接(连接条件...
  • 数据库连接中的等值连接、自然连接、外连接、左外连接和右外连接 源自公众号:三百八十一 连接 非等值连接:AθB是条件,从两个关系的笛卡尔积中选取符合条件的元组。 等值连接:条件是A=B 自然连接:⋈,特殊的等值...
  • 数据中的连接join分为内连接、自然连接、外连接,外连接又分为左外连接、右外连接、全外连接 表一 当然,这些分类都是在连接的基础上,是从两个表中记录的笛卡尔积中选取满足连接的记录。笛卡尔积简单的说就是一...
  • 自然连接是在广义笛卡尔积R×S中选出同名属性上符合相等条件元组,再进行投影,去掉重复的同名属性,组成新的关系。自然连接是一种特殊的等值链接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中...
  • 关于等值连接,自然连接的理解

    千次阅读 2020-11-12 17:59:02
    1. 等值连接 ...2. 自然连接 一种特殊的等值连接,可以理解为去重后的等值连接 SELECT S.StudentName AS "姓名" , R.StudentResult AS "成绩" FROM `student` AS S ,`result` AS R WHERE S.StudentNo = R
  • MySQL--自然连接的用法

    千次阅读 2019-10-15 21:48:58
    之前学习的内连接,外连接,交叉连接都是针对不同表的,本节我们学习自联结,是针对相同表的连接。 可重排列、排列、组合 我们先创建一张Products表,。在生成用于查询销售额的报表时,我们有时候会需要获得这些商品...
  • SQL中的自然连接

    千次阅读 2020-12-22 16:25:14
    自然连接 两张表中,有字段名字和类型一样的,会自然作为连接的条件 语法: select * from 表1 natural join 表2
  • 一、测试用例 其中学生表有两个属性学号(Sno)、姓名(Sname),选课表有两个属性课程号(Cno)、学号(Sno). 二、区别 ... 自然连接(natural join) ...内连接与自然连接的 区别就是保留重复的列属...
  • 自然连接和等值连接

    2019-09-27 20:05:50
    自然连接和等值连接 1、自然连接(Naturaljoin)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。而等值连接并不去掉重复的属性列。 2、自然连接:...
  • 通过具体的SQL实例,通俗易懂的搞清楚内连接、外连接、自然连接的区别,本例采用的mysql5.7版本,依次来验证软考中的自然连接考题的正确性! 建表及填数据 CREATE TABLE `r` ( `a` bigint(255) DEFAULT NULL, `...
  • 写在前面 连接是数据库算法的一个重要内容,但数据库的知识有些忘了,最近刚好需要,就又看着笔记重新整理了一遍。
  • 1、自然连接:只考虑那些在两个关系模式中都出现的属性上取值相同的元组对 natural join、join...using select A1,A2,...,An from r1 natural join r2 natural join ... natural join rn where P; select name1,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 422,439
精华内容 168,975
关键字:

自然连接

友情链接: 0002-抽油机.zip