数据库 触发器、游标应用

1.    利用SQL Server Management Studio创建一个存储过程ProcNum,查询每个班级中学生的人数,按班级号升序排序。

答案:

create procedure procnumasbeginselect classid, count(*) as 学生人数from studentgroup by classidorder by classid asc;end;go

2.    利用Transact-SQL语句创建一个带有参数的存储过程ProcInsert,向score表插入一条选课记录,并查询该学生的姓名、选修的所有课程名称、平时成绩和期末成绩。

答案:

create procedure procinsert@studentid char(7),@courseid char(4),@regulargrade int,@finalgrade intasbeginbegin transaction;insert into score (id, cid, regulargrade, finalgrade)values (@studentid, @courseid, @regulargrade, @finalgrade);select s.sname as 学生姓名, c.cname as 课程名称, s.regulargrade as 平时成绩, s.finalgrade as 期末成绩from student sjoin course c on s.cid = c.cidwhere s.id = @studentid;commit transaction;end;go

3.    利用Transact-SQL语句创建一个存储过程ProcAvg,查询指定班级指定课程的平均分。班级号和课程名称由输入参数指定,计算出平均分通过输出参数返回。若该存储过程已存在,则删除后重建。

答案:

if exists (select * from sys.objects where type = 'P' and name = 'procavg')drop procedure procavg;gocreate procedure procavg@classid char(4),@coursename nvarchar(100),@averagegrade decimal outputasbeginselect @averagegrade = avg(s.finalgrade)from student sjoin course c on s.cid = c.cidwhere s.classid = @classid and c.cname = @coursename;end;go

4.    利用SQL Server Management Studio创建一个AFTER触发器trigsex,当插入或修改student表中性别字段sex时,检查数据是否只为“男”或“女”。

答案:

if exists (select * from sys.triggers where name = 'trigsex')drop trigger trigsex;gocreate trigger trigsexon studentafter insert, updateasbeginif exists (select * from inserted where sex not in ('男', '女'))beginraiserror('性别字段只能为“男”或“女”', 16, 1);rollback transaction;end;end;go

5.    利用Transact-SQL语句创建一个AFTER触发器trigforeign,当向score表中插入或修改记录时,如果插入或修改的数据与student表中数据不匹配,即没有对应的序号存在,则将此记录删除。

答案:

create trigger trigforeignon scoreafter insert, updateasbegindelete from scorewhere id not in (select id from student);end;go

6.    利用Transact-SQL语句创建一个AFTER触发器trigclassname,当向class表中插入或修改数据时,如果出现班级名称重复则回滚事务。若该触发器已存在,则删除后重建。。

答案:

if exists (select * from sys.triggers where name = 'trigclassname')drop trigger trigclassname;gocreate trigger trigclassnameon classafter insert, updateasbeginset nocount on;if exists (select classname, count(*) from inserted group by classname having count(*) > 1)beginraiserror('班级名称重复,事务已回滚', 16, 1);rollback transaction;end;end;go

7.编写一个函数,形式参数为姓氏(如“李”)值,使用游标实现:如果该姓的学生为男生,则返回该生的姓名,性别,身高值;如果该姓的学生为女生,则返回姓名,性别,出生日期,家庭住址; 返回该姓氏的所有男女生的平均身高。

提示:函数返回这些数据时,可以使用一个连接起来的字符串包含所有要返回的数据,也可以使用表值函数返回以上所需要的数据。本题可能要使用游标多次遍历所有行,分别实现不同要求的操作。

答案:

create function getstudentsinfobysurname (@surname nvarchar(50))returns tableasreturn(selectcasewhen s.gender = '男' then concat(s.name, ', ', s.gender, ', ', convert(nvarchar(50), s.height))else concat(s.name, ', ', s.gender, ', ', convert(nvarchar(50), s.birthdate), ', ', s.homeaddress)end as infofrom student swhere left(s.name, 1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/860030.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《昇思 25 天学习打卡营第 5天 | 网络构建 》

《昇思 25 天学习打卡营第 5天 | 网络构建 》 活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp 签名:Sam9029 网络构建 概念: 神经网络模型是由神经网络层和 Tensor 操作构成的,mindspore.nn 提供了常见神经…

如何应对 Android 面试官 -> MVVM 实战一个新闻客户端 (中)

前言 本章我们基于重构的方式进行一个 MVVM 的实战,我们将一个新闻列表的普通实现,一步一步的改造成 MVVM 的架构模式,一共分为上中下三个章节,本章继续上一章,开始中篇的讲解; 控件化 我们本章向控件化进…

区块链行业DDOS防护痛点在哪

区块链行业DDOS防护痛点在哪?随着区块链技术的迅猛发展,其应用场景已经从最初的数字货币扩展到了金融、供应链、物联网等多个领域。然而,随着区块链行业的快速崛起,其所面临的网络安全威胁也日益严重,尤其是DDoS(分布…

2024年华东杯B题数学建模论文:基于车辆运动学转弯模型的自动驾驶规划问题

摘要 随着自动驾驶技术的发展,车辆转弯问题成为关键挑战。本文针对自动驾驶车辆在转弯过程中的数学建模、路径规划及避障策略进行了深入研究,旨在提升自动驾驶车辆的行驶安全性与效率。 针对问题1,对于四轮前轮驱动车辆的转弯问题&#xff0c…

【C++LeetCode】【热题100】两数相加【中等】-不同效率的题解【1】

题目: 暴力方法: /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNo…

网络编程(九)本地通信(UNIX域套接字)

文章目录 一、概念二、本地通信使用的结构体三、TCP本地通信四、UDP本地通信 一、概念 二、本地通信使用的结构体 注: 三、TCP本地通信 服务器: 创建套接字 socket( ) 填充服务器本地信息结构体 sockaddr_un 将套接字与服务器本地信息结构体绑定 bin…

常见硬件工程师面试题(二)

大家好,我是山羊君Goat。 对于硬件工程师,学习的东西主要和电路硬件相关,所以在硬件工程师的面试中,对于经验是十分看重的,像PCB设计,电路设计原理,模拟电路,数字电路等等相关的知识…

ps基础入门

1.基础 1.1新建文件 1.2创建指定形状 1.4移动工具 1.41移动画布中的任意元素 1.42移动画布 1.43修改画布大小 1.44修改图像大小 1.5框选工具 1.6矩形工具 1.7图层 1.71图层颜色修改 1.72…

Spring事务介绍、Spring集成MyBatis

目录 1.Spring的事务1.1 什么是事务?1.2 事务的特性(ACID)1.3 Spring 事务实现方式有哪些?1.4 Spring事务管理接口介绍1.4.1 PlatformTransactionManager:事务管理接口1.4.2 TransactionDefinition:事务属性事务管理器接口1.4.3 T…

《昇思25天学习打卡营第1天|ghqt》

参与这个类活动,我会坚持完成它的。目前MindSpore文档里面的内容还看的不是很懂,希望自己在能不断进步。 第一天学到的内容—— 昇腾应用使能:华为各大产品线基于MindSpore提供的AI平台或服务能力MindSpore:支持端、边、云独立的…

HarmonyOS开发 弹窗组件

1.HarmonyOS开发 弹窗组件 弹窗是移动应用中常见的一种用户界面元素,常用于显示一些重要的信息、提示用户进行操作或收集用户输入。ArkTS提供了多种内置的弹窗供开发者使用,除此之外还支持自定义弹窗,来满足各种不同的需求。 1.1. 示例 1.…

魔行观察:深入理解Python中的列表推导式

在Python编程中,我们经常需要处理列表(list)。对于创建和操作这些数据结构,Python提供了很多强大的工具和语法糖,其中最引人注目的特性之一就是列表推导式(List Comprehension)。本文将深入探讨…

STM32G070休眠例程-STOP模式

一、简介 主控是STM32G070,在低功耗休眠模式时采用Stop0模式,通过外部中断唤醒,唤醒之后,即可开启对应的功能输出,另外程序中设计有看门狗8S溢出,这个采用RTC定时6S周期唤醒去喂狗,RTC唤醒喂狗的…

在线样机生成器,制作精美的电脑手机壁纸图片展示

在线样机生成器,可以制作精美的电脑手机壁纸图片展示。在线样机生成器支持不同的模型如浏览器、手机、笔记本电脑、手表等结合使用,帮助用户快速生成样机展示图片。下面小编就来和大家分享一款免费的在线样机生成器-壁纸样机生成器。 壁纸样机生成器是一…

观测云「可观测性解决方案」荣耀登入华为云官网

继成功上架华为云云商店联营商品后,「观测未来可观测性解决方案」已进一步正式登陆华为云官网,标志着双方合作的深化与拓展。这一全新上架的解决方案是观测云技术实力的集大成之作,为企业提供了一个全面升级的数字化监控观测服务。 观测云&am…

收藏!!!GESP等级考试,C++一到八级详细考察内容

以前大李并没有特别推荐过GESP等级考试,一是考到8级,经历的时间比较漫长,二是会经常出现考场事故。 但直接考CSP-J/S难度又特别大,十分打击考生信心,所以选择一个等级考试检验考生水平还是很有必要的。 现在GESP等级…

LeetCode 算法:二叉树的直径 c++

原题链接🔗:二叉树的直径 难度:简单⭐️ 题目 给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由…

【后端】Nginx+lua+OpenResty高性能实践

文章目录 9. HTTPS安全认证9.1 证书9.2 证书获取方式9.3 自签证书-openssl工具9.4 Nginx配置HTTPS 10. websocket转发配置 【后端&网络&大数据&数据库目录贴】 9. HTTPS安全认证 http协议问题: 明文传输,有被第三方截取到数据信息的风险 &a…

人工智能前沿讲座——AIGC

目录 前情提要 一、什么是AIGC AIGC与传统的AI有何区别? 二、发展历程 GAN 生成对抗网络 大模型与Transformer Transformer\BERT\GPT 扩散模型和稳定扩散模型 三、AIGC的发展应用 新质生产力 前情提要 小学期某一门课的笔记,老师名字隐去&…

Java代码操作MySQL数据库——JDBC编程

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…