一、视图
如何创建视图?
create view视图名称(<视图列名1>,<视图列名2>,...)
as <select 查询语句>;
二、子查询
四个子查询应用:in,any,all,between
注意事项
1.all前面不要加运算符
2.子查询语句中最好不要层层嵌套
3.注意子查询的命名方便后期查看
三、标量子查询
from语句后面不能应用聚合函数,可在from字句中直接写定义视图的sql查询语句,运行时先运行子查询部分。
注意⚠️:该子查询绝对不能返回多行结果。如果子查询返回了多行结果,那么它就不再是标量子查询,只是一个普通子查询,因此不能被用在=或者
<>等需要单一输入值的运算符当中,也不能用在Select等子句当中。
四、关联子查询
用于在每个组里进行比较
关联条件需要写在子查询语句当中
作业
第1题
select name from world where population>
(select population from world where name='Russia')
第2题
select name from world where continent='Europe' and GDP/population>
(select GDP/population from world where name='United Kingdom')
第3题 在运算符in里使用子查询
select name,continent from world where continent in
(select continent from world where name='Argentina' or name='Australia')
order by name
第4题 如何运用between 使用标量子查询
select name,population from world where population between
(select polulation from world where name='Canada')+1 and
(select population from world where name='Poland')-1;
注意:边界值!!!
第6题
select name from world where GDP>all
(select GDP from world where continent='Europe' and GDP>0);
第8题
select continent,name from world as x
where name<=all(select name from world as y
where x.continent=y.continent
group by continent)
注:<=all 可查询出按字母排序首位的国家
第9题
select name,continent,population from world as x
where 25000000>=all(select population from world as y
where x.continent=y.continent
group by continent)
第10题
select name,continent from world as x
where population>=all(select 3*population from world as y
where x.continent=y.continent and x.name<>y.name
group by continent)
第10题中 x.name<>y.name 这一条主要是为了排除自己