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

转载自: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

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