文档详情

数据库—05(SQL语句)答案.ppt

发布:2017-03-15约7.13千字共62页下载文档
文本预览下载声明
数据查询(data quary) 找出学生总共选修了多少门课程 Select cno,count(cno) From sc group by cno 查找选修人数超过1人的课程号 Select cno,count(sno) From sc group by cno Having count(*)1 group by 的使用 连接查询(link quary) 查询选修每个学生及其选修课程的情况 select student.*, sc.* from student,sc where student.sno=sc.sno 若一个查询同时涉及到两个以上的表,称之为连接查询 若去掉等值连接目标列中重复的属性,则为自然连接 自然连接 一般要求参与运算的两个关系必须有一个以上的公共属性。 如果没有,则自然连接等于乘积操作。 X Y Z A a 1 a a d 2 b d c 3 c f X Y Z a 1 a b 2 b c 3 c d 4 d A Y a 1 d 2 f 3 c 7 T = R ? S 自然连接的步骤 乘积,求出参与运算的R和S的 乘积RХS; 选择,挑选出在所有公共属性 上相等的值 R.Ai=S.Ai; 投影,去掉重复属性; X R.Y S.Y Z A a 1 1 a a a 1 2 a d a 1 3 a f a 1 7 a c b 2 1 b a b 2 2 b d b 2 3 b f b 2 7 b c c 3 1 c a c 3 2 c d c 3 3 c f c 3 7 c c d 4 1 d a d 4 2 d d d 4 3 d f d 4 7 d c 连接查询(link quary) 查询每一门课程的间接先修课程(即先修课程的先修课程) select first.cno,second.cpno from course first,course second where first.cpno=second.cno 注意选择的字段和用来比较的字段 连接不仅可以在不同的表之间进行,也可在同一个表中进行 嵌套查询 查询选修了“信息系统”课程的学生的学号和成绩 select sno,grade from sc where sc.cno=(select cno from course where cname=信息系统) 将一个查询块嵌套在另一个查询块的where 子句或having 子句中 将某个查询作为另一个查询的中间结果 Sno Sname Ssex Sage Sdept 200215121 李勇 男 20 CS 200215122 刘晨 男 19 CS 200215123 王敏 女 18 MA 200215125 张力 男 19 IS Cno Cname Cpno Ccredit 001 数据库 005 4 002 数学 005 4 003 信息系统 005 4 004 操作系统 005 4 005 数据结构 005 4 006 数据处理 005 4 007 pascal 005 4 Sno Cno Grade 200215121 1 92 200215121 2 85 200215121 3 88 200215122 2 90 200215122 3 80 Student表 Course表 选课表 嵌套查询 查询各课程的课程名及选修人数? 解:将任务分解为2步, 1.找出各课程的选修人数; 2.根据课程号连接第一步的查询结果和course表。 select c
显示全部
相似文档