实验八 数据库编程

一、实验目的

1.掌握数据库PL/SQL编程语言,以及数据库存储过程的设计和使用方法。
2.掌握数据库自定义函数的设计和使用方法。
3.掌握PL/SQL游标的设计、定义和使用方法。

二、实验内容和要求

1.存储过程定义,存储过程运行,存储过程更名,存储过程删除,存储过程的参数传递。,
2.自定义函数定义,自定义函数运行,自定义函数更名,自定义函数删除,自定义函数的参数传递。
3.游标定义、游标使用。
按要求写出相应的SQL语句。

三、实验过程

(1)对学生-选课(s_t)数据库,编写存储过程grade_info,统计某门课程的成绩分布情况,即分别统计出100分,90—99分,80—89分,70—79分,60—69分,小于60分的学生人数。存储过程grade_info以课程名作为输入参数。

delimiter //
create procedure grade_info(in course_name char(40))
begindeclare p100, p90,p80,p70,p60,pbujige,grade int default 0;declare done int default false;declare cur cursor forselect grade from sc where cno=( select cnofrom coursewhere cname=course_name);declare continue handler for not found set done=TRUE;open cur;read_loop: loopfetch cur into grade;if done thenleave read_loop;end if;if(grade=100)thenSET p100= p100+1;elseif(grade>=90)thenSET p90= p90+1;elseif(grade>=80)thenSET p80=p80+1;elseif(grade>=70)  thenSET p70=p70+1;elseif(grade>=60)  thenset p60=p60+1;else set pbujige=pbujige+1;end if;end loop;close cur;
end;//
delimiter ;

(2)编写函数course_avg,统计任意一门课程的平均分。函数course_avg以课程名为输入参数,平均分为返回值。

delimiter //
create function course_avg(course_name char(40))
returns double
deterministic
begin
declare c_avg double;
select AVG(grade)
into c_avg
from sc
where sno in (select sno from course where cname=course_name);
return c_avg;
end;//
delimiter ;

(3)调用grade_info输出“数据库”课程的成绩分布情况。

call grade_info('数据库');

(4)调用course_avg输出“操作系统”课程的平均分。

select course_avg('操作系统');

(5)删除grade_info。

 drop procedure grade_info;

(6)删除course_avg。

drop function course_avg;

四、实验总结
在做第一小题时,按照课本上的变量赋值语句写的,一直报错检查了好久,最后一句句的定位错误发现赋值语句有问题,网上查找关于mysql变量赋值的资料,发现mysql中的变量赋值不能用变量名:=表达式,在mysql中会报错,在mysql中用Set 变量名=表达式。
使用call或select 加存储过程/函数名都可用来调用存储过程/函数
使用drop procedur/function 存储过程名/函数名删除存储过程/函数

数据库实验八 数据库编程相关推荐

  1. 数据库实验:数据库和表、查询、视图与安全性、存储过程及游标、触发器、综合实验-水果商店进阶

    数据库实验:数据库和表.查询.视图与安全性.存储过程及游标.触发器.综合实验-水果商店进阶 实验一.数据库和表 源码1: 源码2: 小结 实验二.查询 源码 小结 实验三.视图.安全性 源码: 小结 ...

  2. Oracle 11g 数据库 实验7 数据库安全管理

    Oracle 11g 数据库实验7 数据库安全管理 1.实验目的 (1)掌握Oracle数据库安全控制的实现. (2)掌握Oracle数据库用户管理. (3)掌握Oracle数据库权限管理. (4)掌 ...

  3. 数据库实验:数据库高级查询

    数据库实验:数据库高级查询 实验过程 (1) IN 嵌套查询 (2) 单层EXISTS 嵌套查询 (3) FROM 子句中的嵌套查询 (4) 集合查询(交) (5) 集合查询(并) (6) 集合查询( ...

  4. 数据库 实验八 SQL 的服务器端编程

    目录 实验八 SQL 的服务器端编程 一.实验目的 二.实验准备及任务 三.实验内容及记录 (1)第1题 (2)第2题 (3)第3题 (4)第4题 (5)第5题 (6)第6题 实验八 SQL 的服务器 ...

  5. 数据库实验5 数据库设计实验

    前言:不知道啥原因,最后设计出来少了一个表,无语 实验5 数据库设计实验 1.实验目的 掌握数据库设计基本方法及数据库设计工具. 2.实验内容和要求 掌握数据库设计基本步骤,包括数据库概念结构设计.逻 ...

  6. 数据库实验三 数据库系统设计综合实验实验报告

    广州大学学生实验报告 开课学院及实验室:计算机科学与网络工程学院   2023年5月24日 学院 计算机学院 年级.专业.班级 计科213 姓名 edw-Snow 学号 321061000** 课程实 ...

  7. 数据库实验8 数据库安全性(用户与权限管理)实验

    实验8 数据库安全性(用户与权限管理)实验 8.1实验目的及要求 加深对数据库安全性的理解 8.2实验内容 数据库用户与权限管理 8.3实验步骤 8.3.1创建新用户 1.创建新用户: Mysql&g ...

  8. 数据库实验7 数据库视图的定义与使用

    实验7 数据库视图的定义与使用 7.1实验目的及要求 掌握视图的用法,加深对视图作用的理解 7.2实验内容 1.创建.修改和删除视图 2.利用视图进行查询 7.3实验步骤 7.3.1视图的创建(查看视 ...

  9. 数据库实验6 数据库的分组查询和统计查询

    实验6 数据库的分组查询和统计查询 6.1实验目的及要求 熟练掌握数据查询中的分组.统计.计算和集合的操作方法 6.2实验内容 使用聚集函数查询.分组计算查询.集合查询 6.3实验步骤 6.3.1使用 ...

  10. 数据库实验5 数据库的嵌套查询实验

    实验5 数据库的嵌套查询实验 5.1实验目的及要求 加深对嵌套查询语句的理解 5.2实验内容 使用IN.比较符.ANY或ALL和EXIST操作符进行嵌套查询操作 5.3实验步骤 5.3.1使用带IN谓 ...

最新文章

  1. Linux screen如何加载用户配置
  2. ASP.NET自定义错误页面(转)
  3. “死”在拥挤赛道上的快递员工
  4. 动态存储器是什么意思
  5. 学计算机辅修什么专业好,女生计算机辅修什么专业好
  6. mysql order by 语句_Mysql优化order by语句的方法详解
  7. 【CSAPP笔记】14. 异常控制流和进程
  8. 我的世界服务器怎么修改标语,我的世界怎么用资源包修改闪烁标语
  9. 路由器PPPoE拨号密码(ADSL密码)找出方法 ZT
  10. 天天聚财网———2014年最具潜力的P2P借贷平台
  11. w10查看端口_Windows 10系统如何查看已打开的端口
  12. php 公众号调起小程序,微信公众号怎么跳转到小程序 微信公众号跳转到小程序方法介绍...
  13. 计算机考研专业课——c语言
  14. 关于Latex学习网站推荐
  15. 姿态估计之2D人体姿态估计 - CPN(Cascaded Pyramid Network for Multi-Person Pose Estimation)
  16. 支持win7的无损分区大小调整软件
  17. 基于Python Django框架后端的微信小程序开发
  18. android优化启动时间
  19. 马斯洛人类需求五层次理论
  20. ROS发布静态tf变换

热门文章

  1. ffmpeg中使用screen capture recorder录音的问题
  2. 了解开源图表组件FusionChartsFree
  3. 最新版mysql8.0.13如何汉化_mysql8.0.13下载与安装图文教程
  4. 欧标语言等级划分 C1,小语种欧标等级的要求
  5. 易语言WebUI教程 —— 入门简介
  6. Jmeter在Linux下的运行测试
  7. vs2019配置OpenGL教程
  8. 使用广告终结者屏蔽页面的任意部分
  9. H5音乐播放器skPlayer,已支持拉取网易云音乐歌单。
  10. PHP实现查找msn联系人