mysql触发器练习题
时间: 2023-09-12 22:03:16 浏览: 171
好的,下面是一个 mysql 触发器的练习题:
假设我们有一张学生表格,其中包含了每个学生的姓名、年龄、性别和分数。现在我们需要在学生表格中添加一个触发器,在每次插入或修改一条学生记录时,自动计算该学生的平均分并将结果更新到学生表格中。
可以按照以下步骤来完成该练习题:
1. 创建一个名为 students 的表格,包含以下字段:id(自增主键)、name、age、gender 和 score。
2. 创建一个名为 update_average_score 的触发器,在每次插入或修改一条学生记录时自动计算该学生的平均分并将结果更新到学生表格中。触发器应该在 INSERT 和 UPDATE 操作时被触发。
3. 在触发器中使用 MySQL 的 AVG() 函数计算每个学生的平均分,并将结果更新到 score 字段中。
下面是一个示例代码:
```sql
-- 创建学生表格
CREATE TABLE students (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT NOT NULL,
gender VARCHAR(10) NOT NULL,
score INT NOT NULL,
PRIMARY KEY (id)
);
-- 创建触发器
CREATE TRIGGER update_average_score
AFTER INSERT ON students
FOR EACH ROW
BEGIN
UPDATE students
SET score = (SELECT AVG(score) FROM students WHERE id = NEW.id)
WHERE id = NEW.id;
END;
-- 测试触发器
INSERT INTO students (name, age, gender, score) VALUES ('Alice', 20, 'F', 85);
INSERT INTO students (name, age, gender, score) VALUES ('Bob', 21, 'M', 90);
INSERT INTO students (name, age, gender, score) VALUES ('Charlie', 22, 'M', 95);
SELECT * FROM students;
```
这个例子中,我们创建了一个名为 update_average_score 的触发器,在每次插入一条学生记录时自动计算该学生的平均分并将结果更新到学生表格中。触发器使用 MySQL 的 AVG() 函数计算每个学生的平均分,并将结果更新到 score 字段中。最后,我们通过插入几条学生记录来测试触发器的功能,并通过 SELECT 语句查看结果。
阅读全文