![bfd550b89e1d11fba0b46f8ac7b9907c.png](https://i-blog.csdnimg.cn/blog_migrate/362186e4be03d115ffe54ecdeaf4de6d.jpeg)
1.视图
什么是视图?
视图中存放的是SQL查询语句,使用视图时,会运行视图里的SQL查询语句创建出一张临时表
如何创建视图
create view 视图名称 (<视图列名1>,<视图列名2>)
as
<select查询语句>;
注意事项
(1)避免在视图的基础上再创建视图
(2)不能往视图里插入数据
练习
![10d5389fa87004f065a2efc7fcef39ae.png](https://i-blog.csdnimg.cn/blog_migrate/d580d9ba073b725d8f99b1790e0e5a14.png)
![92071eb0f90ddb370e6047c1b81a3a64.png](https://i-blog.csdnimg.cn/blog_migrate/7509383b2097db4e3ba9434ebbd96fea.png)
2.子查询
什么是子查询?
in(子查询),any(子查询),all(子查询),在SQL中嵌套另一个SQL。
SQL运行顺序
1.先运行子查询
2.再运行查询语句的运作顺序
注意事项
(1)
- a>3*all(b) 错误
- a/3>all(b) 正确
all(b)是一堆数据的集合
(2)子查询避免多层嵌套
(3)select from 子查询可以省略as子查询名称
练习
例一:找出每个课程里,成绩最低的学号 in(子查询)
#第一步:查找出每门课程的最低成绩有哪些值
select min(成绩)
from course as b
where b.课程号 = a.课程号;
#第二步:在成绩表里查找这些值对应的学号
select *
from course as a
where 成绩 =(80,60,80);
#最终SQL语句
select *
from course as a
where 成绩 = (
select min(成绩)
from course as b
where b.课程号 = a.课程号);
![c3000f28e80e816c861bb5f5df4f41b2.png](https://i-blog.csdnimg.cn/blog_migrate/481b78415fb11f0ee8c55617c3541dce.png)
例二:哪些学生的成绩比课程0002的全部成绩里的任意一个高呢?
#第一步:查找出课程0002的全部成绩
select 成绩
from course
where 课程号=0002;
#第二步比任意一个高any(子查询)
select 学号,成绩
from course
where 成绩 > any (子查询);
#最终SQL语句
select 学号,成绩
from course
where 成绩 > any (
select 成绩
from course
where 课程号=0002
);
![f218cc6606612b00e5fb93de5db00e8b.png](https://i-blog.csdnimg.cn/blog_migrate/db4315f31576a7e0b8920b6ddb4b31aa.png)
例三:哪些学生的成绩比课程0002的全部成绩里的都高呢?
#第一步:查找出课程0002的全部成绩
select 成绩
from course
where 课程号=0002;
#第二步比全部都高 all(子查询)
select 学号,成绩
from course
where 成绩 > all (子查询);
#最终SQL语句
select 学号,成绩
from course
where 成绩 > all (
select 成绩
from course
where 课程号=0002
);
![534ecdff05781f76775d2f153054c415.png](https://i-blog.csdnimg.cn/blog_migrate/8e63abe8aacba1b8410a1ff3938ce9bc.png)
3.标量子查询
什么是标量子查询?
返回的是单一值的子查询
注意事项
标量子查询不能返回多行结果,多行结果不能用在比较运算符
练习
例一:大于平均成绩学生的学号和成绩
select 学号,成绩
from course
where 成绩 > (
select avg(成绩)
from course
);
![aa13e0628660529e11975d0146fe8359.png](https://i-blog.csdnimg.cn/blog_migrate/dadd6f520a5ce6481ce2f32031032dd8.png)
例二:处于差生和优等生之间的学生的学号和成绩
select 学号,成绩
from course
where 成绩 BETWEEN (
select avg(成绩)
from course
where 成绩 <=60) and
(select avg(成绩)
from course
where 成绩 >=80)
;
![805cc975b9841c812bb68544ae45a2d5.png](https://i-blog.csdnimg.cn/blog_migrate/ca4a802651438fbe884f9048ac971d27.png)
例三:标量子查询不一定用在where,还可以用在select
![8c2839a7d0b33ee2d1af184c6112f20c.png](https://i-blog.csdnimg.cn/blog_migrate/e805517b0bcf344f4bdddabb22cf53c5.png)
关联子查询
用于每个组里进行比较
练习
例一:查找出每个课程中大于对应课程平均成绩的学生
select 学号,课程号,成绩
from course as s1
where 成绩 >(select avg(成绩)
from course as s2
where s1.`课程号` =s2.`课程号` #关联条件 s2仅在子查询里有效
GROUP BY 课程号
);
![f22da7fe179cf2194c37152dbbc67807.png](https://i-blog.csdnimg.cn/blog_migrate/aec995e3b0adbba445322d75ae2545b2.png)
如何用SQL解决业务问题
1.翻译成大白话
2.写出分析思路
3.写出对应SQL子句
如何看懂SQL报错信息
先看子查询然后逐一排查
各种函数
![a4bfd3c19615d7cdde555bccaaaa6cfe.png](https://i-blog.csdnimg.cn/blog_migrate/af818e54b055eb210ac6bc33bed02d29.jpeg)
![49db489815841ed511ee9aa336612f0d.png](https://i-blog.csdnimg.cn/blog_migrate/c83807a6521cb616a22bb27118c16a60.jpeg)
![034f2bb69b7c95a5e46e6d6f4360b62f.png](https://i-blog.csdnimg.cn/blog_migrate/697a7812ea70c90ca680c469e951d940.jpeg)
sqlzoo练习
![088803f410d9753932e6b7caff5131f0.png](https://i-blog.csdnimg.cn/blog_migrate/1e50cf88e799ac9cdb9fdf2108da6d02.jpeg)
![bd8ba921f50e9e96d7fb0001c480ab46.png](https://i-blog.csdnimg.cn/blog_migrate/400d11266d98479ccd708d1a7d8df88d.jpeg)
![09e7b618037e3d2567c00a0443711e61.png](https://i-blog.csdnimg.cn/blog_migrate/d54d1c30cd209f8786f3b46b141b6990.jpeg)
![5ec153c77f1d0be6dcf949f33d5fb5f1.png](https://i-blog.csdnimg.cn/blog_migrate/4b11dd2ba400bceb03750c47d010b590.jpeg)
![98778707d1b68e106b73c368eb81466a.png](https://i-blog.csdnimg.cn/blog_migrate/dfc04137b336a7e7ffc299c8302fde09.jpeg)
![a76a6f10c2ccf9b57db6b9c96914aeb9.png](https://i-blog.csdnimg.cn/blog_migrate/1df5d793900d77860263acf0f93bcf8e.jpeg)
![5841d48d8fac26dc9330728efbeefec1.png](https://i-blog.csdnimg.cn/blog_migrate/414b8def09bc2155ac9af7e2c43e1fe5.jpeg)
![66a6e84973b574b640b71b51f46b39d5.png](https://i-blog.csdnimg.cn/blog_migrate/05f5e7b337193acb6e3d2d824d6d75ac.jpeg)
![37933dd22e48d8f303e1bedb8621ab1a.png](https://i-blog.csdnimg.cn/blog_migrate/416f747fcc28c9baaba1a5a4de7a11b0.jpeg)
![8d81b1af256420b1037a22b8ff9f60fc.png](https://i-blog.csdnimg.cn/blog_migrate/41017027e04b5d74ecd7d5f00122773b.jpeg)