【转载】SQL语句的解析过程
customeridcityFISSAMadridFRNDOMadridKRLOSMadridMRPHSZion
?
orderidcustomerid1FRNDO2FRNDO3KRLOS4KRLOS5KRLOS6MRPHS7NULL内连接:查询操作列与连接条件匹配的数据行
select * from customers C join orders O on c.customerid = o.customerid
customeridcityorderidcustomeridFRNDOMadrid1FRNDOFRNDOMadrid2FRNDOKRLOSMadrid3KRLOSKRLOSMadrid4KRLOSKRLOSMadrid5KRLOSMRPHSMRPHS6MRPHS外连接:返回的查询结果集中不仅包含符合连接条件的行,还包括左表或者右表或全部(左连接或者右连接或全连接)中所有的数据行接)中的所有数据行?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 * ,执行
?
?
?