数据库中如何使用多表连接?

146 阅读3分钟

之前有学过 mysql 数据库的经验,今天数据库实验课中的实验题,我发现好多 知识点已经忘记了。 感觉之前的白学了。  这里 我要夸一夸一个东西 那就是chatgpt,这个东西确实是挂一般的存在。我把实验题目 复制在那上面,chatgpt很准确的把对应的sql给我写了出来,并做出了对应的解析。 我觉得真的很不错。如果大家想知道对应的流程,我会做一期详细的文章来说明如何注册使用chatgpt。 

接下来 我们就步入正题了。 一共三个实验题。今天我们就说第一个实验题

第一个实验

题目:

创建两个表,一个表为学生信息表stud(学号 姓名 性别 身份证 家庭地址 电话),一个为学生成绩表CourseGrade(学号,课程名称,考试分数 考试时间 考试地点 任课老师),插入至少10个学生,其中6个男生,4个女生,成绩表中插入至少两门课程和10个学生的两门课程的成绩。

 1)求各门课程的平均成绩 

2)分别求各门课程男女同学的平均成绩

3)将每个同学的成绩按照 学号 姓名 课程名称 成绩 输出

解析:

_第一题:_还比较简单,sql语句如下。 主要就是查询出两个字段,课程名(course_name)平均分数(average_score) 。 我们这儿 用AVG()这个函数来求分数的平均值 。 AS用来重命名。  分组就是根据course_name 进行分组。 

SELECT course_name, AVG(score) AS average_score FROM coursegrade GROUP BY course_name;

第二题: 就比第一题 要稍微动点脑阔了,sql语句如下。由于男女性别的字段和各门课程和对应的成绩不在一个表中,此时我们就要用到多表查询了。多表查询 可能很多人就忘了,我们这里简单回忆以下多表查询。

**多表查询:**多表查询是在关系型数据库中使用的一种查询技术,它可以同时从多个表中检索数据并将它们进行合并。多表查询通常用于解决需要跨多个表获取数据的查询问题。

在多表查询中,需要使用 SQL 语句中的 JOIN 操作符将多个表连接在一起。JOIN 操作符可以按照一定的条件将两个或多个表中的数据进行匹配,然后将它们合并成一个结果集。

常见的 JOIN 操作符包括 INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL OUTER JOIN。其中,INNER JOIN 只返回满足 JOIN 条件的记录,LEFT JOIN 返回左表中的所有记录以及满足 JOIN 条件的右表记录,RIGHT JOIN 返回右表中的所有记录以及满足 JOIN 条件的左表记录,而 FULL OUTER JOIN 则返回左右表中的所有记录。

欧克 多表查询说完了。该sql 就比较好理解了

SELECT CourseGrade.course_name, Stud.gender, AVG(CourseGrade.score) AS average_score
FROM CourseGrade
JOIN Stud ON CourseGrade.stu_id = Stud.stu_id
GROUP BY CourseGrade.course_name, Stud.gender;

**第三题:**这一题 和第二题思路一样 我们需要的字段不在同一个表中,此时我们就需要多表连接了。

SELECT stud.stu_id, stud.`name`, CourseGrade.course_name, CourseGrade.score
FROM stud
JOIN CourseGrade ON stud.stu_id = CourseGrade.stu_id;

这第一个实验 帮大家复习巩固了一下,外连接这个知识点以及应用场景。后续有时间 将会更新后续的实验~~~~