学生选课信息共三个表:

S:学生基本信息

sno   sname

95001

李二

95002

王三

95003

赵四

95004

孙小毛

95005

王大侃

C:课程基本信息

cno   cname

1

逻辑与幽默

2

电影艺术欣赏

3

大学生文化之道

4

领导魅力论

SC:选课信息

sno    cno

95001

1

95002

3

95004

4

95005

2

95001

3

95001

2

95001

4

首先得搞懂嵌套查询中相关子查询的执行过程:

首先选取父查询表中的一个元组,内部的子查询利用此元组中的相关属性值进行查询

然后父查询根据子查询返回的结果判断此行是否满足查询条件,若满足,则把该行放入父查询的查询结果中。

相当于一个循环,逐个的实验。

我们先来看看这个问题

问题一、

查询学号为‘95002’的学生选修的课程信息

select * from C  where exists (select * from SC where SC.cno = C.cno and SC.sno = '95002' );

按照上述的相关子查询的执行过程:

C表中共有课程号为1,2,3,4的四门课,子查询把这四个学号对应的四个元组逐一带入,

根据子查询中的条件SC.cno = C.cno and SC.sno = '95002'

当C.cno = 1, 不存在符合条件的元组,exists返回false,父查询中不把该C.cno对应的元组放到查询结果中

当C.cno = 2,存在符合条件的元组,exists返回true,父查询中把该C.cno对应的元组放到查询结果中

当C.cno = 3 .......

当C.cno = 4 .........

逐一查询之后,就把C.cno =2 对应的元组选出来了

同理问题二、

查询学号为‘95002’未选修的课程就是

select * from C where not exists (select * from SC where SC.sno = ‘95002’ and SC.cno = C.cno);

好了,接下来我们分析文章开始提出的问题:

select * from S where not exists

(select * from C where not exists

(select * from SC where SC.sno = ‘95002’ and SC.cno = C.cno));

还记得我们学过的

for(i= 0 ;i < 5;i++)

for(j = 0; j < 4;j++)

某语句;

仿照上述的分析过程S表中学号分别为95001,.....,95005对应的五个元组

当Sno =95001时,这个问题就又转化为问题二了。学号为95001的学生未选修的课程是否为空,为空的的话保留。

........

遍历完学生信息表中的元组之后,也就把所有符合条件的元组选出来了。

oracle查询未被选修的课程,关于数据库” 查询选修所有课的学生信息“ exists解法的理解...相关推荐

  1. MySQL查询被选修的课程_sql语句查询没有被学生选修过的课程(即课程号没有在sc表中出现过)的名称....

    展开全部 1.创建学生及课程表, create table test_student(stu_id number, class_id number); create table test_class( ...

  2. oracle查询100到200数据,100分数据库查询语句(ORACLE 11g)

    100分求一个数据库查询语句(ORACLE 11g) 一张表tabl1 如下: epqname             createtime                             e ...

  3. 编写一个触发器:当修改一个学生专业的时候(转专业),则自动将本学期新专业同学全都选修的课程给该同学选修

    该题的重点就是要获取该专业同学全部选修的课程的课程号 这里就涉及到insert触发器要同时插入多条记录 GO CREATE TRIGGER alter_major ON student AFTER D ...

  4. mysql500万数据查询速度_是什么影响了数据库查询速度

    一.什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS:Queries Per Second意思是"每秒查询率",是一台服务器每秒能够相应的查 ...

  5. MySQL查询实验报告_SQL实验二:数据库查询实验报告

    实验二 数据库的查询实验 一. 实验目的和要求 (1)掌握SQL Server查询分析器的使用方法,加深对SQL和Transact-SQL语言的查询语句的理解. (2)熟练掌握简单表的数据查询.数据排 ...

  6. C# 联合查询_直击数据库面试题:数据库查询语句

    Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题 ...

  7. mysql查询时给字段加内容,mysql数据库查询之对应库对应表中的注释信息查询以及加字段查询...

    select * from information_schema.columns where table_schema = 'db' #表所在数据库 and table_name = 'tablena ...

  8. slqite3库查询数据处理方式_C语言实现sqlite3数据库查询的基本方法

    sqlite回传函数相关说了3种基本方法:callback,gettable和预处理stmt方法 下面给出测试代码和测试用数据库,代码如下 #include #include #include #in ...

  9. java mysql查询界面_Java GUI小程序 实现数据库查询界面-Go语言中文社区

    源代码如下:package 数据库图形化界面3; import java.awt.*; import javax.swing.*; import java.awt.event.*; public cl ...

最新文章

  1. 写代码、搜问题,全部都在「终端」完成!如此编程神器,是时候入手了
  2. 【Android 文件管理】分区存储 ( MediaStore 文件操作 )
  3. 2005国际通信展将于10月18-22日举行
  4. redis 失效时间单位是秒还是毫秒_Redis 事务与过期时间详细介绍
  5. rust(65)-rust常用指针
  6. 转载--微分几何为何必然兴起?
  7. 如何自己研究SAP Cloud for Customer的订单类型设计
  8. Python字符串isalpha()
  9. IDEA集成MAVEN 报错
  10. 弹出打开蓝牙_iOS13隐藏特性 双蓝牙音频共享功能详解
  11. mac过热_如何阻止Mac过热
  12. 让WindowsXP SP3支持64G内存
  13. 充电器pps功能是什么_科普:PPS充电器为何不兼容笔电?
  14. HR告诉你,怎么回答“为什么从上家公司离职?”
  15. CSS动画实现星星闪烁效果
  16. Logstash系列: mutate拦截器的使用
  17. 实体类[notmapped]特殊 “The specified type member ‘‘ is not supported in LINQ to Entities. Only...
  18. IK分词器-自定义分词
  19. 基于知识图谱的智能问答方案
  20. 这些线上峰会为何不约而同选择亿联视讯方案?云端协同、流畅安全是关键!

热门文章

  1. Excel 2010 VBA 入门 104 利用VBA生成图表
  2. rockchip 修改开机LOGO和注意事项
  3. Android 事件传递机制总结
  4. [转]Thinkvantage system update删除更新储存文件解决办法
  5. Redis——Redis主从复制(工作流程详解)
  6. ubuntu 安装flameshot截图软件及设置快捷键
  7. java之影流之主( 流 )第十五天( ----自动关闭的流--字符缓冲流---Properties--序列化-- )
  8. WPF 控件专题 TabControl控件详解
  9. 关于自定义AuthorizeAttribute
  10. 交叉编译环境下载安装指南Ubuntu