实验4 数据库的连接查询
4.1实验目的及要求
掌握简单表的数据查询、数据排列和表链接查询的操作方法
4.2实验内容
简单查询操作和连接查询操作。
4.3实验步骤
4.3.1连接查询
1.查询每个学生及选秀课程情况
Select student.,sc. from student,sc where student.sno=sc.sno;
比较:笛卡尔集:select student.*,sc.*from student,sc;
自然连接:select student,sno,sname,ssex,sdept,cno,grade from student,sc where student.sno=sc.sno;
2.查询每一门课程的间接先行课(只求两层即先行课的先行课);
Select First.cno,Second.cpno 间接先行课 from course First,course Second where First.cpno=Second.cno;
比较:select First.cno,Second.cpno 间接先行课 from course First,course Secnod where First.cpno=Second.cno;
3.查询每个学生及其选修课程的情况,用左外连接完成。
select student.sno,sname,ssex,sage,sdept,cno,grade from student left outer join sc on student.sno=sc.sno;
左外连接(=),将返回左表的所有行;若没有匹配行,则在,则在相关联的结果集行中右表的所有选择列表列均为空值(null)
右连接(=),right(left)outer join 将返回右表的所有行
复合条件连接:WHERE 子句中可以有多个连接条件:
4.查询每个学生的学号,姓名,选修的课程名和成绩:
Select s.sno,sname,cname,grade from student S,course C,sc SC where S.sno=SC.sno and C.cno=SC.cno;
5.查询选修2号课程且成绩在90分以上的所有学生
Select student.sno,sname from student,sc where student.sno=sc.sno and sc.sno and sc.cno=’2’ and sc.grade>90;
思考:
如何求出不及格学生的学号,姓名,不及格的课程名以及成绩。
select student.sno, sname ,grade from student,sc where student.sno and student.sname and sc.cname and sc.grade<60;