?【原文地址】http://www.cnblogs.com/myprogram/archive/2013/01/24/2874666.html
自己补充下两点
【一。内连与外连接】
1.什么时候使用连接查询:简单说来,为了满足业务的需求,我们需要将多个表中的数据集成一个结果集返回给用户。
2。用转载的文章中的两个表来说明
customerid | city |
FISSA | Madrid |
FRNDO | Madrid |
KRLOS | Madrid |
MRPHS | Zion |
?
orderid | customerid |
1 | FRNDO |
2 | FRNDO |
3 | KRLOS |
4 | KRLOS |
5 | KRLOS |
6 | MRPHS |
7 | NULL |
内连接:查询操作列与连接条件匹配的数据行
select * from customers C join orders O on c.customerid = o.customerid
customerid | city | orderid | customerid |
FRNDO | Madrid | 1 | FRNDO |
FRNDO | Madrid | 2 | FRNDO |
KRLOS | Madrid | 3 | KRLOS |
KRLOS | Madrid | 4 | KRLOS |
KRLOS | Madrid | 5 | KRLOS |
MRPHS | MRPHS | 6 | MRPHS |
select * from customers C ?left outer join orders O on c.customerid = o.customerid
?
?select * from customers C ?right ?outer join orders O on c.customerid = o.customerid
?
?
【二。from 和on 】平时写sql 语句几乎都是用的select ..from where 即使是两个表之间的连接也是这样,从来没考虑过,这样写,到底是外连接还是内连接。on和from 有啥区别。
?
?select * from customers C ?, orders O where c.customerid = o.customerid?
事实表示。这样子写,可以拆分为三部分。
(1)? from customers C ?, orders O ?默认为内连接
(2)where c.customerid = o.customerid ?执行where 子句,在(1)的结果中进行过滤
(3)select * ,执行
SELECT 子句
?
?
?