当前位置: 首页 > news >正文

select子查询返回 值_从零学会SQL:复杂查询,D4

2020年3月29日 星期日

大纲:

  1. 视图;
  2. 子查询;
  3. 标量子查询;
  4. 关联子查询;
  5. 如何用sql解决业务问题;
  6. 各种函数。

1 视图

视图,用于存放sql查询语句,不是存放数据。

创建视图如下:

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

as

select查询语句;

7972bdf8c37516bc1af97c3cfaad11bb.png
视图

视图create view和select的列的顺序一一对应

ecfcc053397f621aa7f04b07e8550c32.png

b3ec2067033a3d48836dfc9bfdf192c2.png
创建视图

28d69edb0c1adb73974020ea622bedc3.png

使用视图好处:

1、频繁使用查询语句尤其复杂语句时,使用视图提高效率;

2、视图数据随原始表数据变化,随时更新;

3、不需要保存数据,节省设备空间。

注意事项:1、避免在使用视图的基础上再使用视图,降低sql 性能和效率;2、不能往视图里插入数据,会报错。

2 子查询——放在from子句或者where子句

子查询:实际是一次性视图,在select中嵌套另一个select。

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

select 列名 from(select子查询)

0a5e112e52d8bdaf483a2061a6c6eec3.png
直接在from中写子查询

select 列名

from 表名

where 列名 ……in/any/all (select子查询)

in子查询:

bd2db251fbb6b6cbc08ed8c3ceeb3e48.png
拆解思路

8a6a5cdf9c35bafa34fbde9103fac557.png
错误示例

……any/some/all子查询,与比较运算符一起使用

01548e10b3b48c9a34338207d0ad5d54.png

any/some子查询:表示大于/小于/等于all中的任一数据

select 列名 from 表名 where 列名 > any/some (select子查询)

b7d890e2cbd8bac7b1f263047fd67291.png
any子查询的应用例子

all子查询:表示大于/小于/等于all中的所有数据

select 列名 from 表名 where 列名 > all (select子查询)

90c0903d95e6e5b4308a75a6b9f23d54.png
all子查询的应用例子

子查询使用注意事项:

A:子查询any 和all得到的是一个集合(多行数据),不是数字,不能进行算数运算。

B:避免使用多层嵌套子查询,子查询嵌套越多,难以理解;

C:select……from……子查询 as 子查询名称,其中as 子查询名称可以省略,但是尽量不要省略,方便理解。

02c017eccd42e6d983f37c9390f7768e.png

a4ced8f0581a521b7acd07a911281a3e.png

3 标量子查询

子查询语句只能返回单一的值(与in,any,all子查询返回多行数据不同),因此可以应用算数运算。

书写的位置并不只限于where子语,任何使用单一值的地方,都可以使用标量子查询。和in,any,all,between和比较运算符一起使用,实现复杂条件。

7f90989cdfdb3a8753a2829b4330835f.png

注意事项:该子查询不能返回多行结果,只能返回单一值。

3ab0d11cb115a180a67793e028decc99.png

练习:

0826f53e56a177ed46ff5e3a99bca8ff.png

c73b7844112616beaf42b39f90c5634f.png

a5f0ca229842842b6c2ae3ee97e3ad1a.png

4 关联子查询

使用关联条件,让每个分组里进行比较,就可以用关联子查询。

注意:关联条件,一定要写在子查询里。

2d93df3e08184053e008c2822ddfa140.png

别名S2只在子查询里有效,S2能看到子查询外面的别名S1,而S1看不到S2。

76971e4858accbaa82200c328f1025bc.png

练习:

ad10c0f7291c25b0b85a7ea345a34ce6.png

5 如何用SQL解决业务问题

步骤:翻译成自己看明白的大白话——写出分析思路——写对应的sql子句

494684af045d6b600f1e98418a85202b.png

6 各种函数——汇总函数,算数函数,字符串函数,日期函数

汇总函数:count(列名),sum(列名),avg(列名),max(列名),min(列名)

1db6cd5432520812b6efdb42bae728e2.png

算数函数:round(数值,保留小数的位数),abs(数值),mod(被除数,除数)

463e6aed06bce18cf8ee24ea78ec1ad0.png

字符串函数:length(字符串),lower(字符串),upper,concat,replace,substring

e6b57ca2248ea7d6ace5573a38d5a0f3.png

日期函数:

d3cf8d69eaf6eb51e28ce5a1effb77d6.png

本结课程总结一张图:

55ea61362d5a59aad5f13326e36ddacc.png

练习:sqlzoo

8353f04f40b163ca4fbf590fedb480b1.png

省略

400879dcc1c3e46f6ec513120e72dc58.png

b1fb8a63b1cd82b7fd5cdceb30256f2e.png

相关文章:

  • python concat axis_Python NumPy中sum()函数详解 axis与keepdims图解
  • python echarts mysql_Django中从mysql数据库中获取数据传到echarts方式
  • skywalking原理_链路追踪 SkyWalking 源码分析——Collector Naming Server 命名服务
  • python print 调试_python 调试: print / assert / logging / pdb
  • 信息系统项目管理师论文_高级软考信息系统项目管理师考试技巧之论文摘要
  • imp oracle reschema_Oracle数据库逻辑备份之exp/imp(一)
  • aspnet是前端还是后端_谁能解释一下“前端开发”与“.NET”有什么区别和联系...
  • oracle rank 语法_Oracle用于排名的函数
  • extjs string类型转date_Extjs 时间格式的转换
  • jmeter如何定位网络延时_JMeter如何模拟不同的网络速度
  • docker mariadb集群_Docker Swarm 部署Mysql/Mariadb高可用主从复制集群
  • seaborn无法import_seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决...
  • python中文件最重要的功能陶瓷材料_2020大学慕课新型陶瓷材料及商业应用期末考试查题公众号答案...
  • python的notebook怎么打开_ipython notebook 如何打开.ipynb文件?
  • 如何区分电梯卡为id卡ic卡_怎么看小区门禁卡是ic还是id
  • JS 中的深拷贝与浅拷贝
  • 30秒的PHP代码片段(1)数组 - Array
  • fetch 从初识到应用
  • Java IO学习笔记一
  • leetcode讲解--894. All Possible Full Binary Trees
  • React的组件模式
  • sessionStorage和localStorage
  • text-decoration与color属性
  • 阿里云应用高可用服务公测发布
  • 从零开始在ubuntu上搭建node开发环境
  • 技术发展面试
  • 区块链将重新定义世界
  • 入口文件开始,分析Vue源码实现
  • 一份游戏开发学习路线
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • ionic入门之数据绑定显示-1
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (3)(3.5) 遥测无线电区域条例
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .NET Framework杂记
  • .Net Web项目创建比较不错的参考文章
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • .Net组件程序设计之线程、并发管理(一)
  • /var/lib/dpkg/lock 锁定问题
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [20161101]rman备份与数据文件变化7.txt
  • [BJDCTF2020]The mystery of ip1
  • [docker] Docker的数据卷、数据卷容器,容器互联
  • [ES-5.6.12] x-pack ssl
  • [Gstreamer] 消息处理handler的设置
  • [hive] posexplode函数
  • [HTML]Web前端开发技术6(HTML5、CSS3、JavaScript )DIV与SPAN,盒模型,Overflow——喵喵画网页
  • [json]定义、读写
  • [LeetCode] 148. Sort List 链表排序
  • [leetcode] 61. 旋转链表
  • [linux][调度] 内核抢占入门 —— 高优先级线程被唤醒时会立即抢占当前线程吗 ?