数据库应用(mysql)数据库编程

第1关:创建存储过程1

任务描述

本关任务:
1.新建一个没有参数的存储过程p1,显示product表中所有数据。
2.调用p1。

USE petstore;
create procedure p1()   #新建一个没有参数的存储过程
select * from product;
call p1();              #调用p1
########Begin#######
#######End######


####相关知识

为了完成本关任务,你需要掌握:

语法

语法:CREATE PROCEDURE语句
CREATE PROCEDURE 存储过程名 ([参数[,...]]) 存储过程体
存储过程可以有0到多个参数,参数格式如下:
[ IN | OUT | INOUT ] 参数名 类型
IN - 输入参数,输入参数使数据可以传递给一个存储过程。
OUT - 输出参数,返回一个结果作为存储过程的输出
INOUT - 输入/输出参数,既可以充当输入参数也可以充当输出参数。
存储过程也可以不加参数,但是名称后面的括号是不可省略的。
存储过程体:这是存储过程的主体部分,包含了在过程调用的时候必须执行的语句。
这个部分总是以BEGIN开始,以END结束。
但是,当存储过程体中只有一个SQL语句时可以省略BEGIN-END标志。

第2关:触发器

任务描述

本关任务:
1.创建一个表table1,其中只有一列a。在表上创建一个触发器,每次插入操作时,将用户变量str的值设为“TRIGGER IS WORKING”。
2.向table1中插入一行数据(如:让列a的值为10)。
3.查看str的值。

USE petstore;
create table table1(a integer);  #创建一个触发器,每次插入操作时
create trigger table1_insert after insert 
on table1 fro each row 
set @str='TRIGGER IS WORKING';
insert  into table1 values(10);   #插入一行数据
select @str;           #查看@str的值
########Begin#######
#######End######

第3关:存储过程

任务描述

本关任务:
1.新建一个带输入/输出参数的存储过程p3,输入商品名称,输出product表中这个商品名称对应的进价(unitcost)。

 

2.用“金鱼”为输入参数,定义用户变量@price作为p3的输出参数调用p3。
3.用select显示调用结果。

USE petstore;
delimiter $$           #结束符修改为其他字符
create procedure p3(in sp_name char(20),out price float)   #新建一个带输入/输出参数的存储过程
Begin
select unitcost into price from product where name=sp_name;
end $$
delimiter ;
call p3('金鱼',@price);              #调用p3
select @price;                      #查看调用结果
########Begin#######
#######End######

相关知识

为了完成本关任务,你需要掌握:

语法

语法:CREATE PROCEDURE语句
CREATE PROCEDURE 存储过程名 ([参数[,...]]) 存储过程体
存储过程可以有0到多个参数,参数格式如下:
[ IN | OUT | INOUT ] 参数名 类型
IN - 输入参数,输入参数使数据可以传递给一个存储过程。
OUT - 输出参数,返回一个结果作为存储过程的输出
INOUT - 输入/输出参数,既可以充当输入参数也可以充当输出参数。
存储过程也可以不加参数,但是名称后面的括号是不可省略的。
存储过程体:这是存储过程的主体部分,包含了在过程调用的时候必须执行的语句。
这个部分总是以BEGIN开始,以END结束。
但是,当存储过程体中只有一个SQL语句时可以省略BEGIN-END标志。

第4关:存储函数1

任务描述

本关任务:
1.新建一个没有参数的函数f1(),返回注册用户总数。
2.调用这个函数。

USE petstore;
delimiter $$           #结束符修改为其他字符
create function f1()    #新建一个没有参数的函数
returns int
Begin
return (select count(*) from account);
end $$
delimiter ;         
select f1();                      #调用函数
########Begin#######
#######End######

相关知识

为了完成本关任务,你需要掌握:

语法

第5关:存储函数2

任务描述

本关任务:
1.编写带参数的函数f2(),返回account表中指定用户id的用户名。

 2.调用这个函数,返回u0001号用户的用户名。

USE petstore;
delimiter $$           #结束符修改为其他字符
create function f2(id char(20))    #新建带参数的函数
returns char(20)
Begin
return (select fullname from account where userid=id);
end $$
delimiter ;         
select f2('u0001');                      #调用函数
########Begin#######
#######End######


####相关知识

语法

第6关:流程控制与循环:求a的i次方 

任务描述

本关任务:
1.编写一个带参数的存储过程p1,求a的i次方
2.调用p1,求8的5次方(用@ret存储运行结果)。

USE petstore;
delimiter $$           #结束符修改为其他字符
create procedure p1(in a int ,int i int,out ret int)   #新建一个带参数的存储过程
Begin
set ret=1;
while i>0 do 
set ret=ret*a;
set i=i-1;
end while;
end $$
delimiter ;
call p3(8,5,@ret);              #调用p1
select @ret;                      #查看调用结果
########Begin#######
#######End######

或者

USE petstore;
delimiter $$           #结束符修改为其他字符
create procedure p1(in a int ,out ret int)   #新建一个带参数的存储过程
Begin
declare i int default 5;
set ret=1;
while i>0 do 
set ret=ret*a;
set i=i-1;
end while;
end $$
delimiter ;
call p3(8,@ret);              #调用p1
select @ret;                      #查看调用结果
########Begin#######
#######End######

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值