MYSQL高级——存储过程(习题)计算两数之和,循环,判断,赋值查询

创建存储过程

create procedure 存储名(in 传入参数 int,in b int,out 输出参数 int)
begin -- 开始
set sum = a+b; -- 执行操作
end; -- 结束
-- 调用
call mypro(传入参数1,传入参数2,输出参数(@参数名));
select @参数名;

练习- -计算两个数值

-- 计算两个数的和
create procedure mypro(in a int,in b int,out sum int)
begin
set sum = a+b;
end;
-- 计算三个数的乘积
create procedure mypros(in a int,in b int,in c int,out sumq int)
begin
set sumq = a*b*c;
end;
-- 调用
call mypros(1,2,3,@ss);
select @ss;
 ==3
    • 通过赋值查询结果
-- 赋值查询
create procedure mypro1()
BEGIN
DECLARE name VARCHAR(20);
set name='张三';
select * from  studentinfo WHERE studentinfo.stuName=name;
END;
call mypro1();
== 6
    • 判断
CREATE PROCEDURE mypro2(in a int)-- 输入参数
BEGIN
if a<0 THEN-- 判断小于0
select '负数';--打印‘负数’
ELSEIF a=0 THEN--等于0
SELECT '不是正数也不是负数';-- 打印‘不是正数也不是负数’
ELSE -- 否则
SELECT '正数'; -- 打印‘正数’
END IF;-- 结束判断
END;
CALL mypro2(0)--调用
    • 练习判断
-- 两个数比大小输出最大的
CREATE PROCEDURE mypro3(in a int,in b int,out c int)
BEGIN
IF a>b THEN
set c=a;
ELSEIF a=b THEN
set c=a;
ELSE
set c=b;
end IF;
END;
CALL mypro3(2,2,@a);
SELECT @a;
    • 循环
      10以内整数数字相加
-- 循环
CREATE PROCEDURE mypro4(out sum INT)-- 输出
BEGIN
DECLARE i int DEFAULT 0;-- 重点不可以直接赋值需要加上默认值
set sum=0;-- 定义控制接收
WHILE i<10 DO-- 条件
set i=i+1; -- 执行方法
set sum=sum+i; -- 结果
END WHILE;-- 循环结束
END;
CALL mypro4(@s);-- 调用
select @s-- 打印控制台
== 55
-- 计算100以内的
--结果5050
CREATE PROCEDURE mypro88011(out sum INT)
BEGIN
DECLARE i int DEFAULT 0;
set sum=0;
WHILE i<=100 DO
set sum=sum+i;
set i=i+1;
END WHILE;
END;
CALL mypro88011(@qq);
select @qq
    • 练习
      用到一个函数整除的函数相当于java中‘模’a%b=0被整除;
      方法一
-- 1-100之间被5整除之和
CREATE PROCEDURE mypro8801(out sum INT)
BEGIN
DECLARE i int DEFAULT 0;-- 重点不可以直接赋值需要加上默认值
set sum=0;
WHILE i<=100 DO
if (MOD(i,5))=0 THEN
set sum=sum+i;
end IF;
set i=i+1;
END WHILE;
END;
CALL mypro8801(@qq);
select @qq
== 1050

方法2

-- 1-100之间被5整除之和
CREATE PROCEDURE mypro8802(out sum INT)
BEGIN
DECLARE i int DEFAULT 0;-- 重点不可以直接赋值需要加上默认值
set sum=0;
WHILE i<=100 DO
if i%5=0 then
set sum=sum+i;
end IF;
set i=i+1;
END WHILE;
END;
CALL mypro8802(@qq);
select @qq
    • 补充loop循环,repeat 循环语句;
      定义存储过程,使用 repeat 循环输出 1 到 10 的累加和
-- 创建过程
create procedure mypro8083(out sum int)
begin
declare num int default 0;
set sum = 0;
repeat-- 循环开始
set num = num+1;
set sum = sum+num;
until num>=10
end repeat; -- 循环结束
end;
-- 调用过程
call mypro8083(@sum);
-- 查询变量值
select @sum;
    • 定义存储过程,使用 loop 循环输出 1 到 10 的累加和
-- 创建过程
create procedure mypro7(out sum int)
begin
declare num int default 0;
set sum = 0;
loop_sum:loop-- 循环开始
set num = num+1;
set sum = sum+num;
if num>=10 then
leave loop_sum;
end if;
end loop loop_sum; -- 循环结束
end;
-- 调用过程
call mypro7(@sum);
-- 查询变量值
select @sum;

存储过程的管理*(可以加密但不可解密)*
1、显示存储过程

SHOW PROCEDURE STATUS;

2、显示特定数据库的存储过程

SHOW PROCEDURE status where db = '特定名字';

3、显示存储过程源码

SHOW CREATE PROCEDURE 存储过程名(自己定义的)

4、删除存储过程@TOC

drop  PROCEDURE 存储过程名名字

- - 了解
在这里插入图片描述

  • 4
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
【完整课件如下】 MySQL从入门到精通 第01章 初始MySQL(共19页).ppt MySQL从入门到精通 第02章 MySQL的安装与配置(共14页).ppt MySQL从入门到精通 第03章 据库的基本操作(共11页).ppt MySQL从入门到精通 第04章 据表的基本操作(共26页).ppt MySQL从入门到精通 第05章 据类型和运算符(共17页).ppt MySQL从入门到精通 第06章 MySQL(共76页).ppt MySQL从入门到精通 第07章 查询据(共48页).ppt MySQL从入门到精通 第08章 插入、更新与删除据(共10页).ppt MySQL从入门到精通 第09章 索引(共11页).ppt MySQL从入门到精通 第10章 存储过程和函(共19页).ppt MySQL从入门到精通 第11章 视图(共20页).ppt MySQL从入门到精通 第12章 触发器(共11页).ppt MySQL从入门到精通 第13章 用户管理(共25页).ppt MySQL从入门到精通 第14章 据备份与还原(共21页).ppt MySQL从入门到精通 第15章 MySQL日志(共22页).ppt MySQL从入门到精通 第16章 性能优化(共18页).ppt MySQL从入门到精通 第17章 MySQL Workbench5.2 的使用(共15页).ppt MySQL从入门到精通 第18章 MySQL Replication(共27页).ppt MySQL从入门到精通 第19章 MySQL Cluster(共49页).ppt MySQL从入门到精通 第20章 PHP操作MySQL据库(共7页).ppt MySQL从入门到精通 第21章 MySQL实战-新闻发布系统据库设计(共6页).ppt MySQL从入门到精通 第22章 MySQL实战-论坛管理系统据库设计(共6页).ppt
计算机二级mysql据库程序设计练习题(二)全文共12页,当前为第1页。计算机二级mysql据库程序设计练习题(二)全文共12页,当前为第1页。计算机二级mysql据库程序设计练习题(二) 计算机二级mysql据库程序设计练习题(二)全文共12页,当前为第1页。 计算机二级mysql据库程序设计练习题(二)全文共12页,当前为第1页。 一、单选题 (共30题,共60分) 1.设有如下定义存储过程的语句框架: A.CALL test(10) ; B.CALL test 10 ; C.SELECT test(10) ; D.SELECT test 10 ; 2.下列创建游标的语法格式中,正确的是 ______。 A.DECLARE cursor_name CURSOR FOR select_statement B.DECLARE CURSOR cursor_name FOR select_statement C.CREATE cursor_name CURSOR FOR select_statement D.CREATE CURSOR cursor_name FOR select_statement 3.存储过程与存储函的区别之一是存储过程不能包含 ______。 A.SET语句 B.局部变量 C.RETURN语句 D.游标 4.现有如下语句:能够直接调用过程 p,并能得到正确返回结果的语句是 ______。 计算机二级mysql据库程序设计练习题(二)全文共12页,当前为第2页。计算机二级mysql据库程序设计练习题(二)全文共12页,当前为第2页。 A.CALL p(100,@x) ; B.CALL p(100," 张红 ") ; C.CALL p(@a,@b); D.CALL p(@a," 张红 ") ; 5.在 MySQL的命令行中调用存储过程 sp 和函 fn 的方法分别是 ______。 A.CALL sp() ,SELECT fn() ; B.SELECT sp() ,CALL fn() ; C.CALL sp() ,CALL fn() ; D.SELECT sp() ,SELECT fn() ; 6.下列关于局部变量和用户变量的描述中,错误的是 ______。 A.局部变量只在 BEGIN...ENI) 语句块之间有效 B.用户变量以 "@"开头,局部变量没有这个符号 C.用户变量使用 SET语句定义,局部变量使用 DECLARE语句定义 D.在存储函中只能使用局部变量 7.在 MySQL中执行如下语句: A.系统中所有的用户信息 B.用户名以 wang 开头的用户拥有的所有权限 计算机二级mysql据库程序设计练习题(二)全文共12页,当前为第3页。计算机二级mysql据库程序设计练习题(二)全文共12页,当前为第3页。 C.用户 wang 拥有的所有权限 D.系统中所有的资源信息 8.撤销用户的权限应使用的语句是 ______。 A.DROP B.ALTER C.REVOKE D.GRANT 9.MySQL中,下列关于授权的描述中,正确的是 ______。 A.只能对据表和存储过程授权 B.只能对据表和视图授权 C.可以对据项、据表、存储过程和存储函授权 D.可以对属性列、据表、视图、存储过程和存储函授权 10.MySQL成功安装后,在系统中默认建立的用户个数是 ______。 A.0 B.1 C.2 D.3 11.据库管理系统提供的据控制功能包括 ______。 计算机二级mysql据库程序设计练习题(二)全文共12页,当前为第4页。计算机二级mysql据库程序设计练习题(二)全文共12页,当前为第4页。 A.据的完整性 B.恢复和并发控制 C.据的安全性 D.以上所有各项 12.下列关于据的描述中,错误的是 ______。 A.据是描述事物的符号记录 B.据和它的语义是不可分的 C.据指的就是字 D.据是据库中存储的基本对象 13.下列关于据库系统三级模式结构的描述中,正确的是 ______。 A.一个数据库可以有多个模式 B.一个数据库可以有多个外模式 C.一个数据库可以有多个内模式 D.一个数据库可以有多个模式和外模式 14.模式 / 内模式映像保证据库系统中的据能够具有较高的 ______。 A.逻辑独立性 B.物理独立性 C.共享性 计算机二级mysql据库程序设计练习题(二)全文共12页,当前为第5页。计算机二级mysql据库程序设计练习题(二)全文共12页,当前为第5页。 D.结构化 15.下列关于 E-R 图向关系模式转换的描述中,正确的是 ______。 A.一个多对多的联系可以与任意一端实体对应的关系合并 B.三个

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值