美文网首页
SQL连接的可视化表示

SQL连接的可视化表示

作者: 吕保鑫 | 来源:发表于2021-01-13 11:37 被阅读0次

原文链接:https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins

A.jpg B.jpg Visual_SQL_JOINS_orig.jpg

1.Left JOIN (左连接)


Left JOIN.jpg

该查询将返回左表(表A)中的所有记录,而不管这些记录是否与右表(表B)中的任何记录相匹配。它还将返回右表中的任何匹配记录。这个连接写法如下:

SELECT <select_list>
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key
LEFT JOIN.jpg

2.Right JOIN(右连接)


Right JOIN.jpg

该查询将返回右表(表B)中的所有记录,而不管这些记录是否与左表(表a)中的任何记录相匹配。它还将返回左表中的任何匹配记录。这个连接写如下:

SELECT <select_list>
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key
RIGHT JOIN.jpg

3.Inner JOIN (内连接)


Inner JOIN.jpg

这是最简单、最容易理解的连接,也是最常见的连接。这个查询将返回左表(表A)中与右表(表B)中有匹配记录的所有记录。

SELECT <select_list> 
FROM Table_A A
INNER JOIN Table_B B
ON A.Key = B.Key
INNER JOIN.jpg

4.Left Excluding JOIN(左连接不包含内连接)


Left Excluding JOIN.jpg

这个查询将返回左表(表A)中所有与右表(表B)中任何记录不匹配的记录。

SELECT <select_list> 
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key
WHERE B.Key IS NULL
Left Excluding JOIN.jpg

5.Right Excluding JOIN(右连接不包含内连接)


Right Excluding JOIN.jpg

这个查询将返回右表(表B)中与左表(表A)中任何记录不匹配的所有记录。

SELECT <select_list>
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key
WHERE A.Key IS NULL
Right Excluding JOIN.jpg

6.Outer Excluding JOIN


Outer Excluding JOIN.jpg

这个查询将返回左表(表A)中的所有记录和右表(表B)中的所有不匹配的记录。我还需要使用这种类型的连接,但是我经常使用其他所有类型的连接。这个连接写法如下:

SELECT <select_list>
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key
WHERE A.Key IS NULL OR B.Key IS NULL

由于mysql不支持full join,只能通过下面代码模拟实现

SELECT  * FROM stu_movie A LEFT JOIN stu_student B ON A.cid = B.cid WHERE B.cid IS NULL UNION ALL SELECT * FROM stu_movie A RIGHT JOIN stu_student B ON A.cid = B.cid WHERE A.cid IS NULL;
Outer Excluding JOIN.jpg

7.Outer JOIN(外连接、全连接)


Outer JOIN.jpg

此联接也可以称为完整的外部联接或完整联接。这个查询将返回来自两个表的所有记录,连接来自左表(表A)的记录,这些记录与来自右表(表B)的记录相匹配。

SELECT <select_list>
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key

上面代码在mysql执行是报错的,因为mysql不支持全连接,只能用以下代码实现效果,含义是左连接+右连接+去重=全连接:

SELECT  A.cid AS A_cid,B.cid AS B_cid FROM stu_movie A LEFT JOIN  stu_student B ON A.cid = B.cid UNION SELECT  A.cid AS A_cid,B.cid AS B_cid FROM stu_movie A RIGHT JOIN  stu_student B ON A.cid= B.cid
Outer JOIN.jpg

相关文章

  • SQL连接的可视化表示

    原文链接:https://www.codeproject.com/Articles/33052/Visual-Re...

  • JavaJDBC执行语句PrepareStatement

    写在前面 获取数据库连接对象 sql语句(?表示需要给个值) 获取sql预处理对象PreparedStatemen...

  • EF Core 备忘

    模糊查询sql linq 内连接查询sql linq 左连接查询sql linq 左连接查询(连接内带条件)sql...

  • 22 SQL99语法的新特性

    SQL99 在 SQL92 的基础上提供了一些特殊语法,比如 NATURAL JOIN 用来表示自然连接。我们可以...

  • Spark数据源 —— SQL数据源

    一、Spark连接SQL数据源需要为连接器提供合适的JAR包 二、JDBC 数据源选项 属性名称说明Url表示连接...

  • jdbc 03 接口解析

    Connection 接口表示与数据库的连接 与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结...

  • Flink-SQL如何连接外部资源

    Flink-SQL如何连接外部资源 最近项目中需要把FlinkSQL对标SparkSQL做一套可视化页面,但网上针...

  • 2020-04-01

    连接两表 SOLUTION 输入 输出 解题思路SQL 连接类型SQL 中有多种不同的连接: 内连接(INNER ...

  • SQL常见面试题

    1、SQL的表连接方式有哪些?SQL中连接按结果集分为:内连接,外连接,交叉连接内连接:inner join on...

  • UML 的关系(一)

    关联 当类之间在概念上由连接关系时,类之间的连接叫做关联(association) 关联的可视化表示方法是用一条线...

网友评论

      本文标题:SQL连接的可视化表示

      本文链接:https://www.haomeiwen.com/subject/yfmioktx.html