首页 > 数据库技术 > 详细

sql思维

时间:2015-09-22 18:47:18      阅读:300      评论:0      收藏:0      [点我收藏+]

写sql的思路不同于常规编程语言(C、python)等等。前者,考虑如何一步步地得到最终答案;后者,考虑如何一步步地收缩数据范围。

简而言之,前者是面向过程化(for each row do x),后者是面向集合(do all -> another all)。

 

具体来讲,写sql从两种角度考虑:

一、集合

  1. 首先考虑,要得到正确结果,需要把哪些表,以何种形式连接起来;
  2. 对连接之后的大集合,做怎么样的过滤 (where、having)
  3. 根据需要做出合适的投影 (select)
  4. 可能需要重复前面三步
select T1.x, T1.y 
from T1 left outer join T2
where T1.z = T2.z

 

二、子查询

sql语句的任意一部分(select、from、where、having)都可以用子查询去做,比如

select:这地方的子查询必须是标量子查询(明确返回只有一个值的集合,如sum(x)等)

from:select x from (select ...) tmp_table ...

where: exist(select ...)、 in (select ...)

having:比较符号(〉〈)后面跟的,肯定也只能是标量子查询

 

参考资料:http://www.ituring.com.cn/article/472

 

sql思维

原文:http://www.cnblogs.com/johnchow/p/4829246.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!