SQL中表之间的连接
2016-07-13 22:31
423 查看
1,各种连接之间的区分
笛卡尔积(下面两种写法等价)select * from t1,t2;
select * from t1 join t2;
自然连接:在笛卡尔积的基础上筛选所有同名称属性相等的行。
select * from t1 natural join t2;
内连接:在笛卡尔积的基础上筛选两表id相等的行,与自然连接等价,并且在此连接中,on后面的and跟where等价。
select * from t1 inner join t2 on t1.id=t2.id
外连接(left,right,full):此连接中on后面的and与where是不等价的。
select * from t1 left join t2 on t1.id=t2.id and t1.name='zhang'
2,各种连接的实质
上述连接中的后三者都是在自然连接的基础上筛选而来,形成的流程如下:表t1: 表t2:
以最复杂的下面这条连接来说明:
select * from t1 left join t2 on t1.id=t2.id and t1.name='li' where t1.id<>3
流程1:得到笛卡尔积
流程2:根据t1.id=t2.id
and
t1.name='li'条件去筛选1中的结果
流程3:根据左连接的特殊性,把t1中没有匹配的行列出来,右边补null就可以了(注意:此时会把重复的行删掉,比如t2中多一行(3 wa),但最终结果只有一条(3 wang null null))
流程4:如果后面还有where语句的话就在3的基础上刷选就ok了。
相关文章推荐
- Oracle 外连接实现代码
- mysql 左连接、右连接和内连接
- SQL有外连接的时候注意过滤条件位置否则会导致网页慢
- MSSQL内连接inner join查询方法
- 深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接
- SQL的四种连接-左外连接、右外连接、内连接、全连接
- 数据库多表连接查询
- 对 const 的使用总结
- SQL 外链接操作小结 inner join left join right join
- SQL的四种连接-左外连接、右外连接、内连接、全连接
- Mysql左连接,右连接,内连接的区别
- 内连接和外连接区别总结
- 深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接
- sql 自然连接、内连接、外连接、交叉连接
- 数据库中的左外连接右外连接和内连接的区别?
- SQL的内连接与外连接
- 外连接
- 内连接,交叉连接
- 跟小博老师一起学习数据库 ——外连接
- 连接的种类详解