经常编写程序的朋友一定体会得到函数的重要性,丰富的函数往往能使用户的工作事半功倍。函数能帮助用户做很多事情,比如说字符串的处理、数值的运算、日期的运算等,在这方面MySQL 提供了多种内建函数帮助开发人员编写简单快捷的 SQL 语句,其中常用的函数有字符串函数、日期函数和数值函数。 在 MySQL 数据库中,函数可以用在SELECT 语句及其子句(例如 where、order by、having 等) 中,也可以用在 UPDATE、DELETE 语句及其子句中。
字符串函数是最常用的一种函数了,如果大家编写过程序的话,不妨回过头去看看自己使用过的函数,可能会惊讶地发现字符串处理的相关函数占已使用过的函数很大一部分。MySQL中字符串函数也是最丰富的一类函数,下面给出常用的函数以供参考。
关于上面函数的使用,基本在功能列说清楚了,这里不做过多的演示,需要注意的是这里的说明仅仅在于说明各个函数的使用方法,所以函数都是单个出现的,但是在一个具体的应用中通常可能需要综合几个甚至几类函数才能实现相应的应用,根据具体的逻辑结合使用。
注意:
1.concat函数在拼接NULL值时,结果为NULL
2.left()和right()函数,如果第二个参数为空,则不返回任何字符串
3.substring函数经常用于对给定字符串进行子串的提取
MySQL 中另外一类很重要的函数就是数值函数,这些函数能处理很多数值方面的运算。可以想象,如果没有这些函数的支持,用户在编写有关数值运算方面的代码时将会困难重重,举个例子,如果没有 ABS 函数的话,如果要取一个数值的绝对值,就需要进行好多次判断才能返回这个值,而数字函数能够大大提高用户的工作效率。下面给出常用的数字函数。
注意:
1.MOD(x,y)函数:返回 x/y 的模。 和 x%y 的结果相同,模数和被模数任何一个为 NULL 结果都为NULL。
2.ROUND(x,y)函数:返回参数 x 的四舍五入的有 y 位小数的值。如果是整数,将会保留 y 位数量的 0;如果不写 y,则默认 y 为 0,即将 x 四舍五入后取整。适合于将所有数字保留同样小数位的情况
3.TRUNCATE 和 ROUND 的区别在于 TRUNCATE 仅仅是截断,而不进行四舍五入。
有时我们可能会遇到这样的需求:当前时间是多少、下个月的今天是星期几、统计截止到当前日期前 3 天的收入总和等。这些需求就需要日期和时间函数来实现。下面列举常用的时间、日期函数作为参考。
下面结合一些实例来逐个讲解几个特殊函数的使用方法。
select unix_timestamp('2022-04-02');
+-----------------------+
| UNIX_TIMESTAMP('2022-04-02') |
+-----------------------+
| 1648857600|
+-----------------------+
1 row in set (0.02 sec)
select FROM_UNIXTIME(1184134516) ;
+---------------------------+
| FROM_UNIXTIME(1184134516) |
+---------------------------+
| 2007-07-11 06:15:16 |
+---------------------------+
1 row in set (0.00 sec)
select WEEK(now()),YEAR(now());
+-------------+-------------+
| WEEK(now()) | YEAR(now()) |
+-------------+-------------+
| 16 | 2022|
+-------------+-------------+
1 row in set (0.02 sec)
select MONTHNAME(now());
+------------------+
| MONTHNAME(now()) |
+------------------+
| April |
+------------------+
1 row in set (0.00 sec)
select DATE_FORMAT(now(),'%M,%D,%Y');
+-------------------------------+
| DATE_FORMAT(now(),'%M,%D,%Y') |
+-------------------------------+
| April,20th,2022 |
+-------------------------------+
1 row in set (0.00 sec)
select now() current,date_add(now(),INTERVAL 31 day) after31days,
date_add(now(),INTERVAL '1_2' year_month) after_oneyear_twomonth;
+---------------------+---------------------+------------------------+
| current | after31days | after_oneyear_twomonth |
+---------------------+---------------------+------------------------+
| 2022-04-20 02:56:46 | 2022-05-21 02:56:46 | 2023-06-20 02:56:46 |
+---------------------+---------------------+------------------------+
1 row in set (0.01 sec)
select DATEDIFF('2008-08-08',now());
+------------------------------+
| DATEDIFF('2008-08-08',now()) |
+------------------------------+
| -5003 |
+------------------------------+
1 row in set (0.01 sec)
流程函数也是很常用的一类函数,用户可以使用这类函数在一个 SQL 语句中实现条件选择,这样做能够提高语句的效率,下面给出常用的流程函数。
这里通过例子解释后两个函数的使用逻辑:
-- 假设又职员表,表有id和薪资两列
-- 月薪在 2000 元以上的职员属于高薪,用“high”表示;而2000 元以下的职员属于低薪,用“low”表示
select case when salary<=2000 then 'low' else 'high' end 类型 from salary;
+---------------------------------------------------+
| 类型 |
+---------------------------------------------------+
| low |
| low |
| high |
| high |
| high |
| high | +---------------------------------------------------+
6 rows in set (0.00 sec)
select case salary when 1000 then 'low' when 2000 then 'mid' else 'high' end from salary;
+-----------------------------------------------------------------------+
| case salary when 1000 then 'low' when 2000 then 'mid' else 'high' end |
+-----------------------------------------------------------------------+
| low |
| mid |
| high |
| high |
| high |
| high |
+-----------------------------------------------------------------------+
6 rows in set (0.00 sec)
在日常各种工作中,图形化工具为用户提供了很大的便利。针对 MySQL 数据库,很多公司也都开发了自己的图形化工具,我们主要认识 Navicat Premium。
Navicat Premium 是一套数据库开发工具,让你从单一应用程序中同时连接 MySQL、MariaDB、SQL Server、Oracle、PostgreSQL 和 SQLite 数据库。它与 Amazon RDS、Amazon Aurora、Amazon Redshift、Microsoft Azure、Oracle Cloud、阿里云和腾讯云等云数据库兼容。可以使快速轻松地创建、管理和维护数据库。
关于Navicat Premium的下载安装和激活,一搜一大把,这里不做过多的说明。
运行程序,单击“连接”—>点击MySQL(要是其他数据库,则选择其他的)—>输入连接名(自己起)—>输入密码—>连接测试—>点击确定。
点击左侧出现新建立的连接,双击即可打开这个连接。然后就点击相应的数据库,数据表查看相应的内容。
查询代码的书写:
数据的导入导出可以使用SQL语句完成,也可以使用可视化界面完成。点击一个数据表,就会看到导入与导出的操作,然后根据实际选择文件类型即可,如下图:
当然视图界面设计所有的MySQL 的操作,这里不再详细介绍,大伙可以慢慢测试。