编程中遇到的SQL困惑总结
来源:互联网 发布:软件联盟 编辑:程序博客网 时间:2024/05/19 09:03
坚信唯有总结,才能真正深刻掌握知识,所以最近在逼自己写博客。
周六,大雨倾盆,是该写点东西了,特意选了一直搞的不太懂,最近略懂的SQL来写,这些内容很多做开发两三年的人也可能理解的不清楚的,可能不全,恳请大家指正。
首先,讲下SQL语句执行顺序。
举例说明:
1.select s.no,min(s.name),sum(sc.score) -------------- f
from student s left join sc on s.sno = sc .sno ----------- a
where s.class = '1405' --------------------------------------- b
group by s.sno ------------------------------------------------- c
having sum(sc.score) > 500 -------------------------------- d
order by s.sno asc; -------------------------------------------- e
通过这条sql查询出1405班所有科目总成绩大于500分所有学生,查询出的信息包括学生的学号、名字、总成绩,按学号升序排列。
执行顺序见上英文标示。
其实语序是不用记的,执行流程很容易理解:先粗略找到目标范围(a),再过滤(b、c、d),确定好目标后再处理显示效果(e、f)。
a步骤初步确定查询的数据来自student表和sc表的连接结果;
b步骤进行初步筛选,只选出1405班级的数据,考虑到sql性能,这一步要尽量将数据的范围缩小,这样后面的操作的耗时才小。
c、d步骤是进行聚合处理,将所有记录中学号相同的记录合成一条记录,基于此,合成的记录的字段不能再是合成前的具体字段,而是集体数据经过某种逻辑运算得出的结果,如表明总体、最高、最低情况的字段等。所以,如果在select后,加上sc的cno课程号这个字段,sql会报错。经过c、d步骤数据过滤完成。
e步骤对最终数据进行按学号升序排列。
f步骤标明要显示的字段集。
语序虽然很简单,这么啰嗦,也是希望能对sql执行机制有更明朗的认识。
未完待续...
- 编程中遇到的SQL困惑总结
- 编程中遇到的困惑
- asp/sql初学遇到的困惑
- 开发邮件系统中遇到的困惑
- 实习中遇到的一些困惑问题
- QT编程中遇到的问题总结
- 多线程编程中遇到的问题总结
- 一些编程中困惑的小问题
- 图象保存中遇到的问题,很困惑!
- 我在开发中遇到的管理困惑
- TinyXML使用中遇到的一个小困惑
- 学习编程的困惑
- 自学编程的困惑
- ios编程中遇到的内存漏泄问题的总结
- 网络编程中遇到的一些概念总结
- 网络编程中遇到的一些概念总结
- java编程中遇到的时区与时间问题总结
- UDP编程中遇到的一些问题总结
- (转)追MM与设计模式(23种设计模式巧妙解析,趣味理解)
- 如何是电脑实现一机多系统
- 类的加载顺序
- BestCoder Round #42
- 代码审查最佳实践
- 编程中遇到的SQL困惑总结
- C/C++中volatile关键字详解
- MAC查看端口占用情况
- grep awk find
- 从所给文档中显示出所含关键词的那一行
- php实现获取文章内容第一张图片的方法【转】
- 欧拉工程第40题:Champernowne's constant
- STM32移植uCOS-II系统(2)
- php实现获取文章内容第一张图片的方法【转】