Java学习笔记-Day62 MySQL高级(三)



一、函数

1、函数的创建和调用


(1)创建函数的语法:

create function 函数名(参数名 参数类型,… ) returns 返回值类型
BEGIN
 语句
 return 返回值;
END

如果在创建函数出现如下错误,则执行如下语句。

在这里插入图片描述

	show variables like '%func%';  

在这里插入图片描述

	set global log_bin_trust_function_creators=1;

在这里插入图片描述

(2)调用函数的语法:

select 函数名(值,…);

2、时间格式转换的案例


日期格式:2016-12-5 14:34:50
转换为2016年12月5日14时35分50秒

  • 创建函数
create function fn_getDate(p_date datetime) returns varchar(100)
BEGIN
  declare v_result varchar(100) DEFAULT '';
  set v_result = DATE_FORMAT(p_date,'%Y年%m月%d日%h时%i分%s秒');
  return v_result;
end
  • 调用函数
	select fn_getDate(now());

注意:只能在语句或者存储过程中使用,不能单独调用。

3、函数和存储过程的区别


函数一定有一个返回值,调用的时候直接使用select语句。
过程只能有输入参数或者输出参数,调用的时候用call语句。

二、触发器

1、触发器的简介


触发器是一种特殊的存储过程,由MySQL自动执行(新增、修改、删除的时候,自动调用),用户没有办法执行。

触发器是与表(触发器建立在表上)有关的数据库对象,在满足定义条件时触发,执行触发器中定义的语句集合。

注意:触发器只能创建在永久表上,不能对临时表创建触发器。

2、触发时间和触发事件


触发时间(trigger_time):可以是BEFORE或者AFTER。
在这里插入图片描述

触发事件(trigger_event):可以是INSERT、UPDATE、DELETE。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、作用


(1)审计:对一个的表增、删、改的操作进行记录。
(2)数据的合法性检查,比如银行账户的余额,可以限制大于0。
(3)对其它表的数据进行同步处理、对其它的表同步修改

4、old表和new表


old表:保存的是删除之前的数据、修改之前的旧数据。
new表:保存的是添加的新数据、修改之后新数据。

old表和new表都是临时表,只有在触发器运行时才存在。

5、级联的修改


(1)选择表 —> 鼠标右键 —> 设计表 —> 触发器。

(2)创建触发器:输入触发器名,选择触发时间和触发事件,在下方定义出写入需要执行的SQL语句。

在这里插入图片描述
如果discuss表的userid为外键,则需要设置外键的 更新时 为 CASCADE。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42141141/article/details/112300220