文档详情

数据库技术项目式教程(MySQL)课件 任务4.3多表连接查询.pptx

发布:2025-05-03约2.13千字共14页下载文档
文本预览下载声明

多表连接查询

任务提出在实际应用中,查询往往是针对多个表进行的,可能涉及二张或更多张表。

任务分析在关系型数据库中,将这种涉及到两个或两个以上表的查询,称为多表连接查询。连接查询是关系数据库中最重要的查询。连接查询根据返回的连接记录情况,分为“内连接”和“外连接”查询。

1.内连接返回多个表中满足连接条件的记录。连接条件指明两个表按照什么条件进行连接。表名1.列名1比较运算符表名2.列名2等值连接:比较运算符为“=”。非等值连接:用了其他运算符的连接。【例】Student和Score表的连接条件。Student.Sno=Score.Sno相关知识与技能

(1)连接条件的指定连接条件的指定可在FROM子句或WHERE子句中。在旧式的SQL语句中:FROM表名1,表名2WHERE连接条件在ANSISQL-92中:FROM表名1[INNER]JOIN表名2ON连接条件建议使用在FROM子句中指定连接条件。相关知识与技能

【例】查询所有学生选修课程的详细信息,结果包含学号、课程编号、课程名称、课程学分、平时成绩、期末成绩。USESchool;SELECTSno,Score.Cno,Cname,Credit,Uscore,EndscoreFROMScoreJOINCourseONScore.Cno=Course.Cno;注意:对于在查询引用的多个表中重复的列名必须指定表名,即表名.列名。任务实施

(2)给表指定别名如果表名比较复杂,可以给表指定别名。FROM表名1AS表别名JOIN表名2AS表别名ON连接条件或者FROM表名1表别名JOIN表名2表别名ON连接条件【例】查询计算机093班学生的学号和姓名。SELECTSno,SnameFROMStudentASsJOINClassAScONs.Classno=c.ClassnoWHEREClassName=计算机093;相关知识与技能

(3)三张表或更多表的连接多表连接可能涉及三张表或更多表的连接。连接实现的步骤是:先两张表进行连接形成虚表1,虚表1与第三张表进行连接形成虚表2,虚表2与第四张表进行连接形成虚表3,……最后对虚表n进行查询得出查询结果。相关知识与技能

任务实施【例】查询所有学生的学号、姓名、班级名称、选修的课程编号及平时成绩。SELECTStudent.Sno,Sname,ClassName,Cno,UscoreFROMClassJOINStudentONClass.ClassNo=Student.ClassNoJOINScoreONStudent.Sno=Score.Sno;

(4)自连接查询一个连接查询中涉及的两个表都是同一个表。必须对表指定别名。FROM表名别名1JOIN表名别名2ON连接条件【例】查询出与陈国成同班的学生详细信息。SELECTs2.*FROMStudents1JOINStudents2ONs1.ClassNo=s2.ClassNoWHEREs1.Sname=陈国成ANDS2.Sname!=陈国成;相关知识与技能

2.外连接除返回内部连接的记录以外,还在查询结果中返回左表或右表中不符合条件的记录。相关知识与技能

外连接(1)左外连接FROM表名1LEFT[OUTER]JOIN表名2ON连接条件【例】查询所有学生的详细信息及其选课信息,如果学生没有选课,也显示其详细信息。SELECTStudent.*,Cno,UScore,EndScoreFROMStudentLEFTJOINScoreONStudent.Sno=Score.Sno;相关知识与技能

外连接(2)右外连接FROM表名1RIGHT[OUTER]JOIN表名2ON连接条件【例】查询所有学生的详细信息及其选课信息,如果学生没有选课,也显示其详细信息。SELECTStudent.*,Cno,UScore,EndScoreFROMScoreRIGHTJOINStudentONStudent.Sno=Score.Sno;相关知识与技能

任务总结多表连接查询是关系数据库中最重要的查询。连接查询分为内连接和外连接查询。其中内连接查询是实际应用中最常用的。SELECT[ALL|DISTINCT]目标列表达式FROM表名1[JOIN表名2ON表名1.列名1=表名2.列名2]

显示全部
相似文档