内连接、左外连接、右外连接、交叉连接及其区别

来源:互联网 发布:淘宝开通花呗要求什么 编辑:程序博客网 时间:2024/06/01 13:14

转载自:http://blog.csdn.net/xukun5137/article/details/51722960

在学习mybatis,发现数据库这块学的不好,又找资料学习一下。发现这篇讲内连接外连接的还不错,就转载过来了,顺便添加点自己学到的内容(SQL查询艺术一书)。

    首先建立两张表AB

    A

    Aidint类型,无符号递增,主键

    namevarchar类型


    B

    Bidint类型,无符号递增,主键

    namevarchar类型

    ageint类型


     

    1. 内连接(INNER JOIN
    2. JOIN默认为INNER JOIN

    利用内连接可获取两表的公共部分的记录。会显示两张表匹配的所有列信息

    select * from A JOIN B ON A.name=B.name


    1. 外连接

    外连接分为两种,左连接(Left JOIN)和右连接(Right JOIN)

    1. 左连接(Left JOIN)
    2. 左外连接=内连接+左边表中失配的元组

    select * from A Left JOIN B ON A.name=B.name


    1. 右连接(Right JOIN)
    2. 右外连接=内连接+右边表中失配的元组

    select * from A Right JOIN B ON A.Aid=B.Bid


    全外连接(FULL OUTER JOIN)

    全外连接=内连接+左边表中失配的元组+右边表中失配的元组


    1. 交叉连接(CROSS JOIN)

    有两种,显式的和隐式的,不带ON子句,返回的是两表的乘积,也叫笛卡尔积。

    1. 显式:

    select A.*,B.* from A CROSS  JOIN B ON A.name=B.name


    1. 隐式:

    select A.*,B.* from A ,B WHERE A.name=B.name


阅读全文
1 0