《MySQL数据库技术及应用项目教程》教学PPT(共9单元)项目3 查询与维护学生成绩数据库中的表.pptVIP

  • 21
  • 0
  • 约2.52万字
  • 约 94页
  • 2022-03-29 发布于安徽
  • 举报

《MySQL数据库技术及应用项目教程》教学PPT(共9单元)项目3 查询与维护学生成绩数据库中的表.ppt

苏州经贸职业技术学院刘芳 * (2)在客户端命令窗口中输入并执行如下查询语句: 【任务实现】 SELECT class_id, class_name, class_num FROM bclass WHERE class_numALL(SELECT class_num FROM bclass WHERE major_id=31); 说明:需要注意的是,上述带ANY、SOME和ALL谓词的子查询不能在ANY、SOME和ALL谓词前加NOT关键字,但可以用“”号表示否定。 苏州经贸职业技术学院刘芳 * 【任务描述】(1)查询考试成绩有不及格的学生的学号、姓名和班级号;(2)查询与“张山”在同一个班级学习的学生学号与姓名。 任务3.8.3 嵌套子查询——使用IN谓词的嵌套子查询 【任务分析】任务3.8.2在处理子查询返回单列多行的情况时,需要使用比较运算符以及ANY、SOME或ALL谓词连接父查询与子查询。在实际应用中,子查询返回单列多行的情况有时还可以使用IN或NOT IN运算符来连接父查询与子查询,以判断某个属性列的值是否在子查询返回的结果中。 如任务(1)应先在bscore表中查出有考试成绩不及格的学生学号作为子查询的结果,再在bstudent表中查找学号在此子查询结果集中的学生信息,由于有考试成绩不及格的学生可能有多名,所以可用IN运算符来连接子查询与父查询。 苏州经贸职业技术学院刘芳 * 在任务(1)中,又由于学生的基本信息存放在bstudent表中,而该表中没有学生成绩字段,需与bscore表结合才能查到符合题目条件所要求的信息。此时如果用嵌套子查询来求解,则可以先在bscore表中确定score60的学生的学号,并将其作为子查询,然后再在bstudent表中查找学号在此子查询返回的结果集中的学生信息。 SELECT stud_id, stud_name, class_id FROM bstudent WHERE stud_id IN (SELECT DISTINCT stud_id FROM bscore WHERE score60); 【任务实现】 苏州经贸职业技术学院刘芳 * 在任务(2)中,由于“张山”这个名字在学生表中可能会有重名的现象,也就是说子查询“张山”所在班级的结果有可能不惟一,所以该查询要用带IN谓词的子查询来实现 。 SELECT stud_id, stud_name FROM bstudent WHERE class_id IN (SELECT class_id FROM bstudent WHERE stud_name = 张山); 苏州经贸职业技术学院刘芳 * 【任务描述】根据教材附录的附表1-1~附表1-5提供的学生成绩数据库各数据表的数据实例,基于bstudent和bscore等2张表进行合并查询。 任务3.9 在学生成绩数据库中实现合并查询 【任务分析与知识储备】合并查询(也称联合查询)是将两个或更多查询的结果集组合为单个结果集,该结果集包含合并查询中的所有查询的全部行。这与连接查询是不同的,其主要区别有以下两点:①在合并查询中,合并的是两个查询结果集;而在连接查询中,连接的是两个表。②在合并查询中,行的最大数量是两个查询结果集行的“和”;而在连接查询中,行的最大数量是两个表行的“乘积”。 苏州经贸职业技术学院刘芳 * 知识点 :合并查询的语法结构 合并查询的命令格式为: SELECT语句1 UNION [ALL] SELECT语句2 格式说明:①SELECT语句1和SELECT语句2为要合并的两个结果集的查询语句,其结果集中的列数和列的顺序必须相同,列的数据类型要么相同,要么存在可能的隐性数据转换或提供了显式转换;②UNION的结果集列名与第一个SELECT语句中的结果集的列名相同,其他SELECT语句的结果集列名被忽略;③ALL为可选项,如果使用它,那么结果集中将包含所有行,并且不删除重复行;否则UNION 运算符将从结果集中删除重复行。 苏州经贸职业技术学院刘芳 * 【任务描述】合并bStudent表中年龄大于20或性别为“男”的学生信息,包括学生的学号、姓名

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档