美文网首页
SQL中的JOIN

SQL中的JOIN

作者: 娓娓道来_AJ | 来源:发表于2018-07-09 16:46 被阅读0次

        最近在学习JavaWeb的时候,对之前学过的数据库的知识又进行了一次学习。这次总结了SQL中利用JOIN进行多表查询的几种方式。JOIN主要有三种类型:内联接,外连接,交叉连接。在这三种分类中一共又拥有以下七种情况:

内连接 inner join


内连接

        仅列出两表能按照join条件连接起来的信息,其他的信息不显示。不以某一个表为基础,仅取出匹配的内容。使用SQL语句操作如下:SELECT <select_list>  FROM Table A INNER JOIN Table B ON A.key = B.key。

外连接 outer join

    (1)左外连接 left out join = left join

情况一

        显示左表的所有记录,右表符合join条件的信息显示,不符合的置空。以A表作为基础,首先取出A表中所有的数据,B表值取出与A表有关的数据。使用SQL语句操作如下:SELECT <select_list> FROM Table A LEFT JOIN Table B ON A.key = B.key。

情况二

         显示左表中符合join条件的数据(A中存在,B中不存在)。使用SQL语句操作如下:SELECT <seclect_list> FROM Table A LEFT JOIN Table B ON A.key = B.key WHERE B.key IS NULL。

    (2)右外连接 right out join = right join

情况一

        显示右表的所有记录,左表符合join条件的信息显示,不符合的置空。以B表作为基础,首先取出B表中所有的数据,A表值取出与B表有关的数据。使用SQL语句操作如下:SELECT <select_list> FROM Table A RIGHT JOIN Table B ON A.key = B.key。

情况二

         显示右表中符合join条件的数据(B中存在,A中不存在)。使用SQL语句操作如下:SELECT <select_list> FROM Table A RIGHT JOIN Table B ON A.key = B.key WHERE A.key IS NULL。

    (3)全外连接 full outer join = full join

情况一

        左右两表的信息都全部显示,符合join条件的信息显示,不符合的置空。使用SQL语句操作如下:SELECT <select_list> FROM Table A FULL OUTER JOIN Table B ON A.key = B.key。在这里也可以用左外连接和右外连接来实现这个情况的全外连接,使用SQL语句操作如下:SELECT <select_list> FROM Table A LEFT JOIN Table B ON A.key = B.key UNION SELECT <select_list> FROM Table A RIGHT JOIN Table B ON A.key = B.key。其中使用了UNION关键字用于合并与去重。

情况二

        显示两个表中特有的部分。使用SQL语句操作如下:SELECT <select_list> FROM Table A FULL OUTER JOIN Table B ON A.key = B.key WHERE A.key IS NULL OR B.key IS NULL。在这里也可以用左外连接和右外连接来实现这个情况的全外连接,使用SQL语句操作如下:SELECT <select_list> FROM Table A LEFT JOIN Table B ON A.key = B.key WHERE B.key IS NULL UNION SELECT <select_list> FROM Table A RIGHT JOIN Table B ON A.key = B.key WHERE A.key IS NULL。其中使用了UNION关键字用于合并与去重。

交叉连接 cross join

        生成两张表的笛卡儿积。得到的记录相当于两表的乘积,结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查 询条件的数据行数。使用SQL语句操作如下:SELECT <select_list>  FROM Table A CROSS Table B。

        在交叉连接后面,不可以使用ON,只能使用WHERE。

        通常来说,在大表关联的时候,建议使用inner join或者left join,不建议使用cross join或者where(先进行笛卡儿积,在进行选择,效率太低)。

相关文章

  • left join,right join,inner join,

    [left join,right join,inner join,full join之间的区别] sql中的连接查...

  • LEFT JOIN & RIGHT JOIN

    参考资料 SQL JOIN SQL INNER JOIN 关键字 SQL LEFT JOIN 关键字 SQL RI...

  • 图解SQL的JOIN

    下图是SQL中的JOIN图解

  • SQL inner join和left join on

    SQL中的查询连接有 inner join(内连接),left join(左连接),right join(右连接)...

  • left join,right join,inner join,

    sql中的连接查询有inner join(内连接)、left join(左连接)、right join(右连接)、...

  • join

    join 操作 window join 方式 代码形式 相当于sql中的stream1 join stream2 ...

  • 十六、SQL JOIN

    SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。 SQL LEFT JOIN 关键字 ...

  • 图说SQL Join

    原文:图说SQL Join 如果你也曾经被SQL语言中各种Join操作:Left Join, Right Join...

  • SQL中的JOIN

    最近在学习JavaWeb的时候,对之前学过的数据库的知识又进行了一次学习。这次总结了SQL中利用JOIN进行多表查...

  • sql中的JOIN

    两张表:STUDENT: stu_ID, stu_NAME //stu_ID为主键SU...

网友评论

      本文标题:SQL中的JOIN

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