MySQL 函数:字符串、数字、用户定义、存储

什么是函数?

MySQL 不仅可以存储和检索数据. 我们也可以 对数据进行操作 在检索或保存之前。这就是 MySQL 函数就派上用场了。函数只是执行某些操作然后返回结果的代码片段。有些函数接受参数,而其他函数不接受参数。

让我们简单看一下 MySQL 函数。默认情况下, MySQL 以“YYYY-MM-DD”格式保存日期数据类型。假设我们构建了一个应用程序,并且我们的用户希望以“DD-MM-YYYY”格式返回日期,我们可以使用 MySQL 内置函数 DATE_FORMAT 来实现这一点。DATE_FORMAT 是 MySQL。随着课程的展开,我们将更详细地讨论这个问题。

为什么要使用函数?

为什么要使用函数

根据介绍中给出的例子,有计算机编程经验的人可能会想“为什么要费心 MySQL “函数?用脚本/编程语言能达到同样的效果吗?”的确,我们可以通过在应用程序中编写一些过程/函数来实现。

回到介绍中的 DATE 示例,为了让我们的用户获取所需格式的数据,业务层必须进行必要的处理。

当应用程序必须与其他系统集成时,这就会成为一个问题。当我们使用 MySQL 函数,例如 DATE_FORMAT,那么我们可以将此功能嵌入到数据库中,任何需要数据的应用程序都可以以所需的格式获取数据。这 减少业务逻辑的返工并减少数据不一致。

我们应该考虑使用的另一个原因 MySQL 它的功能是帮助减少客户端/服务器应用程序中的网络流量。业务层只需要调用存储的函数而无需操作数据。平均而言,使用函数可以大大提高整体系统性能。

函数类型

内建功能

MySQL 捆绑了许多内置函数。内置函数只是在 MySQL 服务器。这些函数允许我们对数据执行不同类型的操作。内置函数基本上可以分为以下最常用的类别。

  • 字符串函数 – 对字符串数据类型进行操作
  • 数值函数 – 对数字数据类型进行操作
  • 日期功能 – 对日期数据类型进行操作
  • 汇总功能 – 对所有上述数据类型进行操作并生成汇总结果集。
  • 其他功能 – MySQL 还支持其他类型的内置函数,但我们将把我们的课程限制到仅上述函数。

现在让我们详细了解上面提到的每个函数。我们将使用我们的“Myflixdb”解释最常用的函数。

字符串函数

我们已经了解了字符串函数的作用。我们将看一个使用它们的实际示例。在我们的电影表中,电影标题使用小写和大写字母的组合来存储。假设我们想要获取一个以大写字母返回电影标题的查询列表。我们可以使用“UCASE”函数来做到这一点。它以字符串作为参数并将所有字母转换为大写。下面显示的脚本演示了“UCASE”函数的用法。

SELECT `movie_id`,`title`, UCASE(`title`)  FROM `movies`;

点击这里

  • UCASE(`title`) 是内置函数,它将标题作为参数,并以别名“upper_case_title”以大写字母返回。

在以下位置执行上述脚本 MySQL 针对 Myflixdb 的工作台为我们提供了以下显示的结果。

movie_id title UCASE('title')
16 67% Guilty 67% GUILTY
6 Angels and Demons ANGELS AND DEMONS
4 Code Name Black CODE NAME BLACK
5 Daddy's Little Girls DADDY'S LITTLE GIRLS
7 Davinci Code DAVINCI CODE
2 Forgetting Sarah Marshal FORGETTING SARAH MARSHAL
9 Honey mooners HONEY MOONERS
19 movie 3 MOVIE 3
1 Pirates of the Caribean 4 PIRATES OF THE CARIBEAN 4
18 sample movie SAMPLE MOVIE
17 The Great Dictator THE GREAT DICTATOR
3 X-Men X-MEN

MySQL 支持多种字符串函数。有关所有内置字符串函数的完整列表,请参阅此链接 http://dev.mysql.com/doc/refman/5.0/en/string-functions.html on MySQL 网站。

数值函数

如前所述,这些函数对数字数据类型进行操作。我们可以在 SQL 语句中对数字数据执行数学计算。

算术运算符

MySQL 支持以下算术运算符,可用于在 SQL 语句中执行计算。

姓名 描述
DIV 整数除法
/ 您所属的事业部
减法
+ 增加
* 乘法
% 或 MOD 系数

现在让我们看一下上述每个运算符的示例

整数除法 (DIV)

SELECT 23 DIV 6 ;

执行上述脚本将得到以下结果。

3

除法运算符 (/)

现在让我们看一下除法运算符示例。我们将修改 DIV 示例。

SELECT 23 / 6 ;

执行上述脚本将得到以下结果。

3.8333

减法运算符 (-)

现在让我们看一下减法运算符示例。我们将使用与前两个示例相同的值

SELECT 23 - 6 ;

执行上述脚本得到 17

加法运算符 (+)

现在我们来看一下加法运算符的示例。我们将修改前面的示例。

SELECT 23 + 6 ;

执行上述脚本得到 29

乘法运算符 (*)

现在让我们看一下乘法运算符的示例。我们将使用与前面的示例相同的值。

SELECT 23 * 6 AS `multiplication_result`;

执行上述脚本将得到以下结果。

乘法结果
138

模数运算符 (-)

模数运算符将 N 除以 M 并得出余数。现在让我们看一下模数运算符示例。我们将使用与前面示例中相同的值。

SELECT 23 % 6 ;

OR

SELECT 23 MOD 6 ;

执行上述脚本得到 5

现在让我们看看 MySQL.

地板 – 此函数删除数字中的小数位并将其四舍五入为最接近的最小数字。下面的脚本演示了它的用法。

SELECT FLOOR(23 / 6) AS `floor_result`;

执行上述脚本将得到以下结果。

Floor_result
3

圆形 – 此函数将带小数的数字四舍五入为最接近的整数。下面的脚本演示了它的用法。

SELECT ROUND(23 / 6) AS `round_result`;

执行上述脚本将得到以下结果。

Round_result
4

边界 – 此函数用于生成随机数,每次调用该函数时,其值都会发生变化。下面的脚本演示了它的用法。

SELECT RAND() AS `random_result`;

存储函数

存储函数就像内置函数一样,只是您必须自己定义存储函数。一旦创建了存储函数,它就可以像任何其他函数一样在 SQL 语句中使用。创建存储函数的基本语法如下所示

CREATE FUNCTION sf_name ([parameter(s)])
   RETURNS data type
   DETERMINISTIC
   STATEMENTS

点击这里

  • “创建函数 sf_name ([参数])” 是强制性的,并告知 MySQL 服务器创建一个名为“sf_name”的函数,并在括号中定义可选参数。
  • “返回数据类型” 是强制性的,指定函数应返回的数据类型。
  • **确定性** 意味着如果向函数提供相同的参数,该函数将返回相同的值。
  • **声明** 是函数执行的程序代码。

现在让我们看一个实现内置函数的实际示例。假设我们想知道哪些租借的电影已经过了归还日期。我们可以创建一个存储函数,接受归还日期作为参数,然后将其与当前日期进行比较 MySQL 服务器。如果当前日期小于返回的电影日期,则返回“否”,否则返回“是”。下面显示的脚本可帮助我们实现这一点。

DELIMITER |
CREATE FUNCTION sf_past_movie_return_date (return_date DATE)
  RETURNS VARCHAR(3)
   DETERMINISTIC
    BEGIN
     DECLARE sf_value VARCHAR(3);
        IF curdate() > return_date
            THEN SET sf_value = 'Yes';
        ELSEIF  curdate() <= return_date
            THEN SET sf_value = 'No';
        END IF;
     RETURN sf_value;
    END|

执行上述脚本创建了存储函数“sf_past_movie_return_date”。

现在让我们测试一下我们的存储函数。

SELECT `movie_id`,`membership_number`,`return_date`,CURDATE() ,sf_past_movie_return_date(`return_date`)  FROM `movierentals`;

在以下位置执行上述脚本 MySQL 针对 myflixdb 的工作台为我们提供了以下结果。

movie_id membership_number return_date CURDATE() sf_past_movie_return_date('return_date')
1 1 NULL 04-08-2012 NULL
2 1 25-06-2012 04-08-2012 yes
2 3 25-06-2012 04-08-2012 yes
2 2 25-06-2012 04-08-2012 yes
3 3 NULL 04-08-2012 NULL

用户定义函数

MySQL 还支持扩展的用户定义函数 MySQL. 用户定义函数是可以使用编程语言创建的函数,例如 C, C++ 等,然后将它们添加到 MySQL 服务器。添加后,它们可以像任何其他函数一样使用。

总结

  • 函数使我们能够增强 MySQL.
  • 函数总是返回一个值并且可以选择性地接受参数。
  • 内置函数是随附的函数 MySQL。它们可以根据所操作的数据类型进行分类,即字符串、日期和数字内置函数。
  • 存储函数由用户在 MySQL 服务器并且可以在 SQL 语句中使用。
  • 用户定义函数在外部创建 MySQL 并可以并入 MySQL 服务器。