mysql将“计算机系”同学的选课信息中的成绩置0
时间: 2024-05-15 09:19:47 浏览: 9
假设有以下表格:
```
CREATE TABLE course (
id INT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE student (
id INT PRIMARY KEY,
name VARCHAR(50),
department VARCHAR(50)
);
CREATE TABLE enrollment (
id INT PRIMARY KEY,
student_id INT,
course_id INT,
grade INT,
FOREIGN KEY (student_id) REFERENCES student(id),
FOREIGN KEY (course_id) REFERENCES course(id)
);
```
可以使用以下SQL语句将“计算机系”同学的选课信息中的成绩置0:
```
UPDATE enrollment
SET grade = 0
WHERE student_id IN (
SELECT id FROM student
WHERE department = '计算机系'
);
```
这条语句将会更新 enrollment 表中,所有学生所选的课程成绩,但只有“计算机系”同学所选的课程成绩会被置为0。
相关问题
MySQL查询所有同学的学号、姓名、选课数、总成绩
可以使用以下SQL语句查询所有同学的学号、姓名、选课数、总成绩:
```
SELECT student.id, student.name, COUNT(score.course_id) AS course_num, SUM(score.score) AS total_score
FROM student LEFT JOIN score ON student.id = score.student_id
GROUP BY student.id, student.name;
```
上述SQL语句中,使用了LEFT JOIN将学生表(student)和成绩表(score)连接起来,以便查询学生的选课数和总成绩。使用COUNT和SUM函数对选课数和总成绩进行统计,并使用GROUP BY对每个学生进行分组。
MYSQL 创建触发器,当输入某个同学选课成绩时,更新其平均成绩
假设你有一个名为 `students` 的表,其中包含学生的成绩信息,包括学生的姓名(`name`)、成绩(`score`)和平均成绩(`avg_score`)。现在你想要创建一个触发器,当输入某个同学的成绩时,自动更新其平均成绩。
首先,你需要创建一个 `BEFORE INSERT` 触发器,以便在插入新数据之前执行更新操作。以下是一个示例 SQL 语句:
```
CREATE TRIGGER update_avg_score
BEFORE INSERT ON students
FOR EACH ROW
BEGIN
-- 更新学生的平均成绩
UPDATE students
SET avg_score = (SELECT AVG(score) FROM students WHERE name = NEW.name)
WHERE name = NEW.name;
END;
```
这个触发器的作用是:当插入新的数据(即学生的成绩信息)之前,根据该学生的姓名(`NEW.name`)查询其所有成绩的平均值,并将结果更新到该学生的平均成绩(`avg_score`)字段中。
需要注意的是,这个触发器是在每一行数据插入之前执行的,因此每次更新平均成绩时都会重新计算该学生的所有成绩的平均值。如果你有大量的数据需要更新,可能会影响性能。为了避免这种情况,你可以考虑将触发器改为在 `AFTER INSERT` 时执行,这样可以减少计算量,但需要确保在更新平均成绩之前,已经插入了新的成绩数据。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)