MYSQL WORKBENCH
(逐题给出相应的SQL语句及执行结果,SQL语句必须能够拷贝,实验结果可截图;题目内容不需抄写)
在之前的实验基础上继续完成,之前实验已经建立有相关的jxgl数据库。
在教学管理系统(jxgl)中完成以下操作:
查看并使用jxgl数据库:
use jxgl;
show tables;
1.定义具有参数的存储过程。在jxgl数据库中创建一个名称为InsRecToC的存储过程,该存储过程的功能是向course中插入一条新的记录,新记录的值由参数提供,执行该存储过程。
delimiter //
create procedure InsRecToC(in the_cno char(2),in the_cname varchar(20),in the_cpno char(2),in the_ccredit int(11))
Begin
insert into course value(the_cno,the_cname,the_cpno,the_ccredit);
End;
运行完成将看到创建该procedure成功,且在左侧可以看到已存在该procedure;
执行该过程:
call InsRecToC("15","数据库实验",null,1);
2.创建一个名称为select_s的存储过程,该存储过程的功能是从student表中查询所有女生的信息,并执行该存储过程
delimiter //
create procedure select_s()
Begin
select * from student where ssex="女";
End;
执行该过程:
call select_s();
3.定义具有参数的存储过程。创建名称为insrectos的存储过程,该存储过程的功能是从student表中根据学号查询某一学生的姓名和年龄并返回。执行该存储过程
delimiter //
create procedure insrectos (in sn char(7),out age int,out the_name varchar(20))
begin
select sage,sname into age,the_name
from student
where sno = sn;
end//
调用该存储过程:
delimiter ;
set @age = 0, @sno ="2005002",@the_name = "no_name"; #设初始变量为'2005002',0,'no_name'
call insrectos (@sno,@age,@the_name); #调用存储过程
select @the_name,@age; #显示the_name和age
4.将存储过程select_s改名为SELECT_STUDENT
//查看官方文档可知现在应该是不再支持sp_rename操作
//故在此我采用了直接再建一个新表内容一致然后将旧表删除的操作
delimiter //
create procedure SELECT_STUDENT() #创建新表,内容相同,名称不同
Begin
select * from student where ssex="女";
End//
drop procedure select_s; #删除旧表
drop procedure if exists insrectos;
查看所有的存储过程:
Show procedure status;
show create procedure SELECT_STUDENT;