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:大神可以纠正用法这里)

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

  • 相关阅读:
    LeetCode 226. Invert Binary Tree
    LeetCode 221. Maximal Square
    LeetCode 217. Contains Duplicate
    LeetCode 206. Reverse Linked List
    LeetCode 213. House Robber II
    LeetCode 198. House Robber
    LeetCode 188. Best Time to Buy and Sell Stock IV (stock problem)
    LeetCode 171. Excel Sheet Column Number
    LeetCode 169. Majority Element
    运维工程师常见面试题
  • 原文地址:https://www.cnblogs.com/jiuban2391/p/6609862.html
Copyright © 2011-2022 走看看