怎样用关系代数表达式表示查询要求?
用一个例子来讲述一下
题目:查询至少选修了全部课程的学生学号和姓名
题目所用到的表如下
题目:查询至少选修了全部课程的学生学号和姓名?
① 找出题目中暗含属性、以及它们所在的表
② 根据主键、外键找出表与表之间连接的属性
虽然CNo和CN都可标识课程,但CNo是课程表C的主键和SC表的外键,我们很自然会选择CNo,而舍弃CN
③ 根据上面的表的关系,先进行单表操作(选取?投影?)
④ 根据题意和表联系,进行多表操作(自然连接?连接?除?)
得到答案
转换成sql代码为
select T1.SNo,SN from
--表1
(select SNo,count(*) As C_Num from SC
group by(SNo)
having(count(*)=(select count(CNo) from C))) AS T1
inner join
--表2
(select SN,SNo from S) AS T2
on T1.SNo=T2.SNo