转载自:http://blog.csdn.net/xukun5137/article/details/51722960
在学习mybatis,发现数据库这块学的不好,又找资料学习一下。发现这篇讲内连接外连接的还不错,就转载过来了,顺便添加点自己学到的内容(SQL查询艺术一书)。
首先建立两张表A、B。
表A:
Aid:int类型,无符号递增,主键
name:varchar类型
表B:
Bid:int类型,无符号递增,主键
name:varchar类型
age:int类型
- 内连接(INNER JOIN)
- JOIN默认为INNER JOIN
利用内连接可获取两表的公共部分的记录。会显示两张表匹配的所有列信息
select * from A JOIN B ON A.name=B.name
- 外连接
外连接分为两种,左连接(Left JOIN)和右连接(Right JOIN)
- 左连接(Left JOIN)
- 左外连接=内连接+左边表中失配的元组
select * from A Left JOIN B ON A.name=B.name
- 右连接(Right JOIN)
- 右外连接=内连接+右边表中失配的元组
select * from A Right JOIN B ON A.Aid=B.Bid
全外连接(FULL OUTER JOIN)
全外连接=内连接+左边表中失配的元组+右边表中失配的元组
- 交叉连接(CROSS JOIN)
有两种,显式的和隐式的,不带ON子句,返回的是两表的乘积,也叫笛卡尔积。
- 显式:
select A.*,B.* from A CROSS JOIN B ON A.name=B.name
- 隐式:
select A.*,B.* from A ,B WHERE A.name=B.name