您的位置:首页 > 数据库 > MySQL

MySQL之SQL的连接查询

2014-10-23 10:57 531 查看
交叉连接(cross join):交叉连接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉连接也称作笛卡尔积。

EX:

select 
	o.id, o.order_number, c.id, c.name
from 
	orders o cross join customers c
where 
	o.id=1;


内连接(inner join):内连接返回链接表中符合连接条件和查询条件的数据行。(所谓的链接表就是数据库在做查询形成的中间表)。

EX:

select 
	o.id, o.order_number, c.id, c.name
from 
	customers c inner join orders o 
on 
	c.id=o.customer_id;
外连接(outer join):

外连接不但返回符合连接和查询条件的数据行,还返回不符合条件的一些行。

外连接分三类:左外连接(left outer join)、右外连接(right outer join)和全外连接(full outer join)。其中,outer关键字可省略。

三者的共同点是都返回符合连接条件和查询条件(即:内连接)的数据行。

》left join 或 left outer join:左向外连接的结果集包括LEFT OUTER子句中指定的左表的所有行,而不仅仅是连接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

EX:

select 
	o.id, o.order_number, o.customer_id, c.id, c.name
from 
	orders o left outer join customers c 
on
	c.id=o.customer_id;
》right join 或 right outer join:右向外连接是左向外连接的反向连接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

select 
	o.id, o.order_number, o.customer_id, c.id, c.name
from 
	orders o right outer join customers c 
on 
	c.id=o.customer_id;
》full join 或 full outer join:全外连接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。MySQL不支持全外连接。

附:

union:

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

select
    column_name(s) from table_name1
union
select
    column_name(s) from table_name2


参考:
http://blog.sina.com.cn/s/blog_672111bd0100n2nd.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: