收藏 分销(赏)

关系代数和SQL练习.doc

上传人:pc****0 文档编号:6513533 上传时间:2024-12-10 格式:DOC 页数:5 大小:60.50KB 下载积分:10 金币
下载 相关 举报
关系代数和SQL练习.doc_第1页
第1页 / 共5页
关系代数和SQL练习.doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
对下列关系模式分别用关系代数、和SQL实现下列查询 理解下面几句话: 1. SQL语言是具有很坚实数学基础的语言 2. SQL语言是介于关系代数和关系演算之间的结构化查询语言 3. 一个查询只要能用关系代数或关系演算实现,必能用SQL实现 4. 一个查询即能用关系代数、关系演算、SQL实现 5. 在SQL语言中,能用非EXISTS谓词实现的查询,均能用EXISTS谓词实现,反之不一定。   1. 查询学生95001的所有信息。 ① 关系代数: ②SQL语言: SELECT * FROM Student WHERE Sno='95001'   2. 查询学生95001的姓名和所在系。 ① 关系代数: ②SQL语言: 方法一: SELECT Sname,Sdept FROM Student WHERE Sno='95001' 方法二: SELECT Sname,Sdept FROM Student WHERE EXISTS ( SELECT * FROM Student SX WHERE Student.Sno=SX.Sno AND SX.Sno='95001' ) 方法三: SELECT Sname,Sdept FROM Student WHERE Sno IN ( SELECT Sno FROM Student WHERE Sno='95001' )   3. 查询选修了1号课的学生的学号。 ① 关系代数: ②SQL语言: 方法一: SELECT Sno FROM SC WHERE Cno='1' 方法二: SELECT Sno FROM SC WHERE EXISTS ( SELECT * FROM SC SCX WHERE SC.Sno=SCX.Sno AND SCX.Cno='1' ) 方法三: SELECT Sno FROM SC WHERE Sno IN ( SELECT Sno FROM SC WHERE Cno='1' )   4. 查询选修了1号课的学生的姓名。 ① 关系代数: ②SQL语言: 方法一: SELECT Sname FROM Student,SC WHERE SC.Sno=Student.Sno AND Cno='1' 方法二: SELECT Sname FROM Student WHERE EXISTS ( SELECT * FROM SC WHERE SC.Sno=Student.Sno AND Cno='1' ) 方法三: SELECT Sname FROM Student WHERE Sno IN ( SELECT Sno FROM SC WHERE Cno='1' )   5. 查询至少选修了1号课和3号课的学生的学号。 ① 关系代数: 或 或: 首先建立一个临时关系K: cno 1 3 然后求:πSno.Cno(SC)÷K ②SQL语言: 方法一: SELECT SCX.Sno FROM SC, SC SCX WHERE SC.Cno='1' AND SCX.Sno=SC.Sno AND SCX.Cno='3' 方法: SELECT Sno FROM SC WHERE EXISTS ( SELECT * FROM SC SCX WHERE SC.Cno='1' AND SCX.Sno=SC.Sno AND SCX.Cno='3' ) 方法二: SELECT Sno FROM SC WHERE Cno='1' AND Sno IN ( SELECT Sno FROM SC WHERE Cno='3' )   6. 查询至少选修了一门其直接先行课为5号课的学生学号。 ① 关系代数: ②SQL语言: 方法一: SELECT Sno FROM SC,Course WHERE SC.Cno=Course.Cno AND Course.Cpno='5' 方法二: SELECT Sno FROM SC WHERE EXISTS ( SELECT * FROM Course WHERE SC.Cno=Course.Cno AND Course.Cpno='5' ) 方法三: SELECT Sno FROM SC WHERE Cno IN ( SELECT Cno FROM Course WHERE Cpno='5' )   7. 查询至少选修了一门其直接先行课为5号课的学生姓名。 ① 关系代数: ②SQL语言: 方法一: SELECT Sname FROM Student,SC,Course WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno AND Course.Cpno='5' 方法二: SELECT Sname FROM Student WHERE EXISTS ( SELECT * FROM SC WHERE Student.Sno=SC.Sno AND EXISTS ( SELECT * FROM Course WHERE SC.Cno=Course.Cno AND Course.Cpno='5' ) ) 方法三: SELECT Sname FROM Student WHERE Sno IN ( SELECT Sno FROM SC WHERE Cno IN ( SELECT Cno FROM Course WHERE Cpno='5' ) )   8. 查询没有选修1号课程的学生姓名。 ① 关系代数: ②SQL语言: SELECT Sname FROM Student WHERE NOT EXISTS ( SELECT * FROM SC WHERE Student.Sno=SC.Sno AND SC.Cno='1' )   9. 查询选修了全部课程的学生的学号和姓名。 ① 关系代数: ②SQL语言: SELECT Sno,Sname FROM Student WHERE NOT EXISTS ( SELECT * FROM Course WHERE NOT EXISTS ( SELECT * FROM SC WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno ) )   10.查询最少选修了95002学生所选课程的学生学号。 ① 关系代数: ②SQL语言: 方法一: SELECT Sno FROM SC WHERE NOT EXISTS ( SELECT * FROM Course WHERE EXISTS ( SELECT * FROM SC SCX WHERE SCX.Sno='95002' AND SCX.Cno=Course.Cno AND NOT EXISTS ( SELECT * FROM SC SCY WHERE SCY.Sno=SC.Sno AND SCY.Cno=Course.Cno ) ) ) 方法二: SELECT Sno FROM SC WHERE NOT EXISTS ( SELECT * FROM SC SCX WHERE SCX.Sno='95002' AND NOT EXISTS ( SELECT * FROM SC SCY WHERE SCY.Sno=SC.Sno AND SCY.Cno=SCX.Cno ) ) 方法三: SELECT Sno FROM Student WHERE NOT EXISTS ( SELECT * FROM SC SCX WHERE SCX.Sno='95002' AND NOT EXISTS ( SELECT * FROM SC SCY WHERE SCY.Sno=Student.Sno AND SCY.Cno=SCX.Cno ) )  
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服