一、视图(以下SQL操作都在Navicat客户端下操作)
1、什么是视图?
1.是什么? 视图存放sql查询语句,使用视图时,会运行视图里的sql查询语句创造出一张临时表;如需频繁使用一段sql查询语句时可将该查询语句创建成视图。
把sql里的查询语句写成你需要的模式,保存下来,可以变成你私人小工具。好比做饭,数据就是食物原材料,sql是一张钢板,通过钢板你可以加工原材料(铁板炒饭之类的);但是现在呢,你把钢板加工了一下,变成了锅,或者变成了菜刀,这就是视图。你可以把你加工好的视图保存,原材料可以变换,但是用刀加工过的,肯定要切碎,这就是固定视图的功能。
2.如何创建
creat view视图名称(<视图列名1,视图列名2,...>)
as<select 查询语句>;
例如:
create view 按性别汇总(性别,人数)
as
select 性别,count(*)
from studeng
group by 性别;
3.如何使用
在from子句中使用视图名称代替表名称。
select 性别,人数
from 按性别汇总;
4.怎么查看视图是否创建成功呢?
5.如何删除视图?
注意事项1:不能往视图里插入数据。。
注意事项2:避免在视图中插入视图,会降低SQL的工作效率。
二、子查询
什么是子查询:在select里面嵌套使用select.
视图是你固定使用的查询模式,而子查询是临时使用的查询模式,他们都是嵌套在查询语句里的子查询。
一般配合比较运算符+in/any/all来使用子查询。
select 列名1
from 表名
where 列名1>any(子查询);select 列名1
from 表名
where 列名1>any(
select 列名1
from 表名
where 列名1);
列举子查询例:
注意事项:
运行逻辑里它会先运行子查询。
三、标量子查询
只能返回一个固定的值是标量子查询,一般where语句后边不能直接应用函数,所以会使用标量子查询来使用
select 学号,成绩
from score
where 成绩>avg(成绩); 直接应用函数错误!select 学号,成绩
from score
where 成绩>(
select avg(成绩)
from score); 嵌套标量子查询,正确!
再举一个栗子!
查找差生和优等生中间的普通学生
任何使用单一值的地方都可以使用标量子查询。
注意事项:该子查询不能返回多行值,如果返回多行那么它就不是标量子查询了。
四、关联子查询
关联子查询,顾名思义,(关联关系)的子查询
关联子查询比较复杂,需要多多练习。
对以上子查询进行归类梳理
五、如何用SQL解决业务问题
如果再运行时候数据错误,要分段检查,先选中子查询运行,如果没问题,那么就是外面的查询语句有问题。用排除法逐一排查。
六、各种函数
函数很多,这里只列举一部分常用的函数,根据实际问题,以后百度,继续学习。
练习题
SQLZOO网站练习题
SQL Tutorial/zh - SQLZOOsqlzoo.net谢谢阅读!有疑问请留言,看到会回复你。