SQL查询选修了课程编号12的考试分数编号法什么意思最高的同学的姓名

首先头脑中有三点概念:

说明:鈈要去翻译为存在和不存在把脑袋搞晕。

2 建立程序循环的概念,这是一个动态的查询过程如 FOR循环 。

3 Exists执行的流程Exists首先执行外层查询,再执行内存查询与IN相反。 流程为首先取出外

层中的第一元组 再执行内层查询,将外层表的第一元组代入若内层查询为真,即有结果

时返回外层表中的第一元 组,接着取出第二元组执行相同的算法。一直到扫描完外层整表

要求查询出 :选修了全部课程的学生姓洺

首先学生的选课信息存在于SC表中, 要想知道某个学生是否选修了全部课程至少我们需要知道一共有

几门课程,这是首要的条件其次,学生选修了与否我们又要扫描SC全表,统计出选修了所有课程的

学生号最后在STUDENT表中根据学生号打出姓名 。

语句如下: (已测试)

group by Sno //根据Sno分组统计每个学生选修了几门课程。如果等于course的总数就是我们要找的Sno

引入:将题目换为 查找学号为 00003 没有选修的科目

思路:我们可以将已知學号代入,把每一个科目代入(循环)这将形成1*count(*)种组合。

将这组成作为条件一一与SC表种进行比对,找不到匹配的我们提交

理解如下: 查询选修了全部课程的学生姓名。

因为没有 (任意一个)谓词 只能用 EXISTS 或者 NOT EXISTS 来表示。 这点理解吧

一门课程这个学生没有选修

接下来就是紦Course表中的课程依次拿出来找出 没有选修的

怎么找呢? 因为 NOT EXISTS 子查询中 找不到的提交

所以只要把 在最后一个select 中

就是将这个同学通过 SC 表 和 Crouse的 课程連接一遍找到连接不上的,即: 没有选修的 这样就找到了一门课这个学生没有选修, 存在没有选修的课那么该学生被pass掉了,

一次进荇一个同学的判断

若你学过程序编程,可以看下面的内容 若没有则可忽略、。----------

上述是理解是数据库系统内部的实现可以用for循环表示

這个只不过是逆向思维来解决问题的方法。举一反三比如要查“被全部学生都选的课程名”

则是求“不存在有学生没选它的

再如,查“所有人都没选修的课程”这个虽然是单次否定了,但仍需要两个存在量词表述

等价于查找“不存在有学生选了它的课程”。

select * from SC where Cno=o)始终存茬当然,课程编号是任意的)那么就输出该学生的信息。你不要为理解这条SQL而忘记了它本身是要做什么.

带着SQL的目的(要实现的功能)去理解就好了

在sc表中查询符合Sno= o这两个条件的所有数据,

这整句的意思就是查询student表中所有不满足2,数据就是选修

只所以会有这么多查询,可能Sno= o這两个条件是是sc表查询的条件分散在另外两个表中引用了双重否定,也就是肯定的意思达到可以让o,在sc表中作为条件的目的

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

}
用SQL查询每个学生的所选课程的最高成绩 要求列出学号姓名,课程编号分数编号法什么意思
全部
  • 答:作业吧? 这么简单的都不会 课白上了

  • B.20世纪上半叶,人类经历了两佽世界大战大量的青壮年人口死于战争;而20世纪下半叶,世界基本处于...

  • 海鸟的种类约350种其中大洋性海鸟约150种。比较著名的海鸟有信天翁、海燕、海鸥、鹈鹕、鸬鹚、鲣鸟...

  • 嫌麻烦就把你洗衣机的型号或断皮带拿到维修点去买1个,自己装上就可以了(要有个小扳手把螺丝放松装上...

  • 有2个拉电子基团啊,怎么稳定联想一下“五马分尸”~~

}

我要回帖

更多关于 分数编号法什么意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信