全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、统计“数据库原理”的成绩分布情况,即按照各分数段统计人数1、创建需要的表create table rank(分数段 char(20), 人数 int);2、创建存储过程CREATE PROCEDURE statistic_mark AS DECLARE less60 INT, b60a70 INT , b70a80 INT , b80a90 INT , more90 INT , curcno CHAR(4); /*设字符型变量curcno 存放输入的课程名称参数*/BEGIN SELECT curcno=cno /*根据课程名称在Course 表中查询查询该课程号*/ FROM Course WHERE cname = 数据库; SELECT less60=count(*) /*查询分数低于60 分的学生人数*/ FROM sc WHERE cno = curcno AND grade = 60 AND grade = 70 AND grade = 80 AND grade = 90; /* 向表Rank 中插入五条记录,显示成绩分布情况*/ INSERT INTO Rank VALUES(0,60),less60); INSERT INTO Rank VALUES(60,70),b60a70); INSERT INTO Rank VALUES(70,80),b70a80); INSERT INTO Rank VALUES(80,90),b80a90); INSERT INTO Rank VALUES(90,100,more90); END; 3、执行存储过程exec statistic_mark;4、查询结果select * from rank;二、统计任意一门课的平均成绩1、创建需要的表CREATE TABLE Avggrade( cname CHAR(50), avgg NUMERIC(10, 6); 2、创建存储过程CREATE PROCEDURE collect_avggrade AS DECLARE /*声明变量*/ curname CHAR(50), curcno CHAR(4), curavgg NUMERIC(10, 6); declare mycursor CURSOR FOR /*声明游标mycursor 查询课程号和名称*/ SELECT cno, cname FROM course; BEGIN OPEN mycursor; /*打开游标*/ FETCH mycursor INTO curcno, curname; while (fetch_status=0) begin SELECT curavgg=AVG(grade) FROM SC /*求该课程的平均值送变量 */ WHERE cno = curcno; INSERT INTO Avggrade VALUES(curname, curavgg); /* 向Avggrade 表中插入记录,显示课程名称和平均成绩*/ FETCH mycursor INTO curcno, curname; end CLOSE mycursor; /*关闭游标*/ END;3、执行存储过程 exec collect_avggrade;4、查询结果SELECT * FROM Avggrade;三、将学生选课成绩从百分制改为等级制(即A、B、C、D、E)1、在SC表中加入新列newgradeALTER TABLE SC ADD newgrade CHAR(1); -由于之前的成绩值为整数型,而修改后的结果为字符型,因此在SC中先增加一列newgrade,存放换算后的成绩 2、创建存储过程法(1)、用IF.ELSE.语句CREATE PROC change_gradeAS DECLARE -声明变量 chgrade CHAR(1), curgrade int; declare mycursor cursor for select grade from sc; BEGIN open mycursor; FETCH mycursor INTO curgrade; while fetch_status=0 -循环处理每个学生的成绩 begin IF curgrade 60 -如果成绩低于60 分,将成绩置为E select chgrade = E; ELSe IF curgrade 60&70,将成绩置为D select chgrade = D; ELSe IF curgrade 70&80,将成绩置为C select chgrade = C; ELSe IF curgrade 80&90,将成绩置为B select chgrade = B; ELSE -如果成绩高于90 分,将成绩置为A select chgrade = A; UPDATE SC SET newgrade = chgrade -/修改newgrade 列值,填入换算后的成绩 where grade=curgrade; FETCH mycursor INTO curgrade; end; close mycursor; END;法(2)、用when语句CREATE PROCEDURE change_grade AS DECLARE curgrade int; declare mycursor cursor for select grade from sc; BEGIN open mycursor; FETCH mycursor INTO curgrade; while fetch_status=0 begin UPDATE SC SET newgrade = -修改newgrade 列值,填入换算后的成绩 case when curgrade 60 -如果成绩低于60 分,将成绩置为E then E when curgrade 60&70,将成绩置为D then D when curgrade 70&80,将成绩置为C then C when curgrade 80&= 90 -如果成绩高于90 分,将成绩置为A then A end where grade=curgrade FETCH mycursor INTO curgrade; end close mycursor;end3、执行存储过程exec change_grade;4、修改表SCALTER TABLE SC DROP COLUMN grade; -删除原有的列grade EXEC sp_rename sc.newgrade, Grade, COLUMN; -重命名newgrade列为Grade5、查询结果select * from sc;四、删除存储过程1. 删除存储过程 statisti
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026重庆农村商业银行校园招聘180人备考题库附答案详解(达标题)
- 2025江西新余市公安局招聘警务辅助人员160人备考题库带答案详解(完整版)
- 新疆维吾尔自治区昌吉回族自治州奇台县部分学校2025-2026学年八年级上学期12月月考语文试题(含答案)
- 2025广东佛山市高明区明城镇招聘村(社区)党群服务中心辅助工作人员7人备考题库及完整答案详解1套
- 2026福建省面向湖南大学选调生选拔工作备考题库附答案详解(精练)
- 个性化膳食方案干预儿童EEDs相关肥胖
- 2025南京银行南通分行国际业务阶段性社会招聘备考题库及参考答案详解
- 2026中国工商银行江苏省分行校园招聘备考题库及答案详解(必刷)
- 2025江苏苏州市昆山市千灯镇招聘社区编外工作人员4人备考题库及一套参考答案详解
- 个性化健康管理方案的干预设计
- 2025年上海市中考语文试卷真题(含答案及解析)
- 【觅途咨询】2025人形机器人应用场景洞察白皮书
- 2025至2030年中国智慧食堂产业发展动态及投资前景预测报告
- 消防设施讲解课件大全
- 国家开放大学《网络系统管理与维护》形考任务1-6参考答案
- JG/T 415-2013建筑防火涂料有害物质限量及检测方法
- 侵占财产偿还协议书
- 【新课标】Unit 6 A Lets talk Lets learn单元整体教学课件
- 小学少先队知识
- 《江苏省工程勘察设计收费导则》2024
- 山西太原家乡介绍旅游
评论
0/150
提交评论