MySQL数据库多表查询内连接实例解析

需积分: 10 11 下载量 178 浏览量 更新于2024-08-16 收藏 2.14MB PPT 举报
"这篇教程主要介绍了MySQL数据库中的多表查询,特别是内连接的概念,并通过实例展示了内连接的使用方法。" 在MySQL数据库中,多表查询是数据操作的重要部分,尤其是内连接(INNER JOIN),它用于从两个或更多表中返回匹配的行。内连接基于指定的条件,在这个例子中,条件是`C.StudentID = S.SNo`,这表示`Sc`表中的`StudentID`必须与`Students`表中的`SNo`相等。这样的连接方式会返回那些在两表中都有对应匹配记录的结果。 首先,我们来看第一个内连接的例子: ```sql SELECT S.SName, C.CourseID, C.Grade FROM Sc AS C INNER JOIN Students AS S ON C.StudentID = S.SNo; ``` 在这个查询中,`Sc`表(课程表)和`Students`表(学生表)被连接,连接依据是学生的学号`SNo`和课程的学生ID`StudentID`。结果集包含了匹配的`SName`(学生姓名)、`CourseID`(课程ID)和`Grade`(成绩)。返回的结果是那些学生和他们对应的课程及成绩,只有当`Sc`表中的`StudentID`存在于`Students`表中的`SNo`时才会显示。 第二个例子,虽然交换了表的顺序,但结果仍然相同: ```sql SELECT S.SName, C.CourseID, C.Grade FROM Students AS S INNER JOIN Sc AS C ON C.StudentID = S.SNo; ``` 这是因为内连接是根据指定的条件进行的,不论表的顺序如何,只要满足条件的匹配行都会被返回。 第三个例子使用了不等于(<>)操作符,这将导致不同的结果: ```sql SELECT S.SName, C.CourseID, C.Grade FROM Students AS S INNER JOIN Sc AS C ON C.StudentID <> S.SNo; ``` 在这里,条件变为`C.StudentID`不等于`S.SNo`,这将返回所有在`Students`表中的学生,但他们的`StudentID`不在`Sc`表的`StudentID`中,反之亦然。因此,这个查询不会返回任何匹配的记录,因为没有学生ID在两表中是不匹配的。 在讲解数据库基础时,提到了数据库的一些基本概念。数据是数据库中存储的基本元素,可以是文字、图形、图像等各种形式,并且数据与其语义是不可分割的。数据库(Database)是一个存储和管理数据的仓库,按照数据结构组织。随着技术的发展,数据库经历了从人工管理到文件系统,再到现在的数据库系统阶段,其中关系型数据库是最广泛应用的类型。关系模型是目前主流的数据模型,它的数据结构简单,允许通过键(如`StudentID`和`SNo`)来关联不同表中的数据。 在这个MySQL教程中,崔文华提供了他的联系方式,并简单介绍了数据库的基本概念,包括数据、数据库、数据库管理系统和数据库系统。还提到了数据库的发展历程,从早期的纯文本数据库到关系数据库,以及现代的“关系-对象”型数据库,表明了数据库技术的不断进步和适应各种复杂应用需求的能力。