实验六——存储过程实验

  • 一、实验题目
  • 二、实验目的
  • 三、实验过程
    • (一)准备数据表
    • (二)存储过程实验
      • 【存储过程简介】
      • 【存储过程优点】
      • 1.创建存储过程
      • 2.查看存储过程
      • 3.修改存储过程
      • 4.删除存储过程
    • (三)自定义函数实验
      • 1.定义不带有参数函数并调用
      • 2.定义带参数函数并调用
      • 3.删除函数
    • (四)游标实验
      • 【游标】
      • 【特性】
      • 【游标的处理过程】
      • 【游标操作】
      • 1.创建游标测试表
      • 2.创建游标并使用
  • 四、实验心得体会

一、实验题目

存储过程实验

二、实验目的

掌握数据库 PL/SQL 编程语言,以及数据库存储过程的设计和使用方法。
掌握数据库 PL/SQL 编程语言以及数据库自定义函数的设计和使用方法。
掌握 PL/SQL 游标的设计、定义和使用方法,理解 PL/SQL 游标按行操作和 SQL 按结果集操作的区别和联系。

三、实验过程

(一)准备数据表


Mysql:

(二)存储过程实验

【存储过程简介】

存储过程是一组具有特定功能的SQL语句集组成的可编程的函数,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数来调用执行。
存储过程是数据库管理中常用的技术之一,可以很方便的做些类似数据统计、数据分析等工作,SQL SERVER、ORACLE、MySQL都支持存储过程,但不同的数据库环境语法结构有所区别。

【存储过程优点】

A、存储过程增强了SQL语言的功能和灵活性。
存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。
B、存储过程允许标准组件式编程。
存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。
C、存储过程能实现较快的执行速度。
如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。
D、存储过程能过减少网络流量。
针对同一个数据库对象的操作(如查询、修改),如果操作所涉及的Transaction-SQL语句被组织程存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大增加了网络流量并降低了网络负载。
E、存储过程可被作为一种安全机制来充分利用。
系统管理员通过执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。

1.创建存储过程

创建一个存储过程,用来统计表 sch 中的记录数。

调用 count_sch5,进行测试:

创建一个存储过程,通过调用存储函数的方法来获取表 sch 中的记录数和 sch 表中 age的平均值。

调用:

2.查看存储过程

3.修改存储过程


下面修改存储过程 count_sch6 的定义,将读写权限改为 MODIFIES SQL DATA,并指明调用者可以执行。

4.删除存储过程

(三)自定义函数实验

自定义函数 (user-defined function UDF)是一种对MySQL扩展的途径,其用法和内置函数相同。
自定义函数的两个必要条件:
A、参数
B、返回值(必须有)。函数可以返回任意类型的值。
语法:

CREATE FUNCTION function_name(parameter_nametype,[parameter_name type,...])
RETURNS {STRING|INTEGER|REAL}
runtime_body

1.定义不带有参数函数并调用


调用:

/* 此处的”//“为告诉系统函数定义结束 */

2.定义带参数函数并调用


调用:

3.删除函数

(四)游标实验

【游标】

游标的设计是一种数据缓冲区的思想,用来存放SQL语句执行的结果。游标是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。
尽管游标能遍历结果中的所有行,但一次只指向一行。
游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行相应的操作。

【特性】

游标具有三个属性:
A、不敏感(Asensitive):数据库可以选择不复制结果集
B、只读(Read only)
C、不滚动(Nonscrollable):游标只能向一个方向前进,并且不可以跳过任何一行数据。

游标是针对行操作的,对从数据库中SELECT查询得到的结果集的每一行可以进行分开的独立的相同或不同的操作,是一种分离的思想。游标是面向集合与面向行的设计思想之间的一种桥梁。

游标的主要缺点是性能不高。
游标的开销与游标中进行的操作相关,如果在游标中进行复杂的操作,开销会非常高。如果采用面向集合的SQL语句,扫描成本为O(N);但如果采用面向集合的SQL语句的扫描成本为O(N*N),则使用游标有可能会带来性能上的提升。
游标的缺点是只能一行一行操作。在数据量大的情况下,速度过慢。数据库大部分是面对集合的,业务会比较复杂,而游标使用会有死锁,影响其他的业务操作,不可取。 当数据量大时,使用游标会造成内存不足现象。

【游标的处理过程】

一共4步:
①声明游标 declare:没有检索数据,只是定义要使用的 select 语句
②打开游标 open:打开游标以供使用,用上一步定义的 select 语句把数据实际检索出来
③检索游标 fetch:对于填有数据的游标,根据需要取出(检索)各行
④关闭游标 close:在结束游标使用时,必须关闭游标。

【游标操作】

游标的定义

DECLARE cursor_name CURSOR FOR select_statement

打开游标

OPEN cursor_name;

取游标中的数据

FETCH cursor_name INTO var_name [, var_name]...

关闭游标

CLOSE cursor_name;

释放游标

DEALLOCATE cursor_name;

1.创建游标测试表


表中含有id、name、age三个属性,下面的游标测试主要针对WHILE循环;

2.创建游标并使用



调用:

四、实验心得体会

学习了存储过程定义、存储过程运行,存储过程更名,存储过程删除,存储过程的参数传递。掌握 PL/SQL 编程语言和编程规范,规范设计存储过程。
学习了自定义函数定义、自定义函数运行,自定义函数更名,自定义函数删除,自定义函数的参数传递。掌握 PL/SQL 和编程规范,规范设计自定义函数。
学习了游标定义、游标使用。掌握各种类型游标的特点、区别与联系。

实验六——存储过程实验相关推荐

  1. 大学计算机实验6实验报告,东华大学计算机病毒课实验六宏病毒实验报告

    <东华大学计算机病毒课实验六宏病毒实验报告>由会员分享,可在线阅读,更多相关<东华大学计算机病毒课实验六宏病毒实验报告(12页珍藏版)>请在读根文库上搜索. 1.计 算 机 病 ...

  2. 计算机病毒检测报告.pdf,东华大学计算机病毒课实验六宏病毒实验报告.pdf

    东华大学计算机病毒课实验六宏病毒实验报告 计 算 机 病 毒 实验报告 姓 名: 学 号: 老 师: 日 期: 一. 实验目的 Word宏是指能组织到一起为独立命令使用的一系列Word指令,它能 使日 ...

  3. 数据库实验六综合实验-水果商店进阶一

    文章目录 一.实验目的与要求: 二.实验内容 1. 修正订单详情表orderitems中的水果价格与水果表fruits中的价格一致. 2. 在订单详情表orderitems插入新订单时自动获得水果价格 ...

  4. 大学计算机作业实验六PPT,实验六MSI计数器应用.ppt

    <实验六MSI计数器应用.ppt>由会员分享,可在线阅读,更多相关<实验六MSI计数器应用.ppt(12页珍藏版)>请在装配图网上搜索. 1.实验六 MSI计数器应用,一.实验 ...

  5. 数据库 实验六 存储过程

    存储过程 答案链接链接 2 通过本实验的学习,使学生掌握掌握存储过程的定义和使用方法. 二.实验内容 (1)    删除指定法人在指定日期前的贷款记录.要求法人名称和日期为输入参数. (2)    查 ...

  6. 数据库实验六---存储过程

    什么是存储过程? 是一组被编译在一起的T-SQL语句的集合,它们被集合在一起以完成一个特定的任务. 存储过程的分类 系统存储过程 扩展存储过程(提供从SQL Server到外部程序的接口,以便进行各种 ...

  7. 数据库实验六 存储过程

    1 利用系统存储过程列出当前SQL Server实例中的所有数据库. 2 创建存储过程,查询学生基本信息. 3 创建存储过程,查询特定同学的平均成绩. 4 创建存储过程,查询特定课程的平均成绩. 5 ...

  8. 数据库实验七 存储过程实验

    1.实验目的 掌握数据库存储过程的设计和使用方法. 2.实验内容和要求 存储过程的定义,存储过程运行,存储过程更名,存储过程删除.    3.实验步骤 (1)定义一个存储过程proc1,更新所有订单( ...

  9. python语言程序设计实践教程答案实验六_20192417 实验一《Python程序设计》实验报告...

    20192417 2019-2020-2 <Python程序设计>实验1报告 课程:<Python程序设计> 班级: 1924 姓名: 张家华 学号:20192417 实验教师 ...

最新文章

  1. 收藏|MySQL常用语法小结
  2. 利用for循环调用插入方法批量插入 一条失败_算法与数据结构(1):基础部分——以插入排序为例...
  3. border,padding,margin盒模型理解
  4. pcDuino的linux移植五GPIO驱动开发
  5. 隐藏控制台程序的窗口
  6. [转载] Python 字典(Dictionary) get()方法
  7. 办公搜索利器UTOOLS-基于EVERYTHING的文件快速搜索软件
  8. Acer 4750G 安装ubuntu18.04的过程记录
  9. 暗影精灵3等游戏本设置风扇静音
  10. 【信息系统项目管理师】重点整理:高项知识地图
  11. 生成树协议(一)STP协议原理简介:广播风暴、MAC地址表震荡实验、STP工作原理、BPDU简介、STP故障处理
  12. ABP 6.0.0-rc.1的新特性
  13. 计算机控制原理 实验,计算机控制原理实验-直流电机实验
  14. python正六边形_荐用正六边形分割地图
  15. 关于Debug.Log的一点儿小知识
  16. ACM训练史上最详细计划(大神养成记)
  17. 读《我不喜欢这世界,我只喜欢你》有感
  18. 继电器是如何成为CPU的(1)
  19. Cas认证4.2.7版本完整部署流程(以及cas-server-support-oaut,cas-server-support-pac4j-webflow扩展)
  20. 智能制造 | 如何快速自动生成站位表及自动与BOM校验?

热门文章

  1. VB.net 图片刷新闪烁 解决方案
  2. word中如何将空格变成换行
  3. Azure中配置网络安全组入站规则让外部网络访问VM中的网站
  4. 十六周项目一----冒泡排序
  5. 排位赛中 服务器崩溃修复后连不上,lol手游出现creating a lobby问题怎么办?服务器崩溃解决方法说明[多图]...
  6. 台式主机插入耳机没声音
  7. 【windows】bat 更改系统时间同步internet时间
  8. 对一批编号为1~100,全部开关朝上(开)的灯进行以下操作:凡是1的倍数反方向拨一次开关;2的倍数反方向又拨一次开关;3的倍数反方向又拨一次开关……问:最后为关熄状态的灯的编号。
  9. 米家?华为?阿里?Homekit?有没有你在用的智能家居平台?
  10. 系统命名法(IUPAC命名法)