数据库MySQL/mariadb知识点——函数

函数

函数,就是将一段代码封装到一个结构中,在需要执行该段代码的时候,直接调用该结构(函数)执行即可。此操作,实现了代码的复用。在 MySQL 中,函数有两种,分别为:系统函数和自定义函数。

1、系统函数

顾名思义,系统函数就是系统定义好的函数,在需要的时候,我们直接调用即可。

任何函数都有返回值(对于空函数,我们就认为其返回值为),而且在 MySQL 中任何有返回值的操作都是通过select来操作的,因此 MySQL 的函数调用就是通过select来实现的。

参考官方文档:https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html

2、自定义函数(user-defined function:UDF)

自定义函数保存在mysql.proc表中

  • 查看UDF列表
SHOW FUNCTIOIN STATUS;
  • 查看UDF定义
SHOW CREATE FUNCTION function_name
  • 删除UDF
DROP FUNCTION function_name
  • 调用自定义函数语法
SELECT function_name(parameter_value,...)
  • 为变量赋值
SET parameter_name = value[,parameter_name = value...]
  • 查看变量
SELECT INTO parameter_name

示例1:无参UDF

MariaDB [testdb]> CREATE FUNCTION simpleFun() RETURNS VARCHAR(20) RETURN "Hello World!“;

示例2:有参数UDF 

MariaDB [testdb]> DELIMITER //  #修改结束符为//
MariaDB [testdb]>CREATE FUNCTION deleteById(uid SMALLINT UNSIGNED) RETURNS VARCHAR(20)
    -> BEGIN
    ->DELETE FROM students WHERE stuid = uid;
    -> RETURN (SELECT COUNT(uid) FROM students);
    -> END//
Query OK, 0 rows affected (0.01 sec)
MariaDB [testdb]> DELIMITER ;  #定义完函数后再修改回来

示例3:

自定义函数中定义局部变量语法:

DECLARE 变量1[,变量2,... ]变量类型 [DEFAULT 默认值]

说明:局部变量的作用范围是在BEGIN...END程序中,而且定义局部变量语句必须在BEGIN...END的第一行定义

MariaDB [testdb]> DELIMITER //  #修改结束符为//
MariaDB [testdb]> CREATE FUNCTION addTwoNumber(x SMALLINT UNSIGNED, Y SMALLINT UNSIGNED)
    -> RETURNS SMALLINT
    -> BEGIN
    -> DECLARE a, b SMALLINT UNSIGNED DEFAULT 10;
    -> SET  a = x, b = y;
    -> RETURN a+b;
    -> END//
Query OK, 0 rows affected (0.01 sec)
MariaDB [testdb]> DELIMITER ;  #定义完函数后再修改回来
MariaDB [testdb]> SELECT addTwoNumber(8,9);  #调用UDF求和
+-------------------+
| addTwoNumber(8,9) |
+-------------------+
|                17 |
+-------------------+

查看函数

查看函数,基本语法为:

SHOW FUNCTION STATUS;

查看函数定义 

SHOW CREATE FUNCTION function_name

  

原文地址:https://www.cnblogs.com/Gmiaomiao/p/9207561.html

时间: 2024-10-08 07:21:11

数据库MySQL/mariadb知识点——函数的相关文章

数据库MySQL/mariadb知识点——查询缓存

查询的执行路径 SQL语句 查询缓存 解析器 解析树 预处理 查找最好的查询路径 查询优化SQL语句 执行计划 API调用存储引擎 调用数据,返回结果 缓存SELECT操作或预处理查询的结果集和SQL语句,当有新的SELECT语句或预处理查询语句请求,先去查询缓存,判断是否存在可用的记录集,判断标准:与缓存的SQL语句,是否完全一样,区分大小写. 不需要对SQL语句做任何解析和执行,当然语法解析必须通过在先,直接从Query Cache中获得查询结果,提高查询性能 查询缓存的判断规则,不够智能,

数据库MySQL/mariadb知识点——数据库变量

变量 在 MySQL 数据库中,变量有两种,分别为:系统变量和自定义变量. 根据变量的作用范围,又分为: 会话级别变量:仅对当前客户端当次连接有效: 全局级别变量:对所有客户端的任一次连接都有效. 服务器变量还可分为动态变量和非动态变量,动态变量可以在服务器不重启的情况下修改 注意:其中有些参数支持运行时修改,会立即生效:有些参数不支持,且只能通过修改配置文件,并重启服务器程序生效:有些参数作用域是全局的,且不可改变:有些可以为每个用户提供单独(会话)的设置 服务器选项 # mysqld --h

数据库MySQL/mariadb知识点——操作篇(4)数据操作语句

INSERT插入数据 单挑记录插入 INSERT INTO tb_name (col1,col2,...) VALUES (val1,val2,...); 示例: insert into tablename(字段1名称,字段2名称,......)values(字段1值,字段2值,...) MariaDB [testdb]> INSERT students(id,name,ages,gender) VALUES (1,'tom',26,'M'); MariaDB [testdb]> INSERT

数据库MySQL/mariadb知识点——事务Transactions

案例:银行的数据库里面存储着用户的账户信息表,当用户 A 想用户 B 转账的时候,正常情况下,A 账户的余额减少,B 账户的余额增加:但是由于某种原因(例如突然断电),当 A 账户的余额减少之后,B 账户的余额并没有增加,这就造成了数据库数据的安全隐患. 解决方案:当 A 账户的余额减少之后,不要立即修改数据表,而是在确认 B 账户的余额增加之后,同时修改数据表. 事务Transactions ?通过前面的案例及解决方案,我们就引出了一个全新的概念,那就是:事务,即一系列将要发生或正在发生的连续

数据库MySQL/mariadb知识点——数据类型

数据类型 所谓的列类型,其实就是指数据类型,即对数据进行统一的分类,从系统的角度出发是为了能够使用统一的方式进行管理,更好的利用有限的空间. 在 SQL 中,将数据类型分成了三大类,分别为:数值型.字符串型和日期时间型. 选择正确的数据类型对于获得高性能至关重要,三大原则: 更小的通常更好,尽量使用可正确存储数据的最小数据类型 简单就好,简单数据类型的操作通常需要更少的CPU周期 尽量避免NULL,包含为NULL的列,对MySQL更难优化 1.数值型 精确数值 INT TINYINT 微整型 1

MySQL/MariaDB数据库备份与恢复

前言 数据库一般存放着企业最为重要的数据,它关系到企业业务能否正常运转,数据库服务器总会遇到一些不可抗拒因素,导致数据丢失或损坏,而数据库备份可以帮助我们避免由于各种原因造成的数据丢失或着数据库的其他问题.本文将讲解MySQL/MariaDB数据库的几种备份方法. 基础知识 备份类型 完全备份:备份整个数据库 部分备份:仅备份其中的一张表或多张表 增量备份:仅备份从上次完全备份或增量备份之后变化的数据部分 差异备份:备份上次备份后变化的数据部分,和增量备份区别在于差异备份只可以相对完全备份做备份

linux架构学习第二十八天之Mysql/MariaDB数据库入门

内容: 1.数据库简介以及mysql/mariadb背景介绍 2.数据库的一些名词 3.mysql的服务结构 4.mysql客户端的使用 5.数据类型 6.SQL语句介绍 7.mysql的事务机制 一.数据库简介以及mysql/mariadb背景介绍 数据可以存放在多种位置,如普通文件.专门的数据库中,而两者有什么区别,而为什么选择数据库存储?我们知道,假如数据存在普通文件中,当我们要查找其中的一个数据时,要把整个文件加载到内存中,再进行检索,这样速度慢不说,一旦文件较大,直接把内存撑爆了,而数

Yii Framework2.0开发教程(5)数据库mysql函数

继续<Yii Framework2.0开发教程(3)数据库mysql入门> 首先给一些关于yii2数据库支持的介绍 Yii 基于 PHP's PDO建立了一个成熟的数据库访问层.它提供统一的 API 并解决了一些不同 DBMS 产生的使用不利. Yii 默认支持以下 DBMS : MySQL MariaDB SQLite PostgreSQL CUBRID: version 9.1.0 or higher. Oracle MSSQL: version 2012 或更高版本,如需使用 LIMIT

关于数据库管理系统DBMS--关系型数据库(MySQL/MariaDB)

数据库管理系统--DBMS:用来管理数据库 数据库的结构(3种):层次,网状,关系型(用的最多): DBMS的三层模型: 视图层:面向最终用户: 逻辑层:面向程序员或DBA: 物理层:面向系统管理员: 关系型数据库管理系统--RDBMS: 主要的组成部分是表:表是由行(实例,实体,记录)和列(字段,域)组成: 关系型数据库管理系统的实现: 商业方案:Oracle,Sybase{为微软提供了思路出现SQL-server},Infomix{IBM收购},DB2{IBM} 开源方案:PostgreSQ