iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL的函数和触发器的使用
  • 311
分享到

MySQL的函数和触发器的使用

2024-04-02 19:04:59 311人浏览 安东尼
摘要

前言Mysql是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。mysql所使用的 sql 语言是用于访问数据库的最常用标准化语

前言

Mysql是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

mysql所使用的 sql 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

一、系统封装函数

MySQL 有很多内置的函数,可以快速解决开发中的一些业务需求,大概包括流程控制函数,数值型函数、字符串型函数、日期时间函数、聚合函数等。以下列出了这些分类中常用的函数。

1、控制流程函数

  • case...when

根据值判断返回值,类比编程中的IF-ELSE判断。

-- DEMO 01
SELECT CASE DATE_FORMAT(NOW(),'%Y-%m-%d') 
    WHEN '2019-12-29' THEN 'today' 
    WHEN '2019-12-28' THEN 'yesterday' 
    WHEN '2019-12-30' THEN 'tommor' 
    ELSE 'Unknow' END;
-- DEMO 02
SELECT (CASE WHEN 1>0 THEN 'true' ELSE 'false' END) AS result;
  • if(expr1,expr2,expr3)

如果表达式 expr1 是TRUE,则 IF()的返回值为expr2; 否则返回值则为 expr3。

SELECT IF(1>2,'1>2','1<2') AS result ; 
SELECT IF(1<2,'yes ','no') AS result ;
SELECT IF(STRCMP('test','test'),'no','yes');
  • ifnull(expr1,expr2)

如果表达式 expr1不为NULL,则返回值为expr1;否则返回值为 expr2。

SELECT IFNULL(NULL,'cicada');
SELECT IFNULL(1/1,'no');

2、常用字符串函数

  • CHAR_LENGTH()

返回值为字符串的长度 。

SELECT CHAR_LENGTH(' c i c ') ;-- 包含空格
SELECT LENGTH(' S q l ') ;
  • CONCAT(str1...)

拼接串联字符串。

SELECT CONCAT('My', 'S', 'ql');
SELECT CONCAT('My', NULL, 'QL'); -- 包含Null 则返回Null
SELECT CONCAT("%", "Java", "%"); -- mybatis中拼接模糊查询
  • ELT(N,str1,str2,...)

若N = 1,则返回值为  str1 ,若N = 2,则返回值为 str2 ,以此类推,可以用来转换返回页面的状态。

SELECT ELT(1,'提交','审核中','规则通过') ;
SELECT ELT(2,'提交','审核中','规则通过') ;
  • FORMAT(X,D)

格式化数字类型。

SELECT FORMAT(3.1455,2) ; -- 四舍五入保留两位
SELECT TRUNCATE(3.1455,2) ; -- 直接截取两位
  • TRIM(str)

清空字符串空格。

SELECT LTRIM('  hel l o ') ;-- 清空左边
SELECT RTRIM('  hel l o ') ;-- 清空右边
SELECT TRIM('  hel l o ') ; -- 清空两边
SELECT REPLACE('M y S Q L',' ','') ; -- 替换掉全部空格

3、数值函数

  • FLOOR(X)

返回不大于X的最大整数值 。

SELECT FLOOR(1.23); -- 1
SELECT FLOOR(-1.23); -- -2
  • MOD(N,M)

模操作。返回N 被 M除后的余数。

SELECT MOD(29,9); -- 2
SELECT 29 MOD 9; -- 2
  • RAND() RAND(N)

返回一个随机浮点值,范围在0到1之间。若已指定一个整数参数 N ,则它被用作种子值,用来产生重复序列。

SELECT RAND(); -- 0.923
SELECT RAND(20) = RAND(20) ; -- TRUE

4、时间日期函数

  • ADDDATE(date,INTERVAL expr type)

给指定日期,以指定类型进行运算。

SELECT DATE_ADD('2019-12-29', INTERVAL 3 DAY); -- 2020-01-01
  • CURDATE()

将当前日期按照'YYYY-MM-DD' 或YYYYMMDD 格式的值返回,具体格式根据函数用在字符串或是数字语境中而定。

SELECT CURDATE(); -- '2019-12-29' 字符串
SELECT CURDATE() + 0; -- 20180725 数字
  • DATE(expr)

提取日期或时间日期表达式expr中的日期部分。

SELECT DATE('2019-12-31 01:02:03'); -- '2019-12-31'
SELECT DATE('2019-12-31 01:02:03')+0; -- 20191231
  • DATE_FORMAT(date,format)

根据format 字符串进行 date 值的格式化。

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d'); -- 2019-12-29
SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日'); -- 2019年12月29日

5、聚合函数

AVG([distinct] expr)  求平均值
COUNT({*|[distinct] } expr)  统计行的数量
MAX([distinct] expr)  求最大值
MIN([distinct] expr)  求最小值
SUM([distinct] expr)  求累加和

二、自定义函数

1、概念简介

函数存储着一系列sql语句,调用函数就是一次性执行这些语句。所以函数可以降低语句重复。函数注重返回值,而触发器注重执行过程,所以一些语句无法执行。所以函数并不是单纯的sql语句集合

2、使用方式

create function 函数名([参数列表]) returns 数据类型
begin
 sql语句;
 return 值;
end;

参数列表的格式是:  变量名 数据类型。

  • 无参案例
CREATE FUNCTION mysum1 () RETURNS INT RETURN (2+3)*2;
SELECT mysum1 () ;
  • 有参函数

表结构

CREATE TABLE t01_user (
    id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY  COMMENT '主键ID',
  user_name varchar(20) DEFAULT NULL COMMENT '用户名称'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '用户表';

函数用法

create function get_name(p_id INT) returns VARCHAR(20)
begin 
    declare userName varchar(20);
    select user_name from t01_user where id=p_id into userName;
    return userName;
end;

SELECT get_name(1) ;

3、函数查看

show create function get_name ;

4、删除函数

drop function get_name ;

5、函数注意事项

函数是事先经过编译,才能在服务器环境调用,所以MySQL集群环境需要同步编译;MySQL是多线程环境,所以要保证函数也是线程安全

三、触发器

1、触发器简介

触发器是特殊的存储过程,不同的是存储过程要用CALL来调用,而触发器不需要使用CALL。也不需要手工启动,只要当一个预定义的事件发生的时候,就会被MYSQL自动触发调用。

2、创建触发器

触发器语法

CREATE TRIGGER trigger_name trigger_time trigger_event 
ON tbl_name FOR EACH ROW trigger_stmt
  • trigger_name:触发器命名 ;
  • trigger_time: 触发动作的时间 ;
  • trigger_event: 激活触发器的语句类型 ;
  • tbl_name: 触发器作用的表明,非临时表 ;
  • trigger_stmt:触发程序执行的语句 ;

表数据同步

当向用户表 t01_user 写入数据时,同时向 t02_back 表写入一份备份数据。

-- 用户备份表
CREATE TABLE t02_back (
    id int(11) NOT NULL PRIMARY KEY COMMENT '主键ID',
  user_name varchar(20) DEFAULT NULL COMMENT '用户名称'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '用户备份';

-- 触发器程序
DROP TRIGGER IF EXISTS user_back_trigger ;
CREATE TRIGGER user_back_trigger AFTER INSERT ON t01_user FOR EACH ROW
BEGIN
    INSERT INTO t02_back (id,user_name)
VALUES (new.id,new.user_name);
END ;

-- 测试案例
INSERT INTO t01_user (user_name) VALUES ('smile'),('mysql') ;
SELECT * FROM t02_back ;

3、查看触发器

查看触发器是指数据库中已存在的触发器的定义、状态、语法信息等。可以在TRIGGERS表中查看触发器信息。

SELECT * FROM `information_schema`.`TRIGGERS` 
WHERE `TRIGGER_NAME`='user_back_trigger';

4、删除触发器

DROP TRIGGER语句可以删除MYSQL中已经定义的触发器,删除触发器的基本语法。

DROP TRIGGER [schema_name.]trigger_name

5、触发器注意事项

  • 触发事件

对于相同的表,相同的事件只能创建一个触发器,比如对表t01_user创建两次AFTER INSERT触发器,就会报错。

  • 执行效率

触发器可以减少应用端和数据库的通信次数和业务逻辑,但是基于行触发的逻辑,如果数据集非常大,效率会降低。

触发器执行和原表的执行语句是否在同一个事务中,取决于触发表的存储引擎是否支持事务。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL的函数和触发器的使用

本文链接: https://www.lsjlt.com/news/37104.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL系统和自定义函数、触发器的使用方法是什么
    这篇文章主要讲解了“MySQL系统和自定义函数、触发器的使用方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL系统和自定义函数、触发器的使用...
    99+
    2024-04-02
  • MySQL触发器中参数的使用方法
    MySQL触发器是一种在数据库管理系统中用于监控特定表的操作,并根据预定义的条件执行相应操作的特殊程序。在创建MySQL触发器时,我们可以使用参数来灵活地传递数据和信息,让触发器更具通...
    99+
    2024-04-02
  • MySQL触发器的使用详解
    目录1.为什么需要触发器2.触发器概述3.触发器的创建3.1语法3.2 案例演示4.查看触发器5.删除触发器总结1.为什么需要触发器 有一些表是互相关联的,比如说商品表和库存表,我们...
    99+
    2024-04-02
  • MySQL开发中存储函数与触发器使用示例
    目录1、存储函数1.1、介绍1.2、案例2、触发器2.1、介绍2.2、语法2.3、案例1、存储函数 1.1、介绍 存储函数是有返回值的存储过程,存储函数的参数只能是IN类型的。具体语法如下: CREATE FUNCTIO...
    99+
    2023-01-12
    MySQL存储函数 MySQL触发器
  • mysql触发器的使用方法
    本篇内容主要讲解“mysql触发器的使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql触发器的使用方法”吧!说明触发器可以帮助应用于数据库,以确保数据的完整性、日志记录、数据验证等...
    99+
    2023-06-20
  • MySQL中的触发器和事件的使用方法
    MySQL是一种常用的关系型数据库管理系统,其强大的功能和灵活的使用方式使得它成为了众多开发者和企业的首选。在MySQL中,触发器和事件是两个重要的概念,它们能够实现诸如数据监控、数据完整性保护、数据同步等功能。本文将介绍MySQL中触发器...
    99+
    2023-10-22
    MySQL触发器 Mysql事件 触发器使用方法
  • MySQL数据库的触发器和事务
    目录一、触发器概念二、 触发器的操作触发器的增删改操作触发器的查看删除操作三、事务概念四、事务的操作基本流程基础操作事务的提交方式事务的隔离级别隔离操作一、触发器 概念 触发器是SQ...
    99+
    2022-11-13
    MySQL数据库触发器 MySQL数据库事务
  • MySQL触发器的使用和优缺点介绍
    目录前言1. 触发器概述2. 触发器的创建2.1 创建触发器语法2.2 代码举例3. 查看、删除触发器3.1 查看触发器3.2 删除触发器4. 触发器的优缺点4.1 优点4.2 缺点...
    99+
    2024-04-02
  • mysql触发器trigger的使用案例
    这篇文章主要介绍了mysql触发器trigger的使用案例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是触发器触发器是与表有关的数据库对象,在满足定义条件时触发,并执行...
    99+
    2023-06-14
  • MySQL自定义函数及触发器
    目录1. 存储函数(自定义函数)1.1 定义存储函数1.2 调用存储函数1.3 删除存储函数2. 触发器2.1 触发器介绍2.2 创建触发器2.3 删除触发器2.4 查看触发器1. ...
    99+
    2022-11-13
    MySQL自定义函数 MySQL触发器
  • MySQL的触发器trigger怎么使用
    MySQL的触发器(trigger)可以在特定的数据库操作发生时自动执行一系列的SQL语句。触发器可以在插入、更新或删除数据时触发执...
    99+
    2023-08-11
    MySQL trigger
  • MySQL触发器怎么创建和使用
    这篇文章主要介绍“MySQL触发器怎么创建和使用”,在日常操作中,相信很多人在MySQL触发器怎么创建和使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL触发器怎么...
    99+
    2024-04-02
  • Mysql视图和触发器使用过程
    目录视图触发器视图 视图是什么, 是否真实存在 个人理解:视图视图,只是你可以看见的一层抽象层, 它并不真实存在, 而是在真实存在的一张或者多张表之上的一层封装, 对于select查询语句的提前封装. 不涉及数据的存储....
    99+
    2022-12-07
    MySql视图触发器 MySql视图 MySql触发器
  • 【MySQL触发器】触发器的使用、创建、修改及删除
    目录 一、什么是触发器 二、创建触发器 ①创建一个insert事件触发器 ②创建一个delete 事件触发器  三、触发器包含多条执行语句 四、查看触发器  ①SHOW TRIGGERS语句查看触发器 ②查看系统表triggers实现查看触...
    99+
    2023-09-17
    mysql 数据库 sql database
  • MySQL中触发器和游标的介绍与使用
    触发器简介 触发器是和表关联的特殊的存储过程,可以在插入,删除或修改表中的数据时触发执行,比数据库本身标准的功能有更精细和更复杂的数据控制能力。 触发器的优点: 安全性:可以...
    99+
    2024-04-02
  • MySql数据库触发器使用教程
    目录一、介绍二、操作1、表数据准备2、触发器格式3、操作三、触发器NEW和OLD的使用1、案例四、其他操作五、注意事项补充:验证触发器总结一、介绍 1、触发器是一种特殊的存储过程。触...
    99+
    2024-04-02
  • MySql数据库触发器如何使用
    这篇文章主要讲解了“MySql数据库触发器如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySql数据库触发器如何使用”吧!一、介绍触发器是一种特殊的存储过程。触发器和存储过程一样,...
    99+
    2023-06-30
  • mysql 触发器的使用及注意点
    目录前言一、触发器简介二、触发器特点及使用场景1、增强数据库的安全性2、实现数据库操作的日志审计3、实现复杂的级联操作三、触发器类似与核心参数四、触发器语法1、创建语法2、查看触发器...
    99+
    2022-11-13
    mysql 触发器使用 mysql 触发器
  • MySQL触发器然后使用
    这篇“MySQL触发器然后使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL触发...
    99+
    2024-04-02
  • MySQL中存储函数、触发器的示例分析
    这篇文章主要介绍了MySQL中存储函数、触发器的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 创建函数: 1....
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作