多表查询
1、笛卡尔集
多个表查询时,不需要连接条件;所以笛卡尔集中就有数据是无效的;为了避免笛卡尔集可以在where中加入有效的连接条件。
连接n个表,至少需要n-1个连接条件。比如连接3个表,至少需要2个连接条件。
2、连接的类型
Oracle 连接:
Equijoin:等值连接
Non-equijoin:不等值连接
Outer join:外连接
Self join:自连接
3、外连接(左右连接)
希望、目的:对于某些不成立的记录,任然希望被包含在最后的结果中。
使用外连接可以查询不满足连接条件的数据,外连接的符号是(+)。
1、左连接:a.a=b.a(+);b表所有字段都显示
2、右连接:a.a(+)=b.a;a表左右字段都显示
3、全连接:
select * from dali.test1 a, dali.test2 b where a.a=b.a(+)
union
select * from dali.test1 a, dali.test2 b where a.a(+)=b.a;
4、自连接
同一张表,弄2份,以两个表中的不同列为条件连接。