数据库嵌套查询和集合查询
一、下面进行一些比较典型的查询例子:
1.在教学管理JXGL数据库中进行如下操作:
(1) 求选修了数学的学生的学号和姓名。
SELECT DISTINCT SC.Sno,Sname
FROM STUDENT,SC
WHERE Cno='2'AND SC.Sno=STUDENT.Sno;
(2) 求数学课程成绩高于李勇的学生学号和成绩。
SELECT DISTINCT SC.Sno,Grade
FROM STUDENT,SC
WHERE Cno='2'AND Grade>=92 AND SC.Sno=STUDENT.Sno;
(3) 求其他系中年龄小于计算机系年龄最大者的学生。
SELECT *
FROM STUDENT
WHERE Sage>ALL(SELECT Sage
FROM STUDENT
WHERE Sdept='CS'
)AND Sdept!='CS';
(4) 求其他系中比计算机系学生年龄都小的学生。
SELECT *
FROM STUDENT
WHERE Sage<ANY(SELECT Sage
FROM STUDENT
WHERE Sdept='CS'
)AND Sdept!='CS';
(5) 求选修了数学课的学生姓名。
SELECT Sname
FROM STUDENT
WHERE EXISTS(SELECT *
FROM SC
WHERE Cno='2' AND SC.Sno=STUDENT.Sno);
(6) 求没有选修数学课的学生姓名。
SELECT Sname
FROM STUDENT
WHERE NOT EXISTS( SELECT *FROM SCWHERE Cno='2' AND SC.Sno=STUDENT.Sno);
(7) 查询选修了全部课程的学生的姓名。
SELECT Sname
FROM STUDENT
WHERE NOT EXISTS( SELECT *
FROM COURSE
WHERE NOT EXISTS(SELECT *
FROM SC
WHERE STUDENT.Sno=SC.Sno AND COURSE.Cno=SC.Cno));
(8) 求至少选修了学号为“95002”的学生所选修的全部课程的学生学号和姓名。
SELECT Sno,Sname
FROM STUDENT
WHERE EXISTS(SELECT *
FROM SC
WHERE Sno=STUDENT.Sno AND Cno IN(SELECT Cno
FROM SC
WHERE Sno='95002'));
(9) 求选修各门课的人数及平均成绩。
SELECT Cno,COUNT(*)AS 人数,AVG(Grade)AS 平均成绩
FROM SC
GROUP BY Cno;
(10)求选修课程在2门以上且都及格的学生号及总平均分。
SELECT Sno,AVG(Grade)AS 总平均分
FROM SC
GROUP BY Sno
HAVING COUNT(Cno)>=2 AND MIN(Grade)>='60';
(11)求95级学生中选修课程在2门以上且都及格的学生号及总平均分,并按平均成绩排序。
SELECT Sno,AVG(Grade)AS 总平均分
FROM SC
WHERE EXISTS(SELECT *
FROM STUDENT
WHERE NOT EXISTS(SELECT *
FROM SC
WHERE Sno=SC.Sno AND Cno>='60'))
GROUP BY Sno
HAVING COUNT(Cno)>='2';
(12)统计每个人及格的成绩的平均值,及格的门数,结果按平均成绩降序,及格门数降序排列。
SELECT AVG(Grade)AS 平均值,COUNT(*)AS 及格的门数
FROM SC
WHERE Grade>='60'
GROUP BY Sno
ORDER BY 平均值DESC, 及格的门数DESC;
(13)统计所有课程均及格学生的平均成绩,及格的门数,结果按平均成绩降序,及格门数降序排列。
SELECT Sno,AVG(Grade)AS 平均成绩,COUNT(*)AS 及格的门数
FROM SC
WHERE EXISTS(SELECT *
FROM STUDENT
WHERE NOT EXISTS(SELECT *
FROM SC
WHERE Sno=STUDENT.Sno))
AND Grade>='60'
GROUP BY Sno
ORDER BY 平均成绩DESC, 及格的门数DESC;
2.在供应系统GYXT数据库中进行如下操作:
(1) 求供应工程J1红色零件的供应商号SNO。
SELECT DISTINCT SPJ.SNO
FROM SPJ
WHERE PNO IN(SELECT PNOFROM PWHERE COLOR='红')AND JNO='J1'
(2) 求零件供应总量在1000种以上的供应商名字。
SELECT SNAME
FROM S
WHERE SNO IN(SELECT SNOFROM SPJGROUP BY SNOHAVING SUM(QTY)>='1000')
数据库嵌套查询和集合查询相关推荐
- SQL server数据库实验(三)数据库的嵌套查询和集合查询
文章目录 一.针对教学管理数据库SCT,进行以下各种嵌套查询与集合查询 1.查询选修了"数据库"课程的学生信息 2.查询与学生"李维"在同一个院系的学生选课信息 ...
- 3.4 《数据库系统概论》之数据查询---SELECT(单表查询、连接查询、嵌套查询、集合查询、多表查询)
文章目录 0.前言 1.思维导图 2.Student/SC/Course表数据及结构 3.SELECT语句的一般格式 4.单表查询 (1)选择表中的若干列 ① 查询指定列 ② 查询全部列 ③ 查询经过 ...
- 笔记:3.4 《数据库系统概论》之数据查询---SELECT(单表查询、连接查询、嵌套查询、集合查询、多表查询)
对 3.2 数据查询-SELECT(单表查询.连接查询.嵌套查询.集合查询.多表查询)的转载与学习笔记: 0.前言 本篇文章是对<数据库系统概论>王珊老师主编的数据库查询SELECT部分做 ...
- SQL Server数据库实操 第二波 集合查询、datepart()
1.集合查询 并操作UNION (相当于or) 交操作INTERSECT (相当于and) 差操作EXCEPT 2.写第5题时重要的参考 数据库SQL语句中 查询选修了全部课程的学生的学号和姓名 - ...
- mysql通过集合查询_连接查询与集合查询
4.外连接查询 在前面讲述的连接操作中,返回的结果都是满足连接条件的记录.有些时候,开发人员或者用户对于不满足连接条件的部分记录也感兴趣,这个时候就需要使用外连接查询.外连接查询不仅可以返回满足连接条 ...
- 数据库 - 连接查询、嵌套查询、集合查询
连接查询 连接查询:同时涉及多个表的查询 连接条件或连接谓词:用来连接两个表的条件 一般格式: [<表名1>.]<列名1> <比较运算符> [<表名2> ...
- 数据库:数据查询(指定的列、全部列、经过计算的值、消除重复的行、查询满足条件的元组、比较查询、范围查询、集合查询、字符匹配查询)
数据查询是数据库的核心操作,SQL提供了 select 语句实现查询功能 1.查询指定的列 格式: select 查询列表,查询列表 from 查询的表名 2.查询全部列(查询的顺序不同) (1) s ...
- 数据库第八次 集合查询,数据更新,视图
前言:孩子有幸在更新系统之后尝到了SQL Server突然崩掉的滋味
- mysql怎么集合查询_MySql集合查询
SELECT语句的查询结果是元组的集合,所以多个SELECT语句的结果可进行集合操作. 集合操作主要包括并操作UNION.交操作INTERSECT.差操作EXCEPT. 注意,参加集合操作的各查询结果 ...
最新文章
- UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xe6 in position 0: ordinal not in range(128)
- 细胞因子风暴与新冠肺炎
- nodejs 当前文件路径_NodeJs的几种文件路径
- 电脑键盘按钮功能注释大全
- Python id(obj), ==, is 三者之间的区别
- springMVC 返回json乱码问题
- java web框架 django_django——web框架简介
- 【五级流水线CPU】—— 4. 移动操作指令(6条)
- fir.im Weekly - 聊聊 Google 开发者大会
- Google Code Review 代码审查速度
- Java: JavaMail 初试(一)
- 悬镜安全在RSAC2022上斩获Global InfoSec Awards四项大奖
- 小黑课堂c语言题库,未来教育和小黑课堂哪个好 试卷题目是一样的吗
- Windows Mobile系统PDA进行GPS导航的入门知识
- uniapp基本语法/组件使用
- 作用域 (局部作用域和全局作用域) 详细介绍
- poj2528 贴海报
- 中国移动物联网开放平台OneNET学习笔记(1)——设备接入(MQTT协议)OneNET Studio篇
- 云宏WinCloud前端工程师告诉你什么是UI扁平化
- Windows Workflow Foundation(1)- Windows Workflow Foundation 概述