mysql 编程_mysql 编程

一、存储函数

相当于php或者js中有返回值的函数 --完成一定“计算”后返回单个的数据值

定义:

create function 函数名(parameter p1 value_type, parameter p2 value_type, ...)

returns value_type

begin

[statement_list]

return value;

end

value_type 数据类型 必须有返回语句 return 且返回值类型和设定的类型一致

调用形式::跟系统函数调用一样,直接使用名字,定义有参数则必须给定实参

实例:求 n的阶乘

create function factorial_gao(num int)

returns int

begin

declare n int default 1;

declare fac int default 1;

while n <=num do

set fac = fac*n;

set n = n+1;

end while;

return fac;

end;

fae053f520b40ff24c6a79ed0f387b49.png

默认以;为语句结束符,需要delimiter 结束符 来更改,确保存储函数以“一条语句”执行

删除:drop function [if exists] 存储函数名;

二、存储过程

相当于php或者js中没有返回值的函数 --它只“做事”(包含增删改查),不返回单个数据

定义

create procedure 存储过程名([in|out|inout] p1 value_type, [in|out|inout]  p2 value_type,...)

begin

[statement_list]

#其中查询语句会作为存储过程调用的结果,跟执行select语句一样,返回结果集

end

调用:call 存储过程名(形参 1, 形参 2);

删除:drop procedure [if exists] 存储过程名;

示例:向表saving(存款)中添加新数据

create procedure insertRec(acc varchar(20), des float)begin

insert into saving(account, deposit) values(acc, des);end;

添加之前:

dc6e6dede2106ba8128b627fb9c5cf87.png

添加之后:

10484e985cd259cc14ebd8fa9c009dbc.png

三、触发器

就是数据库中预先设定好的用于某个表上发生某个时间(增/删/改)的时候(前/后)来完成某些任务的一种代码机制。

定义

create trigger trigger_name before|after insert|update|delete on table_name for each row

begin

#要执行的代码

#不能使用select 语句

#不能返回数据

end

before|after insert|update|delete  组合有6种形式,既每个表可以设定触发器有6种

删除::drop trigger [if exists] trigger_name;

实例:表test新添加的数据,只讲前2个字段title,content 显示给客户看

讲给客户看的定义为字表:test_sub

表test:

9c4e338679bc997920a9670c41f21739.png

表test_sub:

9b425d4312691f454829f2bf37306deb.png

定义触发器:

create trigger createSub after insert on test foreach rowbegin

set @t1 =new.title;set @c1 =new.content;insert into test_sub(title, content) values (@t1, @c1);end;

表test添加新数据:

mysql> insert into test(title,content, num)values('sixth', 'this is the sixth data.', 525.20)$

Query OK,1 row affected (0.01 sec)

添加新数据后

表test:

ec623a5ea81ea3dddec43e2e0c2c4ba3.png

字表test_sub:

520a398f99698188332f840442df1462.png

四、总结

共同点

使用普通变量

使用流程控制

都是一段“代码”

存储函数

必须返回一个数据

不能有select语句

调用结果可以作为一个“数据”使用,用于select语句或者数据操作语句中

存储过程

没有返回值

可以使用select语句

形参 可以设置数据流向in out  inout

调用:call procedure_name(形参 1 数据类型,...)

触发器

没有返回值

不能使用select语句

没有参数,也不能被调用

由设定条件触发自动调用执行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值