当前位置: 移动技术网 > IT编程>数据库>Mysql > 数据库系统原理(第5章:数据库编程)

数据库系统原理(第5章:数据库编程)

2019年09月30日  | 移动技术网IT编程  | 我要评论

狗狗大全,qq胡莱三国辅助工具,js代码转换

一、存储过程

概念:存储过程是一组为了完成某项特定功能的sql语句集, 其实质就是一段存储在数据库中的代码。 它可以由声明式的sql语句和过程式sql语句组成。

特点:

  • 可增强sql语言的功能和灵活性
  • 良好的封装性
  • 高性能
  • 可减少网络流量
  • 可作为一种安全机制来确保数据库的安全性和数据的完整性

用户定义的结束符(elimiter

  • elimiter $$:
  • 例句:将mysql结束符修改为两个感叹号“!!”  (delimiter !!)

使用create procedure语句创建存储过程:create procedure sp_name([proc_parameter[,…]]) routine_body ;

proc_paramete:指定存储过程的参数列表

routine_body:存储过程的主体部分,也称为存储过程体

[in | out | inout] param_name type:参数 名,参数类型

例如:在mysql_test中创建一个存储过程,用于实现给定表customers中一个客户id号即可修改表customers中该客户的性别为一个指定的性别

 

 

 

使用declare语句声明局部变量:declare var_name[,…] type [default value]

例如:声明一个整型局部变量cid:   declare cid int(10);

使用declare语句声明局部变量的规范

  • 1)只能在存储过程体的begin…end语句块中声明;
  • 2)必须在存储过程的开头处声明;
  • 3)作用范围仅限于声明它的begin…end语句块;
  • 4)不同于用户变量

局部变量与用户变量的区别:

  • 1)局部变量声明时,在其前面没有@符号,并且它只能 被声明它的begin…end语句块中的语句所使用;
  • 2)用户变量在声明时,会在其名称前面使用@符号,同 时已声明的用户变量存在于整个会话之中。

使用set语句为局部变量赋值:set var_name=expr[,var_name=expr]…                set cid=910;

使用select…into语句把选定列的值直接存储到局部变量中

 

 

流程控制语句

  • 1、条件判断语句 if…then …else语句 case语句   (if 条件 then 表达式1 else 表达式2 end if;)
  • 2、循环语句 while语句 repeat语句 loop语句

while 条件 表达式 end while

repeat 表达式 end repeat

loop 表达式 end loop

iterate语句 用于表示退出当前循环

****************************游标cursor*****************************************

使用declare cursor语句创建游标

 

 

 

使用open语句打开游标:open cursor_name

使用fetch…into语句读取数据:

 

 

 

使用close语句关闭游标 :close cursor_name

**********************存储过程的使用************************

使用call语句调用存储过程

 

 

 调用数据库mysql_test中的存储过程sp_update_sex,将客户id号为909的客户性别修改为男性“m”

call sp_update_sex(909,’m’);

使用drop procedure语句删除存储过程

drop procedure[if exists] sp_name

二、存储函数

存储函数与存储过程一样,是由sql语句和过程式语句组成的代码片段

使用create function语句创建存储函数

create function sp_name([func_parameter[,…]]) returns type routine_body

  • sp_name:指定存储函数的名称
  • func_parameter:指定存储函数的参数
  • returns type :声明存储函数返回值的数据类型; type指定返回值的数据类型
  •  routine_body 指定存储函数的主体部分,也称为存储函数体

在数据库mysql_test中创建 一个存储函数,要求该函数能根据 给定的客户id号返回客户的性别, 如果数据库中没有给定的客户id号 ,则返回“没有该客户”。

use mysql_test;
delimiter $$
create function fn_search(cid int)
returns char(20)
deterministic
begin
declare sex char(20);
select cust_sex into sex from customers
 where cust_id=cid;
if sex is null then
return(select’没有该客户’);
else if sex=‘f’ then
return(select’女’);
 else return(select ‘男’);
 end if;
 end if;
end $$

 

 

 使用关键字select调用存储函数:select sp_name([func_parameter[, …]])

使用drop function语句删除存储函数:drop function [if exists] sp_name

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网