利用SQL语言表达复杂查询

【六】sql 语言 -- 复杂查询与视图 利用 SQL 语言表达复杂查询,(NOT) IN,(NOT) EXISTS,SQL 语言表达聚集计算,分组查询与过滤,关系代数操作,视图 阅读详情

这篇博客主要介绍一些复杂的sql查询,DDL和简单的sql部分这里不做介绍

先贴表结构:




出现在where子句中的select语句被称为子查询,子查询返回了一个集合,可以通过和这个集合的比较来确定另一个集合

三种类型的子查询:

  • (NOT)IN子查询
  •  Some 与 All 子查询
  • (NOT)EXISTS 子查询

SQL语言表达复杂查询--(NOT)IN 子查询

示例1、列出张三、王三同学的所有信息

select * from student
where sname in ("张三", "王三")

示例2、列出选修了001号课程的学生的学号和姓名

select S#, Sname from student
where S# in (select * from sc where C#='001')

示例3、求既学过001号课程又学过002号课程的同学

select S# from SC
where C#='001' AND 
S# in (select S# from SC where C#='002')

示例4、列出没学过李明老师所授课程的所有同学的姓名

select Sname from Student
where S# not in (select S# from SC, Course C, Teacher T
where T.Tname='李明' and SC.C#=C.C# and C.T#=T.T#)

非相关子查询:内层查询独立进行,没有涉及外层查询相关信息的子查询

以上都是非相关子查询

相关子查询需要外层查询的某些参量作为限定条件才能进行的查询

  • 外层向内层传递的参量需要外层的表名或表别名来限定

示例:求学过001号课程的同学的姓名

select Sname from Student stu
where S# in(select S# from SC
where S#=stu.S# and C#='001')

SQL语言表达复杂查询-- Some 与All 子查询

示例1、找出工资最低的教师姓名

select Tname from Teacher
where salary <= all(select salary from Teacher)
示例2、找出001号课成绩不是最高的所有学生学号
select S# from SC
where C#='001' and score < some (select score from SC where C#='001')
示例3、找出所有课程都不及格的学生的姓名(相关子查询)
select Sname from Student S
where 60 > all(select score from SC
where S.S#=SC.S#)
示例4、找出98030101号同学成绩最低的课程号
select C# from SC
where S#='98030101' and score <= all (select score from SC
where S#='98030101'
)
示例5、找出张三同学成绩最低的课程号(相关子查询)
select C# from SC, Student S
where S.S#=SC.S# and Sname='张三' and score <= all(select score from SC
where S#=S.S#)

SQL语言表达复杂查询--(NOT)EXISTS 子查询

示例1、检索选修了赵三老师主讲课程的所有同学的姓名
select DISTINCT Sname from Student S
where exists(select * from SC, Course C, Teacher T
where S.S#=SC.S# and SC.C#=C.C# and C.T#=T.T# and T.Tname='赵三')

不加not形式的exists可以不用,例如上面的例子还可以写成如下形式:

select DISTINCT Sname From Student, SC, Course, Teacher
Where SC.C# = Course.C# and SC.S# = Student.S#
and Course.T# = Teacher.T#  and Tname = '赵三';

然而not exists 却可以实现许多新功能

示例2、检索学过001号教师的所有课程的所有学生姓名

select Sname from Student S
where not exists     -- 不存在
(select * from Course C    -- 有一门001老师主讲的课
where C.T#='001' and not exists   -- 他没学过
(select * from SC
where SC.S#=S.S# and SC.C#=C.C#))

上述语句的意思是:不存在又一门001老师主讲的课他没学过

示例3、列出没学过李明老师任何一门课的所有学生姓名

select Sname from Student S
where not exists(select * from Course C, SC, Teacher T
where Tname='李明' and T.T#=C.T# and C.C#=SC.C# and SC.S#=S.S#
)

示例4、列出至少学过98030101号同学学过所有课程的同学的学号

select S# from SC SC1
where not exists(select * from SC SC SC2
where S#='98030101' and not exists(select * from SC
where SC.C#=SC2.C# and SC.S#=SC1.S#))


SQL语言表达复杂查询--分组查询与分组过滤

  • 分组查询

示例1、求每一个学生的平均成绩

select S#, AVG(Score) from SC
group by S#

示例2、求每一门课的平均成绩

select C#, AVG(Score) from SC
group by C#

  • 分组过滤

示例1、求不及格课程超过两门的学生学号

select S# from SC
where Score < 60
group by S# having count(*) > 2

示例2、求有十人以上不及格的课程号

select C#, count(*) from SC
where Score < 60
group by C# having count(*) > 10

示例3、求有两门以上不及格同学的学号及其平均成绩

select S#, AVG(Score) from SC
where S# in(select S# from SC
where Score < 60
group by S# having count(*) > 2)
group by S#


贝加莱Automation Studio 4.10安装保姆级教程:从官网下载到解决.Net 3.5报错 本文提供贝加莱Automation Studio 4.10的详细安装教程,涵盖从官网下载到解决.Net 3.5报错的全过程。特别针对工业自动化开发环境中常见的.Net Framework 3.5安装问题,提供多种经过验证的解决方案,包括控制面板安装、DISM命令离线安装和手动下载安装包等方法,帮助工程师顺利完成PLC开发环境的搭建。 阅读详情

相关推荐

COMSOL求解器实战:如何避免非线性问题求解失败(附牛顿法调试技巧)

本文深入探讨了COMSOL求解器在处理非线性问题时常见的失败原因及解决方案。通过分析物理模型非线性特性、初始条件敏感性和求解器参数配置,提供了牛顿法调试的黄金四步法,包括模型检查、分阶段求解、参数调优和高级诊断工具应用。特别针对材料非线性、几何非线性和多物理场耦合等典型工程场景,给出了实战技巧和预防性建模策略,帮助工程师有效避免求解失败。

weixin_29284657的博客 419

数据库 复杂查询操作

掌握连接和嵌套查询操作。

capture3333的博客 3267

LabVIEW多设备采集实战:1个程序同时控制3个RS485 Modbus仪表

本文详细介绍了如何使用LabVIEW实现多设备RS485 Modbus同步采集,涵盖硬件架构设计、多线程通信框架搭建、数据帧解析技巧及性能优化策略。通过实际项目案例,展示如何解决端口冲突、数据解析错误等工业自动化常见问题,提升采集系统实时性与可靠性。

qsc901234的博客 303

SQL之复杂查询与视图

复杂查询与视图一、利用SQL表达复杂查询1、(NOT)IN子查询(1) 非相关子查询(2) 相关子查询2、θ-Some与θ-AII子查询3、(NOT) EXISTS子查询二、利用SQL语言进行结果计算与聚集计算1、结果计算2、聚集函数三、利用SQL语言进行分组查询与分组过滤1、分组查询2、分组过滤四、利用SQL语言实现关系代数操作1、并-交-差运算2、空值的处理3、内连接、外连接五、SQL语言之视图及其应用1、SQL视图的概念和结构2、SQL视图的定义3、SQL视图的使用4、SQL视图的更新5、撤销视图 一

qq_49090973的博客 1729

CCS8.1 导入CCS3.3工程方法

    CCS3.3作为开发人员使用最广开发工具,研究人员手上存在不少该版本的建立的程序版本,然而随着TI公司推出高级版本的CCS平台,在新的平台上集成了更加丰富的功能和优点。利用新版本的平台在开发和编译旧版本工程上可以节省大量时间和精力。在使用新版本开发3.3版本工程时,首要解决的就是加载3.3的工程文件,现将加载过程记录如下: 第一步:Project-&gt;Import Legacy CC...

1万+

RK3568点不亮EK79007 MIPI屏?别急着改时序,先检查这个初始化命令

本文深入解析RK3568开发板调试EK79007 MIPI屏幕时初始化命令的关键作用,揭示80%的时序问题实际源于命令配置不当。通过典型故障案例,详细拆解初始化命令的调试方法、寄存器映射及系统化排查流程,帮助工程师快速定位和解决屏幕点亮问题。

weixin_33657090的博客 349

sql复杂实例

from:http://www.wzsky.net/html/Program/DataBase/35200.html 1.查询语句的使用      使用 select语句和子查询(subquery)可以从一个或多个表,视图,实体试图中返回数据.      1.1相关子查询      可以将子查询(as subquery)或in或exists当成where的一个条件的一部分,这样的查询

basycai的博客 9580

Android TV开发:RecyclerView焦点控制实践与优化

在Android TV应用开发中,焦点控制是提升用户体验的关键技术。不同于移动端触摸交互,TV端通过遥控器方向键导航,需要精确的焦点管理机制。RecyclerView作为动态列表的核心组件,其焦点控制涉及视图复用、导航逻辑和视觉反馈等核心技术点。通过合理配置focusable属性、自定义焦点查找算法以及优化动画性能,开发者可以解决TV端常见的焦点跳转异常、视觉反馈延迟等问题。特别是在视频点播、智能家居控制等场景中,良好的焦点控制能显著提升操作效率。本文结合网格布局焦点环绕、分页加载焦点保持等实战案例,深入解

weixin_34195142的博客 469

java sql视图_SQL复杂查询和视图--Java学习网

核心提示:子查询 现实中,很多情况下需要进行下述条件判断某一元素是否是某一集合成员某一集合是否包含另一集合测试集合是否为空测试集合是否存在另一元组子查询是出现在WHERE子句中的SELECT语句被称为子查询,子...子查询现实中,很多情况下需要进行下述条件判断某一元素是否是某一集合成员某一集合是否包含另一集合测试集合是否为空测试集合是否存在另一元组子查询是出现在WHERE子句中的SELECT语句被...

weixin_31703753的博客 252

验证 helm Chart 的正确性

验证 helm Chart 的正确性

小橙子的笔记屋 281

fastadmin管理员页面实现手机验证码登录功能-腾讯云短信插件

fastadmin管理员页面实现手机验证码登录功能-腾讯云短信插件

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4195

SQL 的复杂查询语句,例子及解析

select *from emp where deptno= (select deptno from emp where ename="smith") 这是查询出与smith同一部门的员工信息。 ----------------------------------------------------------------------------------------------------- ...

默默不代表沉默 7785

CDD数据库文件制作(三)——服务配置(0x10)

根据诊断调查表进行每一步配置的详细操作,与背后逻辑解释 1.会话切换配置 1.1.根据诊断调查表进行信息提取(0x1001) 1.2.会话转换配置(0x1001) 1.3.根据诊断调查表进行信息提取(0x1002) 1.4.会话转换配置(0x1002) 1.5.根据诊断调查表进行信息提取(0x1003) 1.6.会话转换配置(0x1003) 1.7.会话切换配置完成后效果图 2.安全等级配置信息提取 2.1.安全访问配置(0x1001) 2.2.安全访问配置(0x1002) 2.3.安全访问配置(0x100

LOVE135149的博客 5838

利用sql语言表达复杂查询

子查询 θsome与 θall子查询 =some和in的关系同 表达式 = some(子查询) 表达式 in (子查询) select Sname from Student S where S# in(select S# from SC where S# = S.S# and C#='001'); select Sname from Student S where S# =so...

zmjheart的博客 570

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

数据库笔记7--利用SQL语言表达复杂查询(哈工大)

利用SQL语言表达各种复杂查询 IN子查询:集合成员资格 (1)(NOT) IN子查询 妙啊~ (2)非相关子查询:内层查询独立进行,只把内层查询的结果传回外层查询而不把外层查询的变量传入 (3)相关子查询:内层查询需要依赖外层查询传入的某些参数才能进行 θ-Some/θ-All子查询:集合之间的比较 ...

weixin_45691227的博客 220

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【利用SQL语言表达复杂查询---(NOT)IN子查询,θ Some与θ All子查询】

1.子查询:出现在Where子句中的Select语句被称为子查询(subquery),子查询返回了一个集合,可以通过与这个集合比较来确定另一个查询集合。- 如果表达式的值至少与子查询的某一个值相比较满足θ关系,则“表达式 θ some (子查询)”的结果便为真;- 如果表达式的值与子查询的结果的所有值相比较都满足θ关系,则“表达式 θ all(子查询)”的结果便为真。2.三种类型的子查询:(NOT)IN-子查询;非相关子查询:内层查询独立进行,没有涉及任何外层查询相关信息的子查询。表达式 in (子查询)

forever_youyang的博客 716

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SQL语言之复杂查询与视图

一、利用SQL语言表达复杂查询之(NOT)IN子查询 1.1 子查询 子查询:出现在Where子句中的Select语句被成为子查询(Subquery),子查询返回了一个集合,可以通过与这个集合的比较来确定另一个查询集合。 三种类型的子查询:(NOT)IN-子查询;-some/-All子查询;(NOT)EXISTS子查询 1.2 IN与NOT IN谓词子查询 基本语法: 表达式 [not] in (子查询) 语法中,表达式的最简单的形式就是列名或常数 语义:判断某一表达式的值是否在子查询的结果中

Trony的博客 606

第7讲 SQL语言之复杂查询和视图

第7讲 SQL语言之复杂查询和视图 1.利用SQL语言表达复杂查询 1.1 in 和 not in子查询 基本语法 :表达式 [not] in (子查询) 非相关子查询:内层查询独立进行,没有涉及任何外层查询相关信息的子查询 相关子查询:内层查询需要依靠外层查询的某些参量作为限定条件才能进行的子查询、外层向内层传递的参量需要使用外层的表名或表别名来限定 1.2some/all 子查询 1.3 (not) exists查询 基本语法: [not ] exists...

weixin_45406155的博客 411

【(NOT)EXISTS子查询,利用SQL语言进行结果计算和聚集计算,利用SQL语言进行分组查询和分组过滤】

1.Select-From-Where语句中,Select子句后面不仅可以是列名,而且可以是一些计算表达式或聚集函数,表明在投影的同时直接进行一些运算。2.expr可以是常量,列名,或由常量,列名,特殊函数及算数运算符构成的算术运算符。:AQL可以将检索到的元组按照某一条件进行分类,具有相同条件值的元组划到一个组或一个集合中,同时处理多个组或集合的聚集运算。:若要对集合(及分组)进行条件过滤,即满足条件的集合、分组留下,不满足条件的集合、分组剔除。语义:子查询结果中有无元组存在。

forever_youyang的博客 266

《数据库系统》SQL语言之复杂查询 子查询(NOT)IN子查询 θ some/θ all子查询 (NOT) EXISTS子查询(理论理解分析+实例练习)

SQL子查询应用总结 本文系统介绍了SQL中三种主要的子查询类型及其应用: (NOT) IN子查询:用于判断元素是否属于某集合。θ some/θ all子查询:用于集合间的比较运算。 (NOT) EXISTS子查询:测试集合是否存在满足条件的元组。文章通过典型示例(如查询特定课程学生、教师授课情况等),这些技术可有效处理复杂的多表关联和集合运算需求。

fcc13461862452的博客 828

只需掌握四个查询,就能解决 95% 的 SQL 问题

这里根据 set semantics (集合语义) 给出的对应表。关系代数SQL 语法σSPRt∣t∈R∧tsatisfiesSPσSP​Rt∣t∈R∧tsatisfiesSPπA1⋯AnRrA1⋯rAn∣r∈RπA1​⋯An​​R{(rA1​⋯rAn​∣r∈RR×StA1⋯tAnrB1⋯rBn∣t∈R∧r∈S。

qq_29824567的博客 971

es 第24节-运用SQL简化DSL查询

###2.Elasticsearch是文档型数据库,不是关系型数据库,不具备严格的ACID事务特性,任何企图直接替代严格事务性场景的应用项目都会失败!第1个,统计第95百分位的飞行时间平均时间;####1.Elasticsearch是数据库,不是普通的Java应用程序,传统数据库需要的硬件资源同样需要,提升性能最有效的就是升级硬件。#ES提供的SOL查询近可能的靠近SOL的表达能力,但与标准的SOL还是有点差距。#分页查询,注意返回结果中的cursor,cursor相当于游标,用于翻页。

DavidSoCool的博客 927

6. SQL语言之概述

1. SQL语言概述 SQL语言是集DDL、DML和DCL于一体的数据库语言 Definition:定义 Manipulation:操纵 Control:控制 grant:授权。(grand:宏伟的;重要的) revoke:撤销。(invoke:调用) 2. 使用SQL语言建立数据库 create table是定义关系模式 1)定义数据库 2)定义表 3)追加元组 3. 利用SQL实现简单查询 单表查询 where子句的检索条件会作用于对每一个元组 检索条件 检索结果之去重 di

ggbondd的博客 4546

MySQL通用表表达式(CTE):让复杂查询更清晰优雅的终极指南

通用表表达式(Common Table Expression,简称CTE)是 SQL 查询中的一种强大工具,它允许用户在单个查询中定义临时的命名结果集,从而提升复杂查询的可读性和结构化程度。CTE 的概念最早源于 SQL:1999 标准,并在后续的 SQL:2003 标准中正式引入递归查询能力,这使得 CTE 不仅适用于简化查询逻辑,还能高效处理层次化或递归型数据。MySQL 从 8.0 版本开始全面支持 CTE,这标志着其在现代关系型数据库查询优化中迈出了重要一步。在 MySQL 中,CTE 通过。

zuiyuelong的博客 2017

(五)关系数据库标准语言SQL

5.0课堂讲义使用的数据库5.0课堂讲义使用的数据库5.1利用SQL语言建立数据库5.1.1创建数据库Database5.1.2在SQL-92标准中定义的数据类型5.1.3创建表Table5.1.4向表中追加元组5.2利用SQL语言进行简单查询。

24考研人晴落的博客 1539

XiYan-SQL:用自然语言轻松查询数据库的智能解决方案

还在为复杂的SQL查询语句而烦恼吗?XiYan-SQL为您带来革命性的数据库查询体验。这是一个基于大语言模型的多生成器集成框架,让您能够用简单的自然语言就能完成复杂的数据库查询操作。 ## 为什么选择XiYan-SQL? 在当今数据驱动的时代,高效的数据查询能力变得至关重要。XiYan-SQL通过其独特的集成策略,在多个权威基准测试中均取得了领先成绩: [![性能对比图](https://r

gitblog_00890的博客 808
上一篇: Linux常见命令
下一篇: 《机器学习实战》chapter02 K-近邻算法(KNN)
君只见独不见
博客等级 码龄12年 99粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值