目录:
1.视图
2.子查询
3.标量子查询
4.关联子查询
5.如何用sql解决业务问题
6.各种函数
如何学习:
1.是什么?2.如何用?3.有什么用?4.注意事项
一.视图
视图中存放的是sql查询语句,在使用视图时会运行sql语句,产生一张临时表,当客户端与数据库的链接断开之后,这个临时表就会自动删除
如何创建视图?
create view 视图名称(视图列名1,视图列名2,...)
as
select 查询语句;

以后想使用视图的时候,直接在from后面加上视图名称就可以了,并且原表更新数据后,视图也会更新数据。
使用视图的好处:
1.频繁使用的sql语句可以保存为视图,提高效率
2.数据会自动更新,保证数据的最新状态
3.不需要保存数据,节省存放数据的空间
注意事项:
1.避免在视图基础上再创建视图,会降低运行效率
2.不能往视图里插入数据


二.子查询
筛选条件从数据表中来,比如成绩大于平均成绩,需要用到子查询;

1——子查询语句,就是select语句
2——子查询的名称(每个派生表都需要有别名,所以2是必须的)
子查询可以在where语句中使用:
in(子查询)
any(子查询)
all(子查询)
in(子查询)

分析思路:
First.每个课程成绩最低是内部条件,所以先写成子查询语句
select 课程号,min(成绩) from score group by 课程号;

Second.以这个临时表中的最低成绩为in的范围,查询学号
select 学号, 成绩from score where 成绩 in (select min(成绩) from score group by 课程号);

any(子查询)
需要与比较运算符一同使用; any=some;

例子:


All(子查询)

总结:
偶尔使用,就运用子查询
频繁使用,就保存成视图
子查询注意事项:
1.加减乘除放前面 2.层层嵌套要避免 3.子查询别名勿省略

SQL运行顺序:

标量子查询
必须返回一行一列的结果(单一的值)称为标量子查询
大于平均成绩学生的学号和成绩
错误:select 学号,成绩 from score where 成绩>avg(成绩) ×
正确:select 学号,成绩 from score where 成绩>(select avg(成绩) from score); √


标量子查询的返回值是单一值,所以可以和比较运算符一起使用

标量子查询在列名中使用,每一行都会返回结果

关联子查询
查询出每个课程中大于对应课程平均成绩的学生

一行一行对应得查:

关联要写在子查询里面:

子查询,标量子查询,关联子查询,视图的三者适用范围:
偶尔使用需要多行数据——子查询
偶尔使用需要单一值——标量子查询
偶尔使用需要在每个组里进行比较——关联子查询
经常使用——视图
如何用SQL解决业务问题
1.翻译成大白话
2.写出分析思路
3.写出对应的sql子句
函数
1.汇总函数
count(列名) 求某列的行数,count(*)
sum(列名) 对某列数据求和,只能对数值类型的列计算
avg(列名) 求某列数据的平均值,只能对数值类型的列计算
max(列名) 求某列数据的最大值
min(列名) 求某列数据的最小值
2.算数函数
round(数值,保留小数的位数) round(6666.66,1) 结果6666.6 round(6666.66,-1) 结果6670
abs(数值) abs(-100) 结果 100
mod(被除数,除数) mod(5,2)结果1
3.字符串函数

4.日期函数

本文介绍了SQL查询中的视图、子查询和关联子查询的使用方法。视图可以保存频繁使用的SQL语句,提高效率,但不能用于插入数据。子查询包括in、any、all等操作,适用于不同场景。关联子查询则用于在每个组内进行比较。理解这些概念有助于解决复杂的业务问题。
2176

被折叠的 条评论
为什么被折叠?



