写一个sql触发器,查询成绩大于等于60的学生

时间: 2024-01-24 19:04:09 浏览: 43
假设有一个名为`student`的表,包含以下列:`id`、 `name`、 `score`。下面是一个查询成绩大于等于60的学生的触发器: ``` CREATE TRIGGER check_score AFTER INSERT ON student FOR EACH ROW BEGIN SELECT * FROM student WHERE score >= 60; END; ``` 这个触发器会在每次往`student`表中插入一行新数据之后触发。它会查询`score`大于等于60的所有学生,并返回结果。
相关问题

单学号: (1) 在学生表中增加一个“avgGrade”字段记录学生的平均成绩,并更新avgGrade属性的值; (2) 创建一个触发器,当输入学生选课成绩时,更新其平均成绩;并使用SQL语句往tb_sc表插入学生选课成绩记录,给出触发器触发后的相应结果。 双学号: (1) 在学生表中增加一个“TCredit”字段记录学生选课的总学分,并更新TCredit属性的值; (2) 创建一个触发器,当输入学生选课成绩时,如果成绩大于等于60分则将该课程的学分计入总学分;并使用SQL语句往tb_sc表插入学生选课成绩记录,给出触发器触发后的相应结果。

单学号: 1) 在学生表中增加一个“avgGrade”字段记录学生的平均成绩,并更新avgGrade属性的值: ```sql ALTER TABLE tb_student ADD COLUMN avgGrade FLOAT; UPDATE tb_student SET avgGrade = (SELECT AVG(score) FROM tb_sc WHERE tb_sc.sid = tb_student.sid); ``` 2) 创建一个触发器,当输入学生选课成绩时,更新其平均成绩: ```sql CREATE TRIGGER tr_tb_sc AFTER INSERT ON tb_sc FOR EACH ROW BEGIN UPDATE tb_student SET avgGrade = (SELECT AVG(score) FROM tb_sc WHERE tb_sc.sid = NEW.sid) WHERE sid = NEW.sid; END; ``` 3) 往tb_sc表插入学生选课成绩记录: ```sql INSERT INTO tb_sc (sid, cid, score) VALUES (1001, 1, 90); -- 触发器会更新学生1001的平均成绩 SELECT * FROM tb_student WHERE sid = 1001; ``` 输出结果为: | sid | sname | sex | age | nation | avgGrade | | --- | ----- | --- | --- | ------ | -------- | | 1001 | 张三 | 男 | 20 | 汉族 | 90 | 双学号: 1) 在学生表中增加一个“TCredit”字段记录学生选课的总学分,并更新TCredit属性的值: ```sql ALTER TABLE tb_student ADD COLUMN TCredit INT; UPDATE tb_student SET TCredit = (SELECT SUM(credit) FROM tb_course WHERE cid IN (SELECT cid FROM tb_sc WHERE tb_sc.sid = tb_student.sid AND score >= 60)); ``` 2) 创建一个触发器,当输入学生选课成绩时,如果成绩大于等于60分则将该课程的学分计入总学分: ```sql CREATE TRIGGER tr_tb_sc AFTER INSERT ON tb_sc FOR EACH ROW BEGIN IF NEW.score >= 60 THEN UPDATE tb_student SET TCredit = TCredit + (SELECT credit FROM tb_course WHERE cid = NEW.cid) WHERE sid = NEW.sid; END IF; END; ``` 3) 往tb_sc表插入学生选课成绩记录: ```sql INSERT INTO tb_sc (sid, cid, score) VALUES (1001, 1, 90); -- 触发器会将该课程的学分计入学生1001的总学分 SELECT * FROM tb_student WHERE sid = 1001; ``` 输出结果为: | sid | sname | sex | age | nation | TCredit | | --- | ----- | --- | --- | ------ | ------- | | 1001 | 张三 | 男 | 20 | 汉族 | 4 |

请按要求写出以下SQL语句: (1) 请按要求创建数据库db_school,并创建学生表sch_student,sch_course课程表,sch_score成绩表。 (2) 请创建并调用存储过程 proc_stu, 实现通过指定的分数阈值score_t, 查询平均分成绩大于score_t的学生学号、姓名、和平均分的功能; (3) 在学生表上创建触发器 tri_stu ,实现学生表中删除学生记录时,成绩表中该学生成绩记录也被级联删除;

(1) 创建数据库db_school,以及学生表sch_student、课程表sch_course、成绩表sch_score的SQL语句如下: ``` -- 创建数据库 CREATE DATABASE db_school; -- 使用db_school数据库 USE db_school; -- 创建学生表 CREATE TABLE sch_student ( stu_id INT PRIMARY KEY, stu_name VARCHAR(20), stu_gender VARCHAR(2), stu_age INT, stu_major VARCHAR(20) ); -- 创建课程表 CREATE TABLE sch_course ( course_id INT PRIMARY KEY, course_name VARCHAR(20) ); -- 创建成绩表 CREATE TABLE sch_score ( stu_id INT, course_id INT, score FLOAT, PRIMARY KEY (stu_id, course_id), FOREIGN KEY (stu_id) REFERENCES sch_student(stu_id), FOREIGN KEY (course_id) REFERENCES sch_course(course_id) ); ``` (2) 创建并调用存储过程proc_stu,实现查询平均分成绩大于指定分数阈值score_t的学生学号、姓名和平均分的功能。存储过程的SQL语句如下: ``` -- 创建存储过程 CREATE PROCEDURE proc_stu @score_t FLOAT AS BEGIN SELECT sch_student.stu_id, sch_student.stu_name, AVG(sch_score.score) AS avg_score FROM sch_student JOIN sch_score ON sch_student.stu_id = sch_score.stu_id GROUP BY sch_student.stu_id, sch_student.stu_name HAVING AVG(sch_score.score) > @score_t; END -- 调用存储过程 EXEC proc_stu 80; ``` 这里的@score_t是存储过程的参数,用于指定平均分成绩的阈值。 (3) 在学生表上创建触发器tri_stu,实现学生表中删除学生记录时,成绩表中该学生成绩记录也被级联删除。触发器的SQL语句如下: ``` -- 创建触发器 CREATE TRIGGER tri_stu ON sch_student AFTER DELETE AS BEGIN DELETE FROM sch_score WHERE stu_id IN (SELECT deleted.stu_id FROM deleted); END ``` 这里的deleted是一个特殊表,它包含了刚刚被删除的记录。在触发器中,我们可以使用它来获取刚刚被删除的学生记录的学生ID,然后在成绩表中删除该学生成绩记录。这样就实现了级联删除的功能。

相关推荐

使用sql语句完成任务:(一)存储函数的创建与使用 1.定义一个函数,计算两个数的最大公约数。 a) 输入两个整数。 b) 输出最大公约数。 c) 请用两种不同的方法实现gcd1()和gcd2()。 d) 调用c)中的两个函数,查找45和18的最大公约数。 e) 提示:可以通过辗转相除法找到两个数的最大公约数,流程图6-1如下。 图 6 1最大公约数流程图 2.课程的评分通常分为百分制和等级制。创建存储函数do_convert(),实现其转换,要求: a) 输入指定百分制成绩。 b) 输出对应的等级制成绩。 c) 转换规则,如果>=90分则为优秀,80-90(包含80)为良好,70-80(包含70)为中等,60-70(包含60)为及格,否则为不及格。 d) 查询该函数是否创建成功。 e) 使用d)中的函数,查询A课程学生的等级成绩,查询输出如下。 输出如下: 学生学号 学生姓名 学生班级号 等级制成绩 (二)触发器的创建与使用 1.使用触发器实现单列取值的范围约束。要求tbl_student学生表的生日字段要么为空,要么必须大于等于‘1900-01-01‘,小于今年。 a) 实现触发器birthday_check_trigger对表的更新约束。 b) 请找两个例子,验证触发器是否是实现了检查约束。 2.在进销存数据库创建触发器,对数据进行一致性约束。当销售表tbl_sell增加一条数据时,商品表的tbl_goods库存量减去对应的销量。当进货表tbl_receive增加一条数据时,商品表的库存量增加对应的进货数量。

最新推荐

recommend-type

只有两个字段用一个sql语句查询出某个学生的姓名、成绩以及在表中的排名

主要介绍了只有两个字段用一个sql语句查询出某个学生的姓名、成绩以及在表中的排名,需要的朋友可以参考下
recommend-type

SQL Server 利用触发器对多表视图进行更新的实现方法

其步骤就是:利用update操作触发器产生的2个虚拟表【inserted】用来存储修改的数据信息和【deleted】表,然后将对应的数据更新到对应数据表中的字段信息中; 1.首先创建3个表: a.信息表: USE [SQL-LI] BEGIN ...
recommend-type

学生成绩管理系统——数据库课程设计2.doc

本数据库设计是为简单的课程设计探讨 | 对数据库系统的设计初学者 简单 | 容易模仿 | 能提供作业思路 不需积分即可下载
recommend-type

sqlserver 触发器学习(实现自动编号)

总结常用基本点如下: 1、触发器有两种类型:数据定义语言触发器(DDL触发器)和数据操纵语言触发器(DML触发器)。 DDL触发器:在用户对数据库执行数据定义(CREATE、ALTER、DROP或相似的语句)对数据库结构进行...
recommend-type

SQL查询字段被包含语句

说到SQL的模糊查询,最先想到的,应该就是like关键字。当我们需要查询包含某个特定字段的数据时,往往会使用 ‘%关键字%’ 查询的方式。具体代码示例大家参考下本
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

SPDK_NVMF_DISCOVERY_NQN是什么 有什么作用

SPDK_NVMF_DISCOVERY_NQN 是 SPDK (Storage Performance Development Kit) 中用于查询 NVMf (Non-Volatile Memory express over Fabrics) 存储设备名称的协议。NVMf 是一种基于网络的存储协议,可用于连接远程非易失性内存存储器。 SPDK_NVMF_DISCOVERY_NQN 的作用是让存储应用程序能够通过 SPDK 查询 NVMf 存储设备的名称,以便能够访问这些存储设备。通过查询 NVMf 存储设备名称,存储应用程序可以获取必要的信息,例如存储设备的IP地址、端口号、名称等,以便能
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。