oracle查询未被选修的课程,关于数据库” 查询选修所有课的学生信息“ exists解法的理解...
学生选课信息共三个表:
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解法的理解...相关推荐
- MySQL查询被选修的课程_sql语句查询没有被学生选修过的课程(即课程号没有在sc表中出现过)的名称....
展开全部 1.创建学生及课程表, create table test_student(stu_id number, class_id number); create table test_class( ...
- oracle查询100到200数据,100分数据库查询语句(ORACLE 11g)
100分求一个数据库查询语句(ORACLE 11g) 一张表tabl1 如下: epqname createtime e ...
- 编写一个触发器:当修改一个学生专业的时候(转专业),则自动将本学期新专业同学全都选修的课程给该同学选修
该题的重点就是要获取该专业同学全部选修的课程的课程号 这里就涉及到insert触发器要同时插入多条记录 GO CREATE TRIGGER alter_major ON student AFTER D ...
- mysql500万数据查询速度_是什么影响了数据库查询速度
一.什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS:Queries Per Second意思是"每秒查询率",是一台服务器每秒能够相应的查 ...
- MySQL查询实验报告_SQL实验二:数据库查询实验报告
实验二 数据库的查询实验 一. 实验目的和要求 (1)掌握SQL Server查询分析器的使用方法,加深对SQL和Transact-SQL语言的查询语句的理解. (2)熟练掌握简单表的数据查询.数据排 ...
- C# 联合查询_直击数据库面试题:数据库查询语句
Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题 ...
- mysql查询时给字段加内容,mysql数据库查询之对应库对应表中的注释信息查询以及加字段查询...
select * from information_schema.columns where table_schema = 'db' #表所在数据库 and table_name = 'tablena ...
- slqite3库查询数据处理方式_C语言实现sqlite3数据库查询的基本方法
sqlite回传函数相关说了3种基本方法:callback,gettable和预处理stmt方法 下面给出测试代码和测试用数据库,代码如下 #include #include #include #in ...
- java mysql查询界面_Java GUI小程序 实现数据库查询界面-Go语言中文社区
源代码如下:package 数据库图形化界面3; import java.awt.*; import javax.swing.*; import java.awt.event.*; public cl ...
最新文章
- 写代码、搜问题,全部都在「终端」完成!如此编程神器,是时候入手了
- 【Android 文件管理】分区存储 ( MediaStore 文件操作 )
- 2005国际通信展将于10月18-22日举行
- redis 失效时间单位是秒还是毫秒_Redis 事务与过期时间详细介绍
- rust(65)-rust常用指针
- 转载--微分几何为何必然兴起?
- 如何自己研究SAP Cloud for Customer的订单类型设计
- Python字符串isalpha()
- IDEA集成MAVEN 报错
- 弹出打开蓝牙_iOS13隐藏特性 双蓝牙音频共享功能详解
- mac过热_如何阻止Mac过热
- 让WindowsXP SP3支持64G内存
- 充电器pps功能是什么_科普:PPS充电器为何不兼容笔电?
- HR告诉你,怎么回答“为什么从上家公司离职?”
- CSS动画实现星星闪烁效果
- Logstash系列: mutate拦截器的使用
- 实体类[notmapped]特殊 “The specified type member ‘‘ is not supported in LINQ to Entities. Only...
- IK分词器-自定义分词
- 基于知识图谱的智能问答方案
- 这些线上峰会为何不约而同选择亿联视讯方案?云端协同、流畅安全是关键!
热门文章
- Excel 2010 VBA 入门 104 利用VBA生成图表
- rockchip 修改开机LOGO和注意事项
- Android 事件传递机制总结
- [转]Thinkvantage system update删除更新储存文件解决办法
- Redis——Redis主从复制(工作流程详解)
- ubuntu 安装flameshot截图软件及设置快捷键
- java之影流之主( 流 )第十五天( ----自动关闭的流--字符缓冲流---Properties--序列化-- )
- WPF 控件专题 TabControl控件详解
- 关于自定义AuthorizeAttribute
- 交叉编译环境下载安装指南Ubuntu