前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库实验 –嵌套查询–查询选修了“c1”课程但没有选修“c2”课程的学生学号–三种方法— in 的方法—exists方法—–集合操作 : INTERSECT

数据库实验 –嵌套查询–查询选修了“c1”课程但没有选修“c2”课程的学生学号–三种方法— in 的方法—exists方法—–集合操作 : INTERSECT

作者头像
Java架构师必看
发布2021-04-22 15:18:51
4.5K0
发布2021-04-22 15:18:51
举报
文章被收录于专栏:Java架构师必看

数据库实验 --查询选修了“c1”课程但没有选修“c2”课程的学生学号

问题:

查询选修了“c1”课程但没有选修“c2”课程的学生学号。 查询中嵌套查询语法格式,及使用IN,ANY,ALL,EXISTS操作符和比较运算符对数据库进行嵌套查询的操作。

方法一:采用 in 的方法

代码语言:javascript
复制
select s_num as 学号
from  selectCourse A
where A.c_num = 'C1' and  s_num  not in (select  s_num from selectCourse
                                      where  c_num ='C2' )

方法二:采用exists方法

代码语言:javascript
复制
select s_num as 学号
from  selectCourse A
where A.c_num = 'C1' and  not exists (select * from selectCourse B
                                      where A.s_num=B.s_num  and  c_num ='C2' )

方法三:采用 集合操作 : INTERSECT 返回多个查询结果中相同的部分

代码语言:javascript
复制
select   s_num as 学号 from selectCourse
								       where  s_num  not  in
								        (
										select  s_num  from  selectCourse
										where  c_num ='C2'   
										) 
NTERSECT  
select   s_num as 学号 from selectCourse
								      where  s_num   in
										(
										 (select  s_num  from  selectCourse
										where  c_num ='C1')  
										) 	

实验数据

在这里插入图片描述
在这里插入图片描述

实验结果

在这里插入图片描述
在这里插入图片描述

补充说明:

方法一:采用 in 的方法 方法二:采用exists方法 具体in和 exists区别请看SQL中IN和EXISTS用法的区别

方法三: 采用 集合操作 : INTERSECT 返回多个查询结果中相同的部分-----------------也就是数学中的交集

补充:

集合操作

在这里插入图片描述
在这里插入图片描述

数据如下所虚的相关代码:

代码语言:javascript
复制
--创建选课表
create table selectCourse
(
 s_num  int,
 c_num varchar(20),
 score numeric(3,1)   ,
 primary key (s_num,c_num),
 foreign key ( s_num) references student(s_num),
 foreign key (c_num) references course(c_num),
)
drop table selectCourse
--插入数据

insert into  selectCourse(s_num, c_num, score) 
                                    values(1815001,'C1',93),
									         (1815002,'C1',90),
											 (1815003,'C1',99),
											 (1815004,'C1',96),								
			                                 (1815001,'C2',80),
											 (1815001,'C3',90),
											 (1815001,'C4',78),
											 (1815001,'C5',88),
											 (1815001,'C6',98),
											 (1815005,'C3',88),							   
											 (1815004,'C3',98)
insert into  selectCourse(s_num, c_num ) 
                               			  values(1815005,'C4')
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题:
    • 方法一:采用 in 的方法
      • 方法二:采用exists方法
        • 方法三:采用 集合操作 : INTERSECT 返回多个查询结果中相同的部分
          • 实验数据
            • 实验结果
              • 补充说明:
                • 补充:
                相关产品与服务
                数据库
                云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档