在C表中添加一个平均成绩avg_Grade字段(记录每门课程的平均成绩),创建一个触发器Grade_modify,当SC表中的某学生的成绩发生变化时,则C表中的平均成绩也能及时相应的发生改变;
时间: 2024-02-13 08:00:22 浏览: 50
好的,根据你的要求,我可以为C表创建一个平均成绩字段和一个触发器来实现这个功能。请注意,这个触发器是在SC表上进行操作的,因为它需要计算每门课程的平均成绩。
首先,我们需要为C表添加一个avg_Grade字段,可以使用以下语句:
```
ALTER TABLE C ADD COLUMN avg_Grade FLOAT;
```
然后,我们可以为SC表创建一个触发器,以便在学生的成绩发生变化时更新C表中的平均成绩。触发器代码如下:
```
CREATE TRIGGER Grade_modify
AFTER UPDATE ON SC
FOR EACH ROW
BEGIN
UPDATE C SET avg_Grade = (SELECT AVG(Grade) FROM SC WHERE Cno = old.Cno) WHERE Cno = old.Cno;
END;
```
这个触发器会在SC表中更新一条记录时被触发,然后会计算对应课程的平均成绩,并更新C表中的avg_Grade字段。请注意,这个触发器是针对每一行进行操作的,因此它会为每一条被更新的记录执行一次。
相关问题
创建一个触发器Grade_modify,当SC表中的某学生的成绩发生变化时,则C表中的平均成绩也能及时相应的发生改变。
好的,你需要在SQL中实现这个触发器Grade_modify。触发器可以在特定的数据库操作(例如插入、更新、删除)发生时自动执行特定的代码。以下是实现这个触发器的SQL代码:
```
CREATE TRIGGER Grade_modify
AFTER UPDATE ON SC
FOR EACH ROW
BEGIN
UPDATE C SET avg_grade = (
SELECT AVG(grade) FROM SC WHERE cno = NEW.cno
) WHERE cno = NEW.cno;
END;
```
这个触发器会在SC表中的某学生的成绩发生变化时自动执行,它会计算相应课程的平均成绩,并将结果更新到C表中。注意,触发器中用到了NEW关键字,它表示正在更新的行。
希望这个SQL代码可以帮助你实现这个触发器。
数据库1求学生人数。 2.检索学号为“20170809”的学生姓名。 3.求选修了'002' 课程的学生学号。 4. 检索姓名为“李研”的学生的成绩。 5.将表student中名为“snane”的列长度改为20。 7.查询姓名中含有字符为“海”的学生信息。 8. 统计每门课的平均成绩。 9.创建视图age_ view, 该视图能查询年龄在18至20之间的学生信息。 10.创建一个删除触发器tdcj,对course 表进行删除操作,删除一个course表中的课程,则删除score表 中对应课程号的所有记录。
好的,我明白了。以下是针对你的问题的回答:
1. 求学生人数:
```
SELECT COUNT(*) FROM student;
```
2. 检索学号为“20170809”的学生姓名:
```
SELECT name FROM student WHERE sno='20170809';
```
3. 求选修了'002' 课程的学生学号:
```
SELECT sno FROM score WHERE cno='002';
```
4. 检索姓名为“李研”的学生的成绩:
```
SELECT score FROM score WHERE sno=(SELECT sno FROM student WHERE name='李研');
```
5. 将表student中名为“snane”的列长度改为20:
```
ALTER TABLE student MODIFY COLUMN name VARCHAR(20);
```
7. 查询姓名中含有字符为“海”的学生信息:
```
SELECT * FROM student WHERE name LIKE '%海%';
```
8. 统计每门课的平均成绩:
```
SELECT cno, AVG(score) FROM score GROUP BY cno;
```
9. 创建视图age_view, 该视图能查询年龄在18至20之间的学生信息:
```
CREATE VIEW age_view AS SELECT * FROM student WHERE age BETWEEN 18 AND 20;
```
10. 创建一个删除触发器tdcj,对course 表进行删除操作,删除一个course表中的课程,则删除score表 中对应课程号的所有记录:
```
CREATE TRIGGER tdcj BEFORE DELETE ON course FOR EACH ROW DELETE FROM score WHERE cno=OLD.cno;
```
阅读全文