[Mysql] 2.存储过程练习

存储过程实验

一、实验要求:

1. 理解存储过程的概念

2. 掌握存储过程的语法格式、使用方法

3. 掌握存储过程的创建、执行

 

 

二、实验前提:

Create table student

(

Id varchar(255),  #学号

Name varchar(255),  #姓名

Roomid varchar(255),  #班级

Sex char(1),  #性别

Degree varchar(3)  #成绩

);

 

Insert into student values('1','amy','8','0','65');

Insert into student values('2','bob','4','1','80');

Insert into student values('3','candy','6','0','70');

Insert into student values('4','danny','8','1','90');

Insert into student values('5','edward','8','1','95');

Insert into student values('6','frank','7','1','100');

 

二、实验内容:

 

实验1:创建一个存储过程,实现查询表student中的记录信息,并执行存储过程

Delimiter //

 

Create procedure proc1()

begin

select * from  student;

End//

 

Delimiter ;

 

Call proc1();

 

实验2:创建一个存储过程,根据给定的学生学号返回该学生的姓名

Delimiter //

 

CREATE PROCEDURE proc2( IN id int)

BEGIN

SELECT * from student s WHERE s.id=id;

END //

 

Delimiter ;

 

Call proc2();

 

实验3:创建一个存储过程,根据所给的班级的编号,统计该班人数,并将人数以输出变量返回给用户。

Delimiter //

 

CREATE PROCEDURE proc3( IN roomid int)

BEGIN

SELECT COUNT(*) from student s WHERE s.roomid=roomid;

END

 

Delimiter ;

 

CALL proc3(roomid)

 

实验4:创建一个存储过程,根据所给的学号查询该学生的考试分数是否超过了85分, 若超过则输出“ 考得好”, 否则输出 “考得不好”。

Delimiter //

 

CREATE PROCEDURE proc4(in id int)

BEGIN

IF (SELECT degree from student s WHERE s.id=id)>85 THEN

SELECT '考得好';

ELSE

SELECT '考得不好';

END IF;

END//

 

Delimiter ;

 

CALL proc4(id)

 

实验5:创建一个存储过程,对表student增加两条记录。

Delimiter //

 

CREATE PROCEDURE proc5()

BEGIN

INSERT INTO student VALUES('7','geek','6','1','66');

INSERT INTO student VALUES('8','helena','2','0','90');

END//

 

Delimiter ;

 

CALL proc5()

 

实验6:请撰写一个存储过程,输出各班学生的平均成绩。

Delimiter //

 

CREATE PROCEDURE proc6(in roomid int)

BEGIN

SELECT AVG(degree) from student s WHERE s.roomid=roomid;

END//

 

Delimiter ;

 

CALL proc6(roomid)

 

实验7:请撰写一个存储过程,能根据用户输入的学号,输出学生的姓名、年龄到两个参数变量中,以供其它程序使用。

Delimiter //

 

CREATE PROCEDURE proc7(IN id INT)

BEGIN

SELECT sex,degree from student s WHERE s.id=id;

END//

 

Delimiter ;

 

CALL proc7(id)

 

实验8:撰写一个存储过程,根据用户输入的学号,输出学生的姓名、年龄两个参数到新表temp中

 

Create table temp

(

Sex varchar(255),

Degree varchar(255)

);

 

Delimiter //

 

CREATE PROCEDURE proc8(IN id INT)

BEGIN

Insert into temp (SELECT sex,degree from student s WHERE s.id=id);

END//

 

Delimiter ;

 

CALL proc8(id)

 

实验9:请撰写一个存储过程,求1+2+3+…x的值。

Delimiter //

 

Create procedure proc9(in x int)

Begin

Declare i int default 1;

Declare num int default 0;

While i<=x do

Set num=num+i;

Set i=i+1;

End while;

Select num;

End//

 

Delimiter ;

 

CALL proc9(x)

 

  • 0
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值