文档详情

《数据库原理及应用教程-MySQL8.0》课件 第6章 数据库查询.ppt

发布:2025-04-17约1.18万字共62页下载文档
文本预览下载声明

6.7.3DELETE语句中使用SELECT子句【例6-49】将2022级软件工程专业郭小伟选修的C001号课删除。DELETEFROMscWHEREcno=C001ANDsno=(SELECTsnoFROMstudentWHEREsname=郭小伟ANDgrade=2022级ANDmajor=软件工程);6.4.1内连接内连接把两个表中的数据连接生成第三个表,第三个表中仅包含那些满足连接条件的数据行。内连接的语法:SELECTselect_listFROMtable1INNERJOINtable2ONjoin_condition或SELECTselect_listFROMtable1,table2WHEREjoin_condition连接条件格式为:[table1.]column1compareoperator[table2.]column26.4.1内连接【例6-22】查询每个学生的姓名、课程号和成绩。USEteaching;SELECTstudent.sname,sc.cno,sc.scoreFROMstudentINNERJOINscONstudent.sno=sc.sno;也可以利用下面的程序来实现:SELECTstudent.sname,sc.cno,sc.scoreFROMstudent,scWHEREstudent.sno=sc.sno;注意:当从多个表中查询的列名相同时,列名前必须加表名;列名不同时,列名前可以不加表名,但有时也会加上表名,以增强可读性。6.4.1内连接【例6-23】查询计算机科学与技术专业的学生所选的每门课的平均分。USEteaching;SELECTb.cno,avg(b.score)as平均成绩FROMstudentaINNERJOINscbONa.sno=b.snoanda.major=计算机科学与技术GROUPBYb.cno;为了简化输入,可以在SELECT查询的FROM子句中为表定义一个临时别名,在查询中引用,以缩写表名。6.4.1内连接【例6-24】查询成绩在75分以上的学生的学号、姓名,选修课的课程号、课程名、成绩。USEteaching;SELECTc.cno,c.cname,a.sno,a.sname,b.scoreFROMstudentASaJOINscASbONa.sno=b.snoANDb.score75JOINcourseASconb.cno=c.cno;6.4.2自连接连接操作不仅可以在不同的表上进行,而且在同一张表内可以进行自身连接,即将同一个表的不同行连接起来。自连接可以看作一张表的两个副本之间的连接。必须为表指定两个别名,使之在逻辑上成为两张表。【例6-25】查询同名学生的信息。USEteaching;SELECT*FROMstudentaINNERJOINstudentbONa.sname=b.snameANDa.snob.sno;6.4.3外连接外连接一般只限制其中一个表的数据行,而不限制另外一个表中的数据。这种连接形式在许多情况下是非常有用的,例如在连锁超市统计报表时,不仅要统计那些有销售量的超市和商品,而且还要统计那些没有销售量的超市和商品。在MySQL系统中,可以使用的两种外连接关键字,即LEFTOUTERJOIN和RIGHTOUTERJOIN。①左外连接是对连接条件中左边的表不加限制。②右外连接是对连接条件中右边的表不加限制。6.4.3外连接【例6-26】查询每个学生及其选修课程的成绩情况(含未选课的学生信息)。USEteaching;SELECTstudent.*,sc.cno,sc.scoreFROMstudentLEFTJOINscONstudent.sno=sc.sno;【例6-27】查询学生选修课程的情况(含未被选修的课程信息)。USEteaching;SELECTsc.sno,sc.score,course.*FROMscRIGHTJOINcourseONsc.cno=course.cno;如果想查询成绩最高的学生的学号和姓名。SELECTstudent.sno,sname,scoreFROMstudent,scWHEREscore=MAX(score)Ands

显示全部
相似文档