sql server中查询列名无效_SQL中的复杂查询

本文介绍了SQL Server中视图的创建与应用,强调了视图提高工作效率和节省空间的特点。接着讨论了子查询的用处,包括在from和where子句中的使用,以及如何避免多重嵌套以保持性能。此外,还详细阐述了标量子查询和关联子查询的实际操作例子。最后,提供了SQLZOO练习题,帮助读者巩固所学知识。
摘要由CSDN通过智能技术生成

一. 视图 view

含义:视图是存放SQL查询语句的盒子,方便存储常用的SQL语句

用处:工作中需要多次使用的某个SQL语句,可以把语句定义为视图,使用时直接调用,提高工作效率,视图存放的是SQL语句,所以会随着数据的变化进行更新;使用视图时,会运行视图中的SQL查询语句创建一张临时表,链接断开后,临时表会自动删除,不占用内存,节省空间

注意事项:1.视图列名与select 列名需相互对应

2.不能再视图中创建视图,多重视图会降低效率

3.不能再视图中插入数据

创建视图: create view 视图名称 (视图列名1,视图列名2,…)

AS select 查询语句;

实际应用:创建视图,实现按照性别分组汇总的视图

create view 按性别汇总 (性别,人数)

as select 性别,count(*)

from student

group by 性别;

52183410a89973097865779266cf6fd4.png

二.子查询

含义:相当于一次性视图,即在select查询中嵌套select查询语句

用处:用于复杂查询,可以放入from子句中,或者where子句中,如in(子查询),any(子查询),all(子查询),结合使用,实现复杂查询功能

注意事项:1.区别于视图,视图是存放经常使用的SQL语句,子查询是偶尔使用

http://2.in,all,any得到的是集合,不是单一数值,不能用于计算

3.尽量不要使用多重嵌套,会影响性能,不易维护

4.建议为子查询定义名称,方便理解和维护

实际应用:

1. 按照性别分组后统计人数

8771898a6907a23334474340c51de6b5.png

2. 哪些学生的成绩比课程0002的全部成绩里任意一个高?any和some意思相同

cd050577ff902e43a83ad1ab3edfe03d.png

3.哪些学生的成绩比课程0002的全部成绩里任意一个高?

c708ba6134b683c8f64f7eba54125660.png

三.标量子查询—子查询中的一种

含义:返回的是单一的值

实际应用:1.找出大于平均成绩学生的学号和成绩

d7a214924297d9269b50db3544dc75ba.png

2.查询差生(成绩<=60)和优等生(成绩>80)

fd3245935a3cb0726da1473c8beb86c2.png

四.关联只查询—子查询中的一种

含义:利用关联条件,在每组中比较

实际应用:1.查找出每个课程中大于对应课程平均成绩的学生

b640a04c47f834f2aa47f6eb486f5674.png

2.找出每个课程最低成绩的学生,关联语句中group by可以省略

bc9149582b0bf304b4f87a54f85434e5.png

五.总结

d535390c27637be00e0aae5906fe417d.png

六.SQLZOO练习

https://sqlzoo.net/wiki/SELECT_within_SELECT_Tutorial/zh

1.找出国家人口大于俄罗斯人口的国家

e1b65e6144b2358585ccc27f335a0eca.png

2. 查找出阿根廷(Argentina)和澳大利亞(Australia)所在的洲份中的国家名称和州名称,并按国家名称排序

fdc8925afb33fcb1b1eefd19b2e94e55.png

3. 德国(Germany)在欧洲(Europe)國家的人口最多。奧地利(Austria)拥有德国总人口的11%。查找欧洲的国家名称和每个国家的人口,其中人口以德国人口的百分比来显示人口数

6f1c6ae4c0896b4634d88605e122036f.png

4 .找出 洲份名称和国家名称,其中每个洲只取出一个国家(条件:该国家排序在这个洲的首位)

b11f3b8c86a5528a4f50dd9db5e56fa4.png

5. 有些国家的人口是同洲份的所有其他国的3倍或以上。列出这些国家的名称和洲

0f791c4c6d5c7633ec47a2bc22910e46.png

参考文献:

知乎live讲座:

从零学会SQL:复杂查询​www.zhihu.com
b5255912f3db63a585d95363409374d9.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值