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 服务器。