数据库第七周【第五章作业存储过程】

2023-11-19

 本章的作业题目来自第八章。。。

 

 T_SQL建立存储过程的标准形式。

Create procedure <procedure_Name> 
As 
Begin 
<SQL Statement> 
End 
Go

对学生-课程数据库编写存储过程, 完成下述功能:

首先建立实验需要使用的离散成绩表,由于之前的Course表中没有离散数学这门课,直接查询会出现错误,所以我们先进行插入,将该门课存入。

create table lisan(
Score char(20),-- 记录离散成绩的分数段
Count int --记录人数
);
insert into Course values ('8','离散数学','2','3');


(1)统计离散数学的成绩分布情况,即按照各分数段统计人数。

----判断是否存在存储过程,如果存在则删除
if(exists (select * from sys.objects where name='Stats'))
	drop procedure Stats
go
create procedure Stats
--定义存储过程Stats
as 
declare  --定义变量
@0to20 int,
@20to40 int,
@40to60 int,
@60to80 int,
@80to100 int,
@cno char(8);

begin

select @cno=Cno
from Course
where Cname='离散数学';

select @0to20 =count(*)
from SC
where Grade<20 and Cno=@cno;

select @20to40 =count(*)
from SC
where Grade<40 and Grade>=20 and Cno=@cno;

select @40to60 =count(*)
from SC
where Grade<60 and Grade>=40 and Cno=@cno;

select @60to80 =count(*)
from SC
where Grade<80 and Grade>=60 and Cno=@cno;

select @80to100 =count(*)
from SC
where Grade>=80 and Cno=@cno;

end;

update lisan set Count=@0to20 where Score='[0,20)';
update lisan set Count=@20to40 where Score='[20,40)';
update lisan set Count=@40to60 where Score='[40,60)';
update lisan set Count=@60to80 where Score='[60,80)';
update lisan set Count=@80to100 where Score='[80,100)';

sqlserver中
EXEC命令有两种用法,一种是执行一个存储过程,另一种是执行一个动态的批处理。

 (2)统计任意一门课的平均成绩。

先建表

create table AvgStudent(
Cno char(4),
Cname char(10),
Score float
);
--存储过程
if(exists(select * from sys.objects where name='AvgScore'))
drop procedure AvgScore
go
create procedure AvgScore
as
declare
@s1 float,
@s2 float,
@s3 float,
@s4 float;

begin

select @s1=avg(Grade)
from SC
where Cno='1';

select @s2=avg(Grade)
from SC
where Cno='2';

select @s3=avg(Grade)
from SC
where Cno='3';

select @s4=avg(Grade)
from SC
where Cno='4';

end;

update AvgScore set Score=@s1 where Cno='1';
update AvgScore set Score=@s2 where Cno='2';
update AvgScore set Score=@s3 where Cno='3';
update AvgScore set Score=@s4 where Cno='4';

(3)将学生选课成绩从百分制改为等级制 (即A、 B、C、D、E)。

下面这个答案可能存在一点问题,,,目前没有找到解决的方法。

if (exists (select * from sys.objects where name='rank'))
	drop procedure rank
go
create procedure rank(@grade smallint,@Cno char(4),@Sno char(9))
as
declare
@A char(5),
@B char(5),
@C char(5),
@D char(5),
@E char(5),
@Cpo char(4),
@Spo char(10);
select @Cpo=Cno from SC where @Cno=Cno;
if @Cpo is null
begin
	print'没有该课程'
	rollback;
	return ;
end;

select @Spo=Sno from SC where @Sno=Sno;
if @Cpo is null
begin
	print'没有该学生'
	rollback;
	return;
end;

update SC set rank='A' where @grade>=90;
update SC set rank='B' where @grade>=80 and @grade<90;
update SC set rank='C' where @grade>=70 and @grade<80;
update SC set rank='D' where @grade>=60 and @grade<70;
update SC set rank='E' where @grade>60;

 

create table Department(
	Dno char(10) primary key,
	Dname char(10) unique,
	Mname char(10) not null,
	Phone char(11) not null
	);

create table Employee(
	Eno char(15) primary key,
	Ename char(10) not null,
	age int check(age>0 and age<=60),
	duty char(10) not null,
	Salary int,
	Dno char(10),
	foreign key (Dno) references Department(Dno)
	);

 

心得:

大家的名字都叫SQL,为什么差距那么大呢?

这个作业写的好难啊,找了很久,几乎没有完全可以运行出来的一篇作业。

网上更加流行的还是标准SQL,就连菜鸟教程都默认标准SQL,连T_SQL的影子都没有见到。。。

这次花枯了,不种了

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库第七周【第五章作业存储过程】 的相关文章

  • 在shell命令行中创建mysql触发器

    我需要在命令行中创建一个mysql触发器 这个sql在mysql控制台中运行良好 sql USE DB1 DROP TRIGGER IF EXISTS my trigger DELIMITER CREATE TRIGGER my trigg
  • 在 Laravel 中按数据透视表 create_at 排序

    在我的数据库中 我有以下表格 courses id 名称 创建时间 更新时间 students id 名称 创建时间 更新时间 课程 学生 id course id student id created at updated at 我正在尝
  • 打印表数据mysql php

    我在尝试打印表格的一些数据时遇到问题 我是 php mysql 的新手 但我认为我的代码是正确的 这里是 h1 Lista de usu rios h1
  • 如何重命名 MySQL 数据库(更改架构名称)?

    如何快速重命名 MySQL 数据库 更改其架构名称 通常我只是转储数据库并使用新名称重新导入它 对于非常大的数据库来说 这不是一个选项 显然RENAME DATABASE SCHEMA db name TO new db name 做了坏事
  • MySQL 字符串中的第二个(或第三个)索引

    查找字符串中第三个空格的索引的最简单方法是什么 我的目标是得到CCC在此空格分隔的列表之外 AAAA BBBB CCCC DDDD EEE 其中A B和D是固定长度 C是可变长度 E F G是可选的 在Java中 我会使用indexof 起
  • 我应该使用平面表还是标准化数据库?

    我目前正在开发一个使用 MySQL 数据库作为后端的 Web 应用程序 在继续下一步之前 我需要知道什么更适合我的情况 简而言之 在这个应用程序中 用户将能够使用任何数字字段 他们决定 构建自己的表单 现在我将其全部存储在通过外键链接的几个
  • SQL UPDATE 语句根据另一个现有行更新列

    基本上我有一个与下表具有相似格式的表格 我想做的是根据这个逻辑更新 Col4 如果 Col2 为空 则用 Col3 更新 Col4 如果 Col2 不为 null 则在 Col1 中查找与 Col2 中的值匹配的值 使用 col3 中的相应
  • 是否可以将新表和旧表从触发器传递到 MySQL 中的过程中?

    是否可以将新表和旧表从触发器传递到 MySQL 中的过程中 我怀疑不会 因为没有过程接受的表这样的数据类型 有什么可能的解决方法吗 理想情况下它看起来像这样 CREATE TRIGGER Product log AFTER UPDATE O
  • 如何在 HTML / Javascript 页面中插入 PHP 下拉列表

    好吧 这是我的第二篇文章 请接受我是一个完全的新手 愿意学习 花了很多时间在各个网站上寻找答案 而且我几乎已经到达了我需要到达的地方 至少在这一点上 我有一个网页 其中有许多 javascript 函数 这些函数一起使用 google 地图
  • 自动删除主键序列中的间隙

    我正在创建一个网页 该网页根据用户操作将数据存储到 MySQL 数据库中 数据库有很多行 行的主键是列 rowID 它只是按顺序对行进行编号 例如 1 2 3 4 用户可以选择删除行 问题是当用户删除最后一行以外的行时 rowID 中有一个
  • 尝试在 React 应用程序中连接到 MySQL 数据库时,无法读取未定义的属性(读取“查询”)错误

    我正在尝试连接到 MySQL 数据库并在单击按钮后在 React 应用程序中运行查询 一些它如何给出错误 我当前的代码如下所示 import mysql from mysql function App async function sync
  • 无法连接到 Node.js 上的 MySQL 数据库

    我仍然不明白为什么在尝试连接到 Node js 上的 MYSQL Server 时仍然收到此错误消息 ERROR Error ER ACCESS DENIED ERROR Access denied for user root localh
  • MySQL 数据库无法在 XAMPP for Mac 上启动

    突然我在 mac 上遇到了这个问题 我无法启动我的 MySQL 数据库 我只能启动 ProFTPD 和 Apache Web Server 这是应用程序日志 Starting all servers Starting MySQL Datab
  • 加载数据infile,Windows和Linux的区别

    我有一个需要导入到 MySQL 表的文件 这是我的命令 LOAD DATA LOCAL INFILE C test csv INTO TABLE logs fields terminated by LINES terminated BY n
  • MySQL - 多个结果集

    我正在使用 NET Connector 连接到 MySQL 在我的应用程序中 很少有线程使用相同的连接 因此如果 MySQLDataReader 尚未关闭并且某个线程正在尝试执行查询 则会出现该错误 已经有一个打开的 DataReader
  • 在MySQL中生成随机字符串

    我正在尝试使用函数在 phpmyadmin 中获取随机字符串 我有以下代码 CREATE FUNCTION randomPassword RETURNS varchar 128 BEGIN SET chars ABCDEFGHIJKLMNO
  • 日期时间与时间戳字段

    我是 MySQL 数据库的新手 您是否建议在表创建中使用日期时间或时间戳字段以及原因 我正在使用 MySQL 5 7 和 innodb 引擎 Thanks 我会用TIMESTAMP对于任何需要自动管理的事情 因为它支持诸如ON UPDATE
  • 无法在 mysql-apt-config [Ubuntu 14.04] 中选择“确定”

    我使用的是 Ubuntu 14 04 sudo apt get update总是给我这个选项来配置 mysql apt config 我尝试选择版本 按 tab gt 在 确定 上突出显示的键 按 Enter 但没有任何反应 它再次返回并突
  • WHERE NOT EXIST 附近的语法错误

    我在堆栈中搜索 但没有一个达到最终答案 我的查询是这样的 INSERT INTO user username frequence autoSend VALUES feri2 3 1 WHERE NOT EXISTS SELECT FROM
  • 获取mysql中逗号分隔行中不同值的计数

    一个表 Jobs 有 2 列 JobId 城市 当我们保存工作时 工作位置可能是多个城市 如下所示 JobId City 1 New York 2 New York Ohio Virginia 3 New York Virginia 我如何

随机推荐

  • 服务器设置运行游戏,森林正式版服务器怎么设置 森林游戏专用服务器设置教程-游侠网...

    serverAutoSaveInterval15 Gamedifficulty mode Must be set to Peaceful Normal or Hard 游戏难度 必须设置成和平 Peaceful 一般 Normal或困难 H
  • 浅析『链上数据分析』 : 区块链 + 数据分析

    什么是链上数据分析 01 区块链 02 链上数据 03 为什么要分析链上数据 04 数据分析思维 05 数据分析技能 06 数据分析工具 07 业务逻辑理解 什么是链上数据分析 链上数据分析 顾名思义 就是对区块链上的数据进行分析 其实就是
  • StringBuilder类解析

    StringBuilder 构建字符串 有时候我们需要来不断拼接小的字符串来满足我们的需求 如果用字符串拼接的方法 效率会比较低 此时StringBuilder类为我们提供了便捷 下面是一些它的常用方法 StringBuilder stri
  • anaconda,cuda,torch,lightning的安装

    本博客仅作为初学者参考使用 汇总了多位大牛的博客 如有侵权请联系我删除 anaconda cuda torch lightning的安装 1 Anaconda 2 cuda 3 pytorch 4 lightning 5 解决pip执行后导
  • COCO数据集格式(详解)及COCO标注可视化。json转COCO等代码

    coco数据集JSON文件格式分为一下几个字段 info info dict licenses license list 内部是dict images image list 内部是dict annotations annotation li
  • Qt之QGraphicsView入门篇

    作者 billy 版权声明 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 简介 在Qt界面库中 对于图形的绘制 可以使用 QPainter 实现普通二维图形的绘制 该方法在 paintEvent 事件里编写绘图程序 其
  • 对人工智能芯片的一些看法

    人工智能芯片 2016年 随着阿尔法狗击败专业人类围棋棋手 已 深度学习 为基础的人工智能技术被大众所熟知 其实 深度学习 技术已经发展了有近30年的历史了 现在的 深度学习 的实现以神经网络技术为主 神经网络通过模拟大脑生物神经网络的连接
  • [OpenGL ES 06]使用VBO:顶点缓存

    OpenGL ES 06 使用VBO 顶点缓存 罗朝辉 http www cnblogs com kesalin 本文遵循 署名 非商业用途 保持一致 创作公用协议 这是 OpenGL ES 教程 的第六篇 前五篇请参考如下链接 OpenG
  • 数据库中连接(join)运算

    摘自 数据库原理与应用 第2版 宋金玉 陈萍 陈刚编著
  • Java学习前言—JDK、JRE、IntelliJ IDEA

    一 jdk java developer kit 与 jre java runtime environment 1 jdk是Java开发工具包 安装后可以编写Java程序 2 jre是Java运行环境 安装后可以运行Java程序 二 Ubu
  • Python爬虫工程师都需要掌握那些知识

    Python爬虫工程师都需要掌握那些知识 今天老师跟大家聊聊Python爬虫工程师需要掌握的知识 Python语言无论是在学术上还是就业上现在都非常受欢迎 很多都在学习Python 因为Python不仅能够做大数据分析 爬虫 云计算 还能做
  • SpringBoot 打 jar包和打war 包配置

    文章目录 1 前言 2 SpringBoot 打 jar 包 3 SpringBoot 打 war 包 4 小结 1 前言 目前我们熟知的SpringBoot 打包方式 一共分为两种 一种是打jar 包 内置tomcat 方式 yml 里的
  • 因果关系基本概念:后门标准

    阅读David Salazar的文章Causality To adjust or not to adjust后的笔记 文章目录 动机 实例 动机 在前面的文章中 我们知道就算控制再多的变量 也不一定能准确估计 采用后门标准 backdoor
  • 太阳神三国杀源代码 HOW TO BUILD

    HOW TO BUILD Tips stands for the folder where the repo is in VS2013 Windows Download the following packages 1 QT librari
  • 2016年1月15日(DEMO12-2ALPHA混合。)

    简而言之 alpha混合就是透明度 计算 Final src1 alpha src2 1 alpha 分解成RGB分量同样适用 其中 src1和src2为RGB格式 长16位 混合因子 0 255 长8位 创建alpha查找表 For 0到
  • Android插件:关闭WIFI下微信朋友圈视频自动播放插件开发过程详解

    本文将会详细介绍怎么开发一个屏蔽微信 7 0 5 朋友圈WIFI下自动播放视频插件 背景介绍 周五下班在地铁上刷微信时看到一个新闻 说是微信更新后在WIFI下自动播放视频还没法关闭 这个问题前几天我也遇到了 但是我记得设置里边有一个工作可以
  • 【代码随想录】回溯算法刷题

    代码随想录 回溯算法 组合 组合总和 III 电话号码的字母组合 组合总和 I 组合总和 II 分隔回文串 复原 IP 地址 子集 I 子集 II 递增子序列 全排列 I 全排列 II 重新安排行程 hard N 皇后 hard 解数独 h
  • js里map和reduce的用法

    map和reduce let arr 1 5 7 8 5 1 let arrNew arr map item gt item 2 console log map结果 arrNew 2 let arrNews for let i 0 i
  • 浅析Spring.NET(一):Spring.NET及简单使用

    浅析Spring NET 文章目录 浅析Spring NET 一 Spring NET 简单使用 1 什么是 Spring NET 2 快速创建第一个使用 Spring NET 的程序 注意事项 一 Spring NET 简单使用 最近用到
  • 数据库第七周【第五章作业存储过程】

    本章的作业题目来自第八章 T SQL建立存储过程的标准形式 Create procedure