当前位置

网站首页> 程序设计 > 开源项目 > 程序开发 > 浏览文章

mysql 多表连接 - bean_夕阳小的奔跑

作者:小梦 来源: 网络 时间: 2024-08-11 阅读:

转载 : http://huaxia524151.iteye.com/blog/1423614
本文介绍了 内连接、外连接 例子很好

现有表R,S如下:

笛卡尔积
select * from R,S;

结果:

注:不需要任何条件。结果为两张表函数相乘(3x3=9)。

自连接

select e.empno,e.ename,m.empno,m.ename from emp e,emp m where m.mgr = e.empno;

连接类型
分为三种:交叉连接、内连接、外连接。

交叉连接 cross join
没有where子句的交叉连接将产生连接表的笛卡尔积。

select * from R cross join S;

结果:和笛卡尔积一样,如上图。

select * from R cross join S where R.C = S.C;

结果:

内连接
内连接分为三种:自然连接、等值连接、非等值连接。

自然连接 natural join:在连接条件中使用等于=运算符比较被连接列的列值,但删除连接表中重复列。

select * from R natural join S;

结果:

等值连接 :使用等于=比较连接列的列值,在查询结果中列出接连表中的所有列,包括其中的重复列。

select * from R join S where R.C = S.C;

select * from R inner join S where R.C = S.C;

非等值连接 :在连接条件中,可以使用其他比较运算符,比较被连接列的列值,如:<、>、!=等。

外连接
外连接分为三类:全外连接、左外连接、右外连接。

左外连接 left join / left outer join

select * from R left join S on R.C = S.C;

左外连接要遍历左表的所有记录,右表没有的用null表示。

右外连接 right join / right outer join

select * from R right join S on R.C = S.C;

右外连接要遍历右表所有的记录,左表没有的用null表示。

全外连接 full join / full outer join

select * from R full join S on R.C = S.C;

热点阅读

网友最爱