计算机二级mysql触发器操作题
时间: 2023-09-07 08:14:43 浏览: 64
好的,以下是一个简单的 MySQL 触发器操作题:
假设有一个 `orders` 表,其中包含以下列:`order_id`, `customer_id`, `order_date`, `order_total`。请编写一个触发器,实现以下功能:
- 当向该表插入新行时,自动计算该行的 `order_total` 值,并将其插入到表中。
触发器代码如下:
```mysql
CREATE TRIGGER calc_order_total
BEFORE INSERT ON orders
FOR EACH ROW
BEGIN
SET NEW.order_total = (
SELECT SUM(order_total)
FROM orders
WHERE customer_id = NEW.customer_id
) + NEW.order_total;
END;
```
该触发器将在插入新行之前执行,对于每一行,它会计算该行的 `order_total` 值,并将其插入到表中。具体来说,它会查询该行所属的 `customer_id` 在表中的所有订单的 `order_total` 值之和,并将其加上该行的 `order_total` 值,最终得到该行的总价值。
相关问题
计算机二级mysql题库
引用提到了关于计算机二级mysql题库的一些经验。根据该经验,他购买了一套题库(未来教育),该题库只能评选择题的分,操作题等题目只能给出答案和解析。他通过刷题并将错题截图保存,最后整理并打印出来,以便复习。该题库大约有13套题左右。此外,他还提到了在考前一星期再次翻阅mysql数据库教材并查漏补缺的步骤。所以,根据引用内容,计算机二级mysql题库可以通过购买相关的题库进行刷题和复习。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [计算机二级mysql考试经验分享(2021年3月)](https://blog.csdn.net/weixin_47202652/article/details/115304644)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
mysql触发器练习题
好的,下面是一个 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 语句查看结果。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.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)