笛卡尔积
两表连接时未使用连接条件,导致第一个表的所有行都连接到第二个表所有行上,会形成笛卡尔积
=================================================
外连接
符号(+),左外连接和右外连接
左外连接,外连接操作符实际上是写在了等于操作符右边
就应该这样写条件:where t1.col1 = t2.col2(+)
反之,右外连接亦同
注意:不能两端同时写连接符号(+);
不能同时使用外连接条件和IN操作符
不能同时使用外连接条件和OR操作符
==================================================
使用USING关键字简化连接
注意:查询必须是等连接的
等连接中的列必须同名
例如:select p.name,pt.name from products p innner join product_types pt
using(product_type_id);
如果还希望看到外键的值,那么该字段不用加别名或表名
select p.name,pt.name,product_type_id from products p innner join product_types pt using(product_type_id);
假设有表t1,t2,如果存在:
select ...from t1 inner join t2 on t1.col1 = t2.col1 and t1.col2 = t2.col2;
那么可简写如下:
select ...from t1 innner join t2 using(col1,col2)
==================================================
left outer join
right outer join
full outer join