zoukankan      html  css  js  c++  java
  • SQL里 inner JOIN、 left (OUTER) JOIN 、right (OUTER) JOIN、 full (OUTER) JOIN 之间的区别

    SQL里 inner JOINleft  (OUTER) JOINright  (OUTER) JOINfull (OUTER) JOIN 之间的区别 
    
    /*  直接上例子废话不多说
        此例子里两张表之间相等的都是各自的主键
        然而大部分情况下是A表的主键和B表里的外键相等,
        所以就会存在B表里多行记录匹配A表里的一行记录
        这里仅做例子
    */
    /* 在写连接查询的时候,ON后面只跟连接条件,而对中间表限制的条件都写到WHERE子句中。 
    */
    A表(aID,aCourse,aGrade) | B表(bID,bName) aID aCourse aGrade | bID bName 01 数学 95 | 01 张三 02 语文 90 | 02 李四 03 英语 80 | 04 王五 -- inner join(等值连接取交集) 只返回两个表中联结字段相等的行 SELECT a.*,b.* FROM A a INNER JOIN B b ON a.aID = b.bID; -- a.*,b.* 可用 * 替代,INNER JOIN中间没有OUTER
    SELECT a.*,b.* FROM A a , B b WHERE a.aID = b.bID; --INNER JOIN 的简写,效果等同 -- 结果集: aID aCourse aGrade bID bName 01 数学 95 01 张三 02 语文 90 02 李四 -- left join(左联接) 返回包括左表中的所有记录以及左表与右表中联结字段相等的记录 SELECT * FROM A a LEFT OUTER JOIN B b ON a.aID = b.bID; -- OUTER可省略 -- 结果集:B表记录不足的地方均为NULL aID aCourse aGrade bID bName 01 数学 95 01 张三 02 语文 90 02 李四 03 英语 80 NULL NULL --right join(右联接) 返回包括右表中的所有记录以及右边与左表中联结字段相等的记录 SELECT * FROM A a RIGHT JOIN B b ON a.aID = b.bID;-- OUTER省略 -- 结果集:A表记录不足的地方均为NULL aID aCourse aGrade  bID bName 01 数学 95 01 张三 02 语文 90 02 李四 NULL NULL NULL 04 王五 -- full JOIN(全连接) 返回包括A,B表中的所有记录 SELECT * FROM A a FULL JOIN B b ON a.aID = b.bID;---- OUTER省略 结果集:A、B表记录不足的地方均为NULL aID aCourse aGrade bID bName 01 数学 95 01 张三 02 语文 90 02 李四 03 英语 80 NULL NULL NULL NULL NULL 04 王五 注意:MySQL Full Join的实现 因为MySQL不支持FULL JOIN,下面是替代方法 LEFT JOIN + UNION(可去除重复数据)+ RIGHT JOIN select * from A left join B on A.id = B.id (where 条件) union select * from A right join B on A.id = B.id (where条件); 上述全连接就可以在MYSQL中就可以替换成以下: SELECT * FROM A a LEFT OUTER JOIN B b ON a.aID = b.bID UNION SELECT * FROM A a RIGHT JOIN B b ON a.aID = b.bID
  • 相关阅读:
    python登录csdn并自动评论下载资源脚本
    聊聊C语言的预编译指令include
    ANSI C、ISO C、Standard C联系与区别
    我对在开发板上开发程序的一些理解
    关于CMTS设备的一些备忘
    一个简单的EJB例子
    手动部署EJB于WebLogic
    eclipse+MyEclipse+WebLogic开发简单的EJB
    我对视频“分辨率”的理解以及在电视上显示的理解
    VC win32 static library静态链接库简单示例
  • 原文地址:https://www.cnblogs.com/gqs92/p/6764437.html
Copyright © 2011-2022 走看看