sql视图查询对象无效_SQL数据分析 - 4 复杂查询

一、视图

视图中存放的是sql查询语句,而非数据。使用视图时,会运行视图里的sql查询语句创建出一张临时表

创建视图语句:

create view 视图名称(<视图列名1>,<视图列名2>,...)

as

<select 查询语句>;

例题:

c8b14ed0c43aae0120fa02f62a63de05.png

注意:sql查询语句中列的顺序和视图中列的顺序是一一对应的,它们列的名称可以不一样,但是对应关系是一一对应的。

使用视图的注意事项:

  1. 避免在视图的基础上再创建视图,多重视图会降低sql的性能和运行效率
  2. 不能往sql里插入数据,否则会报错

二、子查询

子查询可以被看成是一个临时表,在sql语句运行结束后临时表就消失了。

sql运行顺序:先运行子查询

ab4d9f0cadd88ee152a7c30afa32325b.png

子查询除了放到如上图所示的from子句中,也可以放到where子句中,与运算符in, any, all一起使用,从而构建出复杂的查询条件。使用方法是在in, any, all括号里面放入子查询。

与in关键字一起使用:找出每个课程里成绩最低的学号

776e45ad0e2bcb95a2fcf2d3c2d3adff.png

与any关键词一起使用:哪些学生的成绩比课程0002的全部成绩里的任意一个高呢?

...any(子查询)与some(子查询)相同:

select 列名1

from 表名1

where 列名1>any(子查询)

28eb10487edffb3efe0c2a042dd517cb.png

与all关键词一起使用:哪些学生的成绩比课程0002的全部成绩里的都高呢?

b10ce08cc869bd3bd46c26b82c12de48.png

三、标量子查询

标量子查询返回的是一个一行一列的数值。当需要单一值的时候,就可以使用标量子查询来获取到。

例题:大于平均成绩学生的学号和成绩

98aa14fe38176704300e67593c0b2f30.png

例题:查找成绩介于差生(成绩<=60)平均分和优等生(成绩>=60)平均分之间的学生的学号和成绩

2d9d4fd7b21f17d908eed9c5bddef6bb.png

通常任何使用单一值的情况都可以使用标量子查询:

6534328ed982cbc16de29ddb9958374a.png

四、关联子查询

使用关联子查询的场景:当每个组里进行比较的时候使用关联子查询。关联子查询是在子查询里面有了一个关联条件。

例题:查找出每个课程中大于对应课程平均成绩的学生

516798aac389dd95e6f4800d5ff5246f.png

关联子查询中起到关键作用的是关联条件。在上面这道例题中子查询部分有一个where子句的条件就是关联条件,这个条件的意思是按课程号对成绩表(score)分组,同一组里的数据和这一组里的平均成绩去比较,由于作为比较对象的是同一张表score,为了进行区别分别使用了s1和s2两个别名。在使用关联子查询的时候,需要取表的别名去使用表里的列名。

注:1. 子查询里的关联条件保证了子查询返回的是当前组的数据

2. 关联条件一定要写在子查询里面

五、如何用SQL解决业务问题

  1. 翻译成大白话
  2. 写出分析思路
  3. 写出对应的sql子句

以题目:“哪些学生的成绩比课程0002的全部成绩里的任意一个高呢?”为例

  1. 翻译成大白话

89b1e9e1a56517c45819b96629821b64.png

2. 写出分析思路

37e90c49db2492da8d4c877df7e23f5f.png

3277ae23e7a48eb479fb2686b4538d9b.png

3. 写出对应的sql子句

aa23cb390a88a196edc44454840444ef.png

fb1401bf1e4e018e39cbf4e690feac97.png

六、各种函数

函数的功能:

c2117bd263369bcd753690543a59ba4c.png

函数可分为:汇总函数,算术函数,字符串函数,日期函数等

691b7352c4229a90ebb25136a7dd1f81.png

cb71df4202e910d0d49462e598e02be5.png

b743a38b7f8c73c0e07e85a524d9550b.png

1473d6c2a405e459d2c15c852f334bca.png

本节课程总结:

7cc2d505606abb368ea0b34aa5bc5840.png

七、sqlzoo子查询题目

94799ce86f38ba5d91d9cc8649c8635b.png

a3d8376aaaa3ca698e5a918dc4a9112f.png

8c6ec3b83bfca2a3b5b0fcb247822bed.png

df6cf09aeede1cce5eac4d368b6ec00b.png

f5e27a94acc336d60b71e8e81e43f43e.png

c69a690b079e2e211c2833f13417bd86.png

e5912be512e26777b498cfe9b9cd082b.png

7c2c0279240482000958eaae873961a8.png

996ae5fe8164804d5bf9981a0bdf7233.png

b9c7a9c4d454077637d65c300b255be9.png

以上就是第四节课程《复杂查询》的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值