【转载】SQL语句的解析过程

 【原文地址】http://www.cnblogs.com/myprogram/archive/2013/01/24/2874666.html

自己补充下两点

【一。内连与外连接】

1.什么时候使用连接查询:简单说来,为了满足业务的需求,我们需要将多个表中的数据集成一个结果集返回给用户。

2。用转载的文章中的两个表来说明

customeridcity
FISSAMadrid
FRNDOMadrid
KRLOSMadrid
MRPHSZion

 

orderidcustomerid
1FRNDO
2FRNDO
3KRLOS
4KRLOS
5KRLOS
6MRPHS
7NULL

内连接:查询操作列与连接条件匹配的数据行

select * from customers C join orders O on c.customerid = o.customerid

customeridcityorderidcustomerid
FRNDOMadrid1FRNDO
FRNDOMadrid2FRNDO
KRLOSMadrid3KRLOS
KRLOSMadrid4KRLOS
KRLOSMadrid5KRLOS
MRPHSMRPHS6MRPHS
外连接:返回的查询结果集中不仅包含符合连接条件的行,还包括左表或者右表或全部(左连接或者右连接或全连接)中所有的数据行接)中的所有数据行
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 子句

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值