SQL多表连接查询
一、多表连接
表间连接可分为:左连接、右连接、全外连接。
1、左连接 left join 或 left outer join
SQL语句:select * from 表1 left join 表2 on 表1.条件字段=表2.条件字段
左外连接包括left join左表所有行。假设左表中某行在右表没有匹配,则结果中相应行右表的部分所有为空(NULL),查询结果的行数一般大于或等于左表数据的行数,具体要看左右表的条件字段是一对一还是一对多。
2、右连接 right join 或 right outer join
SQL语句:select * from 表1 right join 表2 on 表1.条件字段=表2.条件字段
右外连接包括right join右表所有行,假设左表中某行在右表没有匹配,则结果中相应左表的部分所有为空(NULL)。
3、全然外连接 full join 或 full outer join
SQL语句:select * from 表1 full join 表2 on 表1.条件字段=表2.条件字段
全外连接包括full join左右两表中所有的行,假设右表中某行在左表中没有匹配,则结果中相应行右表的部分所有为空(NULL),假设左表中某行在右表中没有匹配,则结果中相应行左表的部分所有为空(NULL)。
二、内连接 join 或 inner join
SQL语句:select * from 表1 inner join 表2 on 表1.条件字段=表2.条件字段
inner join 是比較运算符,仅仅返回符合条件的行,相当于:select * from 表1,表2 where 表1.条件字段=表2.条件字段
三、交叉连接 cross join
没有 WHERE 子句的交叉联接将产生连接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。
SQL语句:select * from 表1 cross join 表2
假设我们在此时给这条SQL加上WHERE子句的时候比方SQL:select * from 表1 cross join 表2 where 表1.条件字段=表2.条件字段,此时将返回符合条件的结果集。