zoukankan      html  css  js  c++  java
  • SQL中join的用法

    直接举例说明各种方法:

    CREATE table A
    (
    id int,
    name varchar(200)
    )
    CREATE table b
    (
    id int,
    name varchar(200)
    )
    
    INSERT INTO b VALUES(1,'张三')
    INSERT INTO b VALUES(2,'李四')
    INSERT INTO b VALUES(3,'王五')
    INSERT INTO b VALUES(4,'马六')
    INSERT INTO b VALUES(5,'冯七')
    
    INSERT INTO a VALUES(1,'赵八')
    INSERT INTO a VALUES(2,'张三')
    INSERT INTO a VALUES(3,'冯七')
    INSERT INTO a VALUES(4,'田九')
    INSERT INTO a VALUES(5,'凌十')

    第一种Inner join

    解释:产生的结果是A和B的交集(相同列里面的相同值)内连接是最常见的一种连接,它也被称为普通连接,只连接匹配的行(仅对满足连接条件的CROSS中的列)。它又分为等值连接(连接条件运算符为"=")和不等值连接(连接条件运算符不为"=",例如between...and)。

    SELECT *FROM b INNER JOIN A
    on b.name=A.name

    第二种Full Outer Join

    解释:产生的结果是A和B的并集(如果没有相同的值会用null作为值)。FULL JOIN 会从左表和右表那里返回所有的行。如果其中一个表的数据行在另一个表中没有匹配的行,那么对面的数据用NULL代替

    SELECT * FROM b FULL OUTER JOIN A
    on b.name=A.name

    第三种Left outer join

    解释:产生表B的完全集,而A表中匹配的则有值(没有匹配的则以null值取代)。LEFT JOIN返回左表的全部行和右表满足ON条件的行,如果左表的行在右表中没有匹配,那么这一行右表中对应数据用NULL代替。

    SELECT * FROM b Left outer join A
    on b.name=A.name

    第四种Right Outer Join

    解释:参考第三种Left outer join

    SELECT * FROM b Right Outer Join A
    on b.name=A.name

    第5种cross join

    解释:cross对两个表执行笛卡尔乘积。它为左表行和右表行的每种可能的组合返回一行。返回(左表行数*右表行数)行的表。ps:很少用到这个语法。注意如果不是使用嵌套的select语句,一般系统都会产生笛卡尔乘积然再做过滤。这是对于性能来说是非常危险的,尤其是表很大的时候。

    SELECT * FROM b  cross join A

    特殊:Natural Join(oracle的用法,sqlserver里面不支持这种写法。ps:大神可以纠正用法这里)

    解释:自然连接是一种特殊的等值连接,在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。

  • 相关阅读:
    eclipse maven POM 第一行提示异常Could not initialize class org.apache.maven.plugin.war.util.WebappStructureSerializer
    Tomcat搭建HTTP文件下载服务器
    Hui datetimepicker 插件不显示左右箭头问题
    【Python】拷贝&列表
    【Python】Python赋值引用、浅拷贝、深拷贝
    【Python】列表的复制
    【Python】电脑安装了多个版本Python,如何切换;
    【Python】定义类、创建类实例
    【Python】白名单方式净化
    c++ 对外提供头文件的模式
  • 原文地址:https://www.cnblogs.com/jiuban2391/p/6609862.html
Copyright © 2011-2022 走看看