数据库系统原理及MySQL应用教程实验七存储过程与函数的创建管理

这篇具有很好参考价值的文章主要介绍了数据库系统原理及MySQL应用教程实验七存储过程与函数的创建管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实验7:存储过程与函数的创建管理

一、实验目的

1. 理解存储过程和函数的概念。

2. 掌握创建存储过程和函数的方法。

3. 掌握执行存储过程和函数的方法。

4. 掌握游标的定义、使用方法。

二、实验内容

1.验证性实验:某超市的食品管理的数据库的Food表对其操作。

2.设计性试验:学校教师管理数据库中的teacherInfo表对其操作。

三、实验步骤与实验结果

(一)验证性实验

Food表的定义

字段名

字段描述

数据类型

主键

外键

非空

唯一

自增

foodid

食品编号

INT(4)

Name

食品名称

VARCHAR(20)

Company

生产厂商

VARCHAR(30)

Price

价格(单位:元)

FLOAT

Product_time

生产年份

YEAR

Validity_time

保质期(单位:年)

INT(4)

address

厂址

VARCHAR(50)

某超市的食品管理的数据库的Food表,Food表的定义如表所示,

1.创建food表:

CREATE TABLE  food(

foodid INT(4) NOT NULL  UNIQUE auto_increment PRIMARY KEY,

name VARCHAR(20) NOT NULL,

company VARCHAR(20) NOT NULL,

price FLOAT NOT NULL,

product_time YEAR,

validity_time INT(4),

address VARCHAR(50)

)ENGINE=InnoDBDEFAULTCHARSET=utf8;

 scau实验七存储过程和函数,数据库实验报告,数据库,mysql,windows

2.向food插入数据

INSERT INTO food

VALUES

(1,'QQ饼干','QQ饼干厂',2.5,'2008',3,'北京'),

(2,'MN牛奶','MN牛奶厂',3.5,'2009',1,'河北'),

(3,'EE果冻','EE果冻厂',1.5,'2007',2,'北京'),

(4,'FF咖啡','FF咖啡厂',20,'2002',5,'天津'),

(5,'GG奶糖','GG奶糖',14,'2003',3,'广东');

scau实验七存储过程和函数,数据库实验报告,数据库,mysql,windows

3.在food表上创建名为Pfood_price_count的存储过程。其中存储过程Pfood_price_count有3个参数。输入参数为price_infol和price_info2,输出参数为count。存储过程的满足:查询food表中食品单价高于price_infol且低于price_info2的食品种数,然后由count参数来输出,并且计算满足条件的单价的总和。

代码如下:

//使用“DELIMITER &&”将SQL语句的结束符号变成&&

DELIMITER &&

CREATE  PROCEDURE  Pfood_price_count (IN price_info1 FLOAT,IN price_info2 FLOAT, OUT count INT )

   READS SQL DATA

   BEGIN

//定义变量temp

DECLARE temp FLOAT;

//定义游标match_price

DECLARE match_price CURSOR FOR SELECT price FROM food;

//定义条件处理。如果没有遇到关闭游标,就退出存储过程

DECLARE EXIT HANDLER FOR NOT FOUND CLOSE match_price;

//为临时变量sum赋值

SET @sum=0;

//用SELECT … INTO 语句来为输出变量count赋值

SELECT  COUNT(*)  INTO  count  FROM  food

    WHERE  price>price_info1 AND price<price_info2 ;

//打开游标

OPEN match_price;

//执行循环

REPEAT

//使用游标match_price

   FETCH match_price INTO temp;

//执行条件语句

       IF temp>price_info1 AND temp<price_info2

      THEN SET @sum=@sum+temp;

END IF;

//结束循环

UNTIL 0 END REPEAT;

//关闭游标

CLOSE match_price;

   END &&

//将SQL语句的结束符号变成“;”

DELIMITER ;

scau实验七存储过程和函数,数据库实验报告,数据库,mysql,windows

4.使用CALL语句来调用存储过程。查询价格在2至18之间的食品种数。代码如下:

CALL Pfood_price_count(2,18,@count) ;

scau实验七存储过程和函数,数据库实验报告,数据库,mysql,windows

5.使用SELECT语句查看结果。代码如下:

SELECT @count,@sum;

其中,count是存储过程的输出结果:sum是存储过程中的变量,sum中的值满足足条件的单价的总和。

scau实验七存储过程和函数,数据库实验报告,数据库,mysql,windows

6.使用DROP语句删除存储过程Pfood_price_count。代码如下:

DROP PROCEDURE Pfood_price_count ;

scau实验七存储过程和函数,数据库实验报告,数据库,mysql,windows

7.使用存储函数来实现(1)的要求。存储函数的代码如下:

DELIMITER &&

CREATE  FUNCTION  Pfood_price_count1(price_info1 FLOAT,price_info2 FLOAT )

RETURNS INT READS SQL DATA

BEGIN

RETURN (SELECT  COUNT(*)  FROM  food

WHERE  price>price_info1 AND price<price_info2 );

END &&

DELIMITER ;

scau实验七存储过程和函数,数据库实验报告,数据库,mysql,windows

8.调用存储函数

SELECT Pfood_price_count1(2,18);

scau实验七存储过程和函数,数据库实验报告,数据库,mysql,windows

9.删除存储函数

DROP FUNCTION Pfood_price_count1;

注:存储函数只能返回一个值,所以只实现了计算满足条件的食品种数。使用RETURN来将计算的食品种数返回回来。调用存储函数与调用MySQL内部函数的方式是一样的。

scau实验七存储过程和函数,数据库实验报告,数据库,mysql,windows

(二)设计性试验

学校教师管理数据库中的teacherInfo表,其表的定义如下表所示,请完成如下操作。

字段名

字段描述

数据类型

主键

外键

非空

唯一

自增

num

教工号

INT(10)

name

姓名

VARCHAR(20)

sex

性别

VARCHAR(4)

birthday

出生日期

DATETIME

address

家庭住址

VARCHAR(50)

1.创建teacherinfo表

CREATE TABLE  teacherinfo(

num INT(10) NOT NULL  UNIQUE PRIMARY KEY,

name VARCHAR(20) NOT NULL,

sex VARCHAR(4) NOT NULL,

birthday DATETIME,

address VARCHAR(50)

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

scau实验七存储过程和函数,数据库实验报告,数据库,mysql,windows

2.向teacherInfo表中插入记录:

INSERT INTO teacherinfo

VALUES

(1001,'张龙','男','1984-11-08','北京市昌平区'),

(1002,'李梅','女','1970-01-21','北京市海淀区'),

(1003,'王一丰','男','1976-10-30','北京市昌平区'),

(1004,'赵六','男','1980-06-05','北京市顺义区');

scau实验七存储过程和函数,数据库实验报告,数据库,mysql,windows

3.创建名为teachernfo1的存储过程。要求:存储过程teachernfo1有3个参数。输入参数为teacherid和type,输出参数为info。满足:根据编号(teacherid)来查询teachernfo表中的记录。如果type的值为1时,将姓名(name)传给输出参数info;如果type的值为2时,将年龄传给输出参数info;如果type为其他值,则返回字符串“Error”。

delimiter &&

create procedure teachernfo1(in teacherid int,in type int,out info varchar(20))

reads sql data

begin

case type

when 1 then

select name into info from teacherinfo where num=teacherid;

when 2 then

select year(now())-year(birthday) into info from teacher where num=teacherid;

else

select 'Error' into info;

end case;

end &&

delimiter ;

scau实验七存储过程和函数,数据库实验报告,数据库,mysql,windows

4.调用存储过程,参数值teacher id为2,type为1

USE student;

CALL teachernfo1(1001,1,@info);

scau实验七存储过程和函数,数据库实验报告,数据库,mysql,windows

5.使用DROP PRODECURE语句来删除存储过程

DROP PROCEDURE teachernfo1

scau实验七存储过程和函数,数据库实验报告,数据库,mysql,windows

6.创建名为teacherinfo2的存储函数。要求:存储过程teacherinfo2有两个参数:teacher id和type。满足:根据编号(teacher id)来查询teacher表中的记录。如果type的值是1时,则返回姓名(name)值;如果type的值是2时,则返回年龄;如果type为其他值,则返回字符串“Error”。

delimiter &&

create function teacherinfo2(teacherid int,type int)

returns varchar(20) reads sql data

begin

declare temp varchar(20);

if type=1

then

select name into temp from teacherinfo where num=teacherid;

elseif type=2

then

select year(now())-year(birthday) into temp from teacherinfo where num=teacherid;

else

set temp='Error';

end if;

return temp;

end &&

delimiter ;

scau实验七存储过程和函数,数据库实验报告,数据库,mysql,windows

7.使用SELECT语句调用teacherinfo2存储函数

select teacherinfo2(1002,1);

scau实验七存储过程和函数,数据库实验报告,数据库,mysql,windows

8.使用DROP FUNCTION语句来删除teacherinfo2存储函数。

drop function teacherinfo2;

scau实验七存储过程和函数,数据库实验报告,数据库,mysql,windows

四、观察与思考

1.什么时候适合通过创建存储过程来实现?

答:函数限制比较多,如不能用临时表,只能用表变量等,而存储过程的限制相对就比较少。

2.功能相同的存储过程和存储函数的不同点有哪些?

答: 存储过程:可以使得对的管理、以及显示关于及其用户信息的工作容易得多。存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。

3.使用游标对于数据检索的好处有哪些?

答:游标提供了一种对从表中检索出的数据进行操作的灵活手段游标总是与一条SQL 选择语句相关联因为游标由结果集和结果集中指向特定记录的游标位置组成。

五、实验要求

按要求完成,详细记录操作步骤,书写实验报告。所有实验环节均由每位学 生独立完成,认真记录操作过程,严禁抄袭他人实验结果。

六、实验总结

通过本次实验学习了SQL的存储过程与函数,课有效的避免重复地编写相同的SQL语句,方便开发人员,增强了SQL的功能和灵活性。文章来源地址https://www.toymoban.com/news/detail-770835.html

到了这里,关于数据库系统原理及MySQL应用教程实验七存储过程与函数的创建管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 书店销售管理系统----数据库原理及应用综合实验

    书店销售管理系统----数据库原理及应用综合实验

    枯木逢春犹再发,人无两度再少年🍂 系统主要模块如下: (1) 书店销售管理系统设计与实现—图书入库管理及查询统计 图书入库管理:维护入库图书信息(如图书编号、书名、作者、价格、图书分类、出版社等)。自动计算库存。 图书查询统计:按图书分类,出版社、书

    2024年02月06日
    浏览(5)
  • 数据库系统原理与应用教程(014)—— 关系数据库练习题(一)

    数据库系统原理与应用教程(014)—— 关系数据库练习题(一)

    1、试述关系模型的三要素和关系操作语言的特点。 答案: 关系模型的三要素为数据结构、关系操作和完整性约束。在关系模型中,无论是实体集还是实体集之间的联系都是由关系表示的。 关系操作语言的特点:(1)关系操作的方式是一次一集合方式。(2)关系操作语言是

    2024年02月02日
    浏览(7)
  • ​数据库原理及应用上机(实验二 SQL数据定义功能实验)

    ​数据库原理及应用上机(实验二 SQL数据定义功能实验)

    ✨ 作者:命运之光  ✨ 专栏:数据库原理及应用上机实验   目录 ✨一、实验目的和要求 ✨二、实验内容与步骤 ✨三、附加练习 ✨四、实验总结 🍓🍓 前言:   数据库原理及应用上机实验报告的一个简单整理后期还会不断完善 🍓🍓 1.掌握利用SQL查询分析器和企业管理

    2024年02月05日
    浏览(6)
  • 数据库原理及应用实验报告-实验10-触发器

    数据库原理及应用实验报告-实验10-触发器

     实验题目   实验 10触发器    10.1 实验目的 通过实验使学生加深对数据完整性的理解,学会理解、创建和使用触发器。 10.2 实验内容   (用实验9的Teacher表) (1) 为 Teacher 表建立触发器T1,当插入或使更新表中的数据时,保证所操作的纪录的 Tage 值大于0。 (2) 为 Teacher 表建立

    2024年02月05日
    浏览(5)
  • 数据库原理及应用实验报告-实验4-SQL的视图

    数据库原理及应用实验报告-实验4-SQL的视图

    实验目的 熟悉SQL支持的有关视图的操作,能够熟练使用SQL语句来创建需要的视图,对视图进行查询和删除视图。 实验内容 定义常见的视图形式,包括: 行列子集视图 WITH CHECK OPTION的视图 基于多个基表的视图 基于视图的视图 带表达式的视图 分组视图 通过实验考察WITH CHEC

    2023年04月26日
    浏览(30)
  • 《数据库原理MySQL》第四次上机实验

    一、连接查询 1.查询女学生的学生学号及总成绩 2.查询李勇同学所选的课程号及成绩 3.查询李新老师所授课程的课程名称 4.查询女教师所授课程的课程号及课程名称 5.查询姓“王”的学生所学的课程名称 6.查询选修“数据库”课程且成绩在 80 到 90 之间的学生学号及成绩 7.查

    2024年02月05日
    浏览(8)
  • 大数据技术原理与应用实验3——NoSQL和关系数据库的操作比较

    大数据技术原理与应用实验3——NoSQL和关系数据库的操作比较

    (1)理解四种数据库(MySQL、HBase、Redis和MongoDB)的概念以及不同点; (2)熟练使用四种数据库操作常用的Shell命令; (3)熟悉四种数据库操作常用的Java API。 (1)Linux操作系统(CentOS7.5) (2)VMware Workstation Pro 15.5 (3)远程终端工具Xshell7 (4)Xftp7传输工具 (5)Hadoop版本:

    2024年02月02日
    浏览(5)
  • MySQL数据库设计作业 ——《网上书店系统》数据库设计实验报告

    MySQL数据库设计作业 ——《网上书店系统》数据库设计实验报告

    普通用户:可以进行最基础的登陆操作,可浏览图书、按类别查询图书、查看 图书的详细信息,还可以注册成为会员。 会员:需要填写详细信息(真实姓名、性别、手机号、地址、邮箱等),可浏览图书、按类别查询图书、查看图书的详细信息,在此基础上,还可以订购图

    2024年02月04日
    浏览(7)
  • 数据库应用:数据库管理系统与安装MySQL数据库

    数据库应用:数据库管理系统与安装MySQL数据库

    目录 一、理论 1.数据库管理系统 2.关系型数据库 3.数据库 4.MySQL数据库 5.MySQL部署 二、实验 1.yum安装MySQL 2.编译安装MySQL 3.配置MySQL数据库的Tab补全  三、问题 1.数据库登录报错 2.数据库密码复杂度报错 3.数据库连接报错 四、总结 (1)概念 数据库管理系统(Database Management

    2024年02月13日
    浏览(9)
  • 《MySQL数据库原理、设计与应用》课后习题及答案 黑马程序员编著

    答案有文档形式,但是csdn必须要下载,,需要的人就去那里下载吧。《MySQL数据库原理、设计与应用》课后习题及答案黑马程序员编著 一、 填空题 1.关系型数据库的标准语言是_ SQL _。 2.数据库发展的3个阶段中,数据独立性最高的是_ 数据库系统 _阶段。 3.概念模型中的3种基

    2024年02月03日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包