知识框架
1 视图
1.1视图概念
视图中存放的是sql查询语句,在使用视图时会运行sql语句,产生一张临时表(不是保存在数据库中的),当客户端与数据库的链接断开之后,这个临时表就会被自动删除。
1.2如何创建视图
create view 视图名称(<视图列名1>,<视图列名2>,...)
as
select <查询语句>;
1.3使用视图的好处:
1.频繁使用的sql语句可以保存为视图,提高效率
2.数据会自动更新,保证数据的最新状态
3.不需要保存数据,节省存放数据的空间
1.4 注意事项
1.避免在使用视图的基础上再使用视图,降低sql 性能和效率;
2.不能往视图里插入数据,会报错。
2 子查询
2.1子查询--in
问题1:找出每个课程里面成绩最低的学号 topN问题
2.2子查询--any
问题2:哪些学生的成绩比课程0002的全部成绩里的任意一个高呢
2.3子查询--all
问题3:哪些学生的成绩比课程0002的全部成绩里都高?
子查询注意事项
3.标量子查询
3.1 问题 :查询大于平均成绩学生的学号和成绩
3.2使用意义
需要单一值的时候就可以使用标量子查询 。标量子查询的返回值是单一值,所以可以和比较运算符(in,all,between)一起使用 来实现复杂的查询 。注意区别 子查询返回多行 是普通子查询
3.3注意点
除了where子句,任何可以输出单一值的位置都可以用标量子查询
select 语句中不能出现返回多行的标量子查询语句
4.关联子查询
4.1 问题 :查找每个课程中大于对应课程平均成绩的学生
5. 函数
5.1汇总函数 : SQL汇总分析
5.2算术函数
5.3字符函数
5.4日期函数
6.总结
低频次使用:
需要多行数据——子查询
使用单一值——标量子查询
需要在每个组里进行比较——关联子查询
高频次使用:视图
7.拓展训练
SELECT within SELECT Tutorial/zhsqlzoo.net