left join,inner join,right join,cross join,full join的区别
inner join
只返回两张表连接列的匹配项
left join
第一张表的连接列在第二张表中没有匹配是
,
第二张表中的值返回
null
right join 第二张表的连接列在第一张表中没有匹配是 第一张表中的值返回 null
right join 第二张表的连接列在第一张表中没有匹配是 第一张表中的值返回 null
cross join 是笛卡儿乘积就是一张表的行数乘以另一张表的行数,返回结果的行数为2个表行数乘积
例:
[TEST@ORA1] sql>select * from a; 编号 姓名 ---- ---------- 1000 张三 2000 李四 3000 王五 [TEST@ORA1] sql>select * from b; 编号 商品 ---- ---------- 1000 电视机 2000 录像机 4000 自行车 [TEST@ORA1] sql>set null 空值--这里为了显示方面我把NULL定义成了[空值] [TEST@ORA1] sql>select a.*,b.* from a inner join b on a.编号=b.编号; 编号 姓名 编号 商品 ---- ---------- ---- ---------- 1000 张三 1000 电视机 2000 李四 2000 录像机 [TEST@ORA1] sql>select a.*,b.* from a left join b on a.编号=b.编号; 编号 姓名 编号 商品 ---- ---------- ---- ---------- 1000 张三 1000 电视机 2000 李四 2000 录像机 3000 王五 空值 空值 [TEST@ORA1] sql>select a.*,b.* from a right join b on a.编号=b.编号; 编号 姓名 编号 商品 ---- ---------- ---- ---------- 1000 张三 1000 电视机 2000 李四 2000 录像机 空值 空值 4000 自行车 [TEST@ORA1] sql>select a.*,b.* from a full join b on a.编号=b.编号; 编号 姓名 编号 商品 ---- ---------- ---- ---------- 1000 张三 1000 电视机 2000 李四 2000 录像机 3000 王五 空值 空值 空值 空值 4000 自行车