一、视图
1、什么是视图?
2、怎样创建视图
create view 视图名称(视图列名1,视图列名2,...) as
<select 查询语句>;
create view 按性别汇总(性别,人数) as
select 性别,count(*)
from student
group by 性别;
3、删除视图、视图名称的用处
二、子查询
1、什么是子查询?
select 性别,人数
from (
select 性别,count(*) as '人数'
from student
group by 性别) as 按性别汇总;
2、子查询运行顺序
3、 in、any、all子查询
3.1 in(子查询) : 找出每个课程里成绩最低的学号
select 课程号,min(成绩) as '最低成绩'
from score
group by 课程号;
select 学号,成绩
from score
where 成绩 in (
select min(成绩)
from score
group by 课程号);
3.2 any(子查询) : 找出哪些学生的成绩比课程0002的全部成绩里的"任意一个"高
select 学号,成绩
from score
where 成绩>any(
select 成绩
from score
where 课程号='0002');
3.3 all(子查询) : 找出哪些学生的成绩比课程0002的全部成绩里的"都"高
select 学号,成绩
from score
where 成绩>all(
select 成绩
from score
where 课程号='0002');
3.4 子查询注意事项 & SQL运行顺序
三、标量子查询
1、 找出大于平均成绩学生的学号和成绩
select 学号,成绩
from score
where 成绩>(
select avg(成绩)
from score);
2、 成绩介于差生和优等生平均成绩之间的学生
select 学号,成绩
from score
where 成绩 between (
select avg(成绩)
from score
where 成绩<=60) and
(select avg(成绩)
from score
where 成绩>=80);
3、 标量子查询还可以作为列名
select 学号,成绩,(select avg(成绩)
from score) as 平均成绩
from score;
4、标量子查询的注意事项
四、关联子查询
1、找出每个课程中大于对应课程平均成绩的学生
select 学号,课程号,成绩
from score as s1
where 成绩>(
select avg(成绩)
from score as s2
where s1.课程号=s2.课程号
group by 课程号);
2、关联子查询的注意事项
3、看懂SQL报错信息