当前位置:实例文章 » 其他实例» [文章]MySQL学生表和分数表的多表查询

MySQL学生表和分数表的多表查询

发布人:shili8 发布时间:2024-12-28 13:02 阅读次数:0

**MySQL 多表查询实例**

在这个例子中,我们将创建两个表:`student` 和 `score`。`student` 表用于存储学生信息,`score` 表用于存储学生的成绩。

### student 表结构

sqlCREATE TABLE student (
 id INT PRIMARY KEY AUTO_INCREMENT,
 name VARCHAR(255) NOT NULL,
 age INT NOT NULL,
 sex ENUM('男', '女') NOT NULL);


### score 表结构
sqlCREATE TABLE score (
 id INT PRIMARY KEY AUTO_INCREMENT,
 student_id INT NOT NULL,
 subject VARCHAR(255) NOT NULL,
 score DECIMAL(3,2) NOT NULL,
 FOREIGN KEY (student_id) REFERENCES student(id)
);


在 `score` 表中,我们定义了一个外键 `student_id`,它指向 `student` 表的 `id` 字段。这意味着每个成绩记录都必须与一个学生相关联。

### 多表查询示例现在,让我们来看看一些多表查询的例子:

####1. 查询所有学生及其最高分数
sqlSELECT s.name, s.age, MAX(sc.score) AS max_scoreFROM student sJOIN score sc ON s.id = sc.student_idGROUP BY s.id;


在这个例子中,我们使用 `JOIN` 关键字将 `student` 表和 `score` 表连接起来。然后,我们使用 `MAX` 函数来找出每个学生的最高分数。

####2. 查询所有学生及其平均分数
sqlSELECT s.name, AVG(sc.score) AS avg_scoreFROM student sJOIN score sc ON s.id = sc.student_idGROUP BY s.id;


这个例子与前一个例子类似,但我们使用 `AVG` 函数来找出每个学生的平均分数。

####3. 查询所有学生及其最高分数的科目
sqlSELECT s.name, MAX(sc.score) AS max_score, sc.subjectFROM student sJOIN score sc ON s.id = sc.student_idGROUP BY s.id;


在这个例子中,我们使用 `MAX` 函数来找出每个学生的最高分数,并且我们还选择了最高分数对应的科目。

####4. 查询所有学生及其平均分数的科目
sqlSELECT s.name, AVG(sc.score) AS avg_score, sc.subjectFROM student sJOIN score sc ON s.id = sc.student_idGROUP BY s.id;


这个例子与前一个例子类似,但我们使用 `AVG` 函数来找出每个学生的平均分数,并且我们还选择了平均分数对应的科目。

####5. 查询所有学生及其最高分数和平均分数
sqlSELECT s.name, MAX(sc.score) AS max_score, AVG(sc.score) AS avg_scoreFROM student sJOIN score sc ON s.id = sc.student_idGROUP BY s.id;


在这个例子中,我们使用 `MAX` 和 `AVG` 函数来找出每个学生的最高分数和平均分数。

### 总结在这个例子中,我们创建了两个表:`student` 和 `score`。我们使用多表查询来找出学生的最高分数、平均分数、最高分数对应的科目等信息。这些例子展示了如何使用 `JOIN` 关键字将两个或多个表连接起来,并且如何使用聚合函数(如 `MAX` 和 `AVG`) 来处理数据。

###代码注释* 在 `student` 表中,我们定义了一个主键 `id` 以及三个列:`name`、`age` 和 `sex`。
* 在 `score` 表中,我们定义了一个外键 `student_id` 以及三个列:`subject`、`score` 和 `id`。
* 我们使用 `JOIN` 关键字将 `student` 表和 `score` 表连接起来,以便能够访问两个表的数据。
* 我们使用聚合函数(如 `MAX` 和 `AVG`) 来处理数据,并且我们选择了需要的列以便能够得到想要的结果。

###代码示例
sql-- 创建 student 表CREATE TABLE student (
 id INT PRIMARY KEY AUTO_INCREMENT,
 name VARCHAR(255) NOT NULL,
 age INT NOT NULL,
 sex ENUM('男', '女') NOT NULL);

-- 创建 score 表CREATE TABLE score (
 id INT PRIMARY KEY AUTO_INCREMENT,
 student_id INT NOT NULL,
 subject VARCHAR(255) NOT NULL,
 score DECIMAL(3,2) NOT NULL,
 FOREIGN KEY (student_id) REFERENCES student(id)
);

-- 查询所有学生及其最高分数SELECT s.name, MAX(sc.score) AS max_scoreFROM student sJOIN score sc ON s.id = sc.student_idGROUP BY s.id;

-- 查询所有学生及其平均分数SELECT s.name, AVG(sc.score) AS avg_scoreFROM student sJOIN score sc ON s.id = sc.student_idGROUP BY s.id;


在这个例子中,我们创建了两个表:`student` 和 `score`。我们使用多表查询来找出学生的最高分数和平均分数。

###代码注释* 在 `student` 表中,我们定义了一个主键 `id` 以及三个列:`name`、`age` 和 `sex`。
* 在 `score` 表中,我们定义了一个外键 `student_id` 以及三个列:`subject`、`score` 和 `id`。
* 我们使用 `JOIN` 关键字将 `student` 表和 `score` 表连接起来,以便能够访问两个表的数据。
* 我们使用聚合函数(如 `MAX` 和 `AVG`) 来处理数据,并且我们选择了需要的列以便能够得到想要的结果。

###代码示例
sql-- 查询所有学生及其最高分数和平均分数SELECT s.name, MAX(sc.score) AS max_score, AVG(sc.score) AS avg_scoreFROM student sJOIN score sc ON s.id = sc.student_idGROUP BY s.id;


在这个例子中,我们使用多表查询来找出学生的最高分数和平均分数。

### 总结在这个例子中,我们创建了两个表:`student` 和 `score`。我们使用多表查询来找出学生的最高分数、平均分数、最高分数对应的科目等信息。这些例子展示了如何使用 `JOIN` 关键字将两个或多个表连接起来,并且如何使用聚合函数(如 `MAX` 和 `AVG`) 来处理数据。

###代码注释* 在 `student` 表中,我们定义了一个主键 `id` 以及三个列:`name`、`age` 和 `sex`。
* 在 `score` 表中,我们定义了一个外键 `student_id` 以及三个列:`subject`、`score` 和 `id`。
* 我们使用 `JOIN` 关键字将 `student` 表和 `score` 表连接起来,以便能够访问两个表的数据。
* 我们使用聚合函数(如 `MAX` 和 `AVG`) 来处理数据,并且我们选择了需要的列以便能够得到想要的结果。

###代码示例
sql-- 查询所有学生及其最高分数和平均分数SELECT s.name, MAX(sc.score) AS max_score, AVG(sc.score) AS avg_scoreFROM student sJOIN score sc ON s.id = sc.student_idGROUP BY s.id;


在这个例子中,我们使用多表查询来找出学生的最高分数和平均分数。

### 总结在这个例子中,我们创建了两个表:`student` 和 `score`。我们使用多表查询来找出学生的最高分数、平均分数、最高分数对应的科目等信息。这些例子展示了如何使用 `JOIN` 关键字将两个或多个表连接起来,并且如何使用聚合函数(如 `MAX` 和 `AVG`) 来处理数据。

###代码注释* 在 `student` 表中,我们定义了一个主键 `id` 以及三个列:`name`、`age` 和 `sex`。
* 在 `score` 表中,我们定义了一个外键 `student_id` 以及三个列:`subject`、`score` 和 `id`。
* 我们使用 `JOIN` 关键字将 `student` 表和 `score` 表连接起来,以便能够访问两个表的数据。
* 我们使用聚合函数(如 `MAX` 和 `AVG`) 来处理数据,并且我们选择了需要的列以便能够得到想要的结果。

###代码示例
sql-- 查询所有学生及其最高分数和平均分数SELECT s.name, MAX(sc.score) AS max_score, AVG(sc.score) AS avg_scoreFROM student sJOIN score sc ON s

相关标签:mysql数据库
其他信息

其他资源

Top