- 主要内容
一. 视图
- 什么是视图?
视图中存放的是sql查询语句。使用视图时,sql运行视图里的查询语句创建出一张临时表。
2. 如何创建视图?
create view 视图名称(<视图列名1>,<视图列名2>, ……)
as
<select 查询语句>;
例:
create view 按性别汇总(性别, 人数)
as
select 性别, count(*)
from student
group by 性别;
使用视图:
select 性别, 人数
from 按性别汇总;
3. 视图有什么用?
将频繁使用的sql查询语句保存为视图
4. 注意事项
1)避免在视图中再创建视图,多重视图会降低sql的性能和效率
2)不能往视图里插入数据
二. 子查询
- 什么是子查询?
在sql查询子句中直接写定义视图的SQL查询语句 (select 中嵌套select)
运行顺序:运行子查询---得到临时表---from从临时表中查找数据
2. 如何使用子查询?
1)在from 子句中
from(子查询) as <子查询名称>
2)在where 子句中
a) in
正确答案:
/*本章关联子查询*/
select *
from score as a
where 成绩 in (
select min(成绩)
from score as b
where b.课程号= a.课程号
);
b) any、some (与比较运算符一起使用)
例:哪些学生的成绩比课程0002的全部成绩里的任意一个高呢?
select 学号, 成绩
from score
where 成绩 > any(
select 成绩
from 成绩
where 课程号= '0002'
);
c)all
例:哪些学生的成绩比课程0002的全部成绩里的都高呢?
select 学号, 成绩
from score
where 成绩 > all(
select 成绩
from 成绩
where 课程号= '0002'
);
3. 注意事项
三. 标量子查询
- 什么是标量子查询?
【注】where 中不能出现汇总函数
例:
select 学号, 成绩
from score
where 成绩 between
(select avg(成绩)
from score
where 成绩<=60) and
(select avg(成绩)
from score
where 成绩 >= 80);
2. 如何使用子查询? --任何使用单一值的地方都可以使用子查询
3. 标量子查询有什么用?
4. 注意事项
标量子查询不能返回多行
四. 关联子查询
- 什么是关联子查询?
【注】group by 可省略
2. 运行步骤:
1)先运行子查询:查找出每个课程平均成绩---只返回与当前s1课程号相同的平均成绩
2)比较成绩
【注】关联子查询一定要写在子查询里
3. 有什么用?
在每个组里进行比较
五. 函数
- sqlzoo
【注】去掉null
2.
或者:
【注】1) <> 或 != : 不等于
2)