MySQL官方文档中列举的所有函数,附带使用示例代码

196 阅读4分钟

聚合函数

聚合函数将多行结果计算成单个结果。MySQL提供了许多聚合函数,如AVG、MAX、MIN、SUM、COUNT等等。

  • AVG():返回指定列的平均值。

    示例代码:

    复制代码
    SELECT AVG(salary) AS avg_salary FROM employees;
    
  • COUNT():返回某列的行数。

    示例代码:

    复制代码
    SELECT COUNT(*) AS employee_count FROM employees;
    
  • MAX():返回指定列的最大值。

    示例代码:

    复制代码
    SELECT MAX(salary) AS max_salary FROM employees WHERE department_id=1;
    
  • MIN():返回指定列的最小值。

    示例代码:

    复制代码
    SELECT MIN(salary) AS min_salary FROM employees WHERE department_id=2;
    
  • SUM():返回指定列的总和。

    示例代码:

    复制代码
    SELECT SUM(salary) AS total_salary FROM employees WHERE department_id=3;
    

窗口函数

窗口函数是一类特殊的函数,它们可以在整个查询结果集中执行计算操作,而不仅仅是单独的行。MySQL支持ROW_NUMBER、RANK、DENSE_RANK、NTILE等窗口函数。

  • ROW_NUMBER():为每个分区内的行分配一个唯一编号。

    示例代码:

    复制代码
    SELECT ROW_NUMBER() OVER(ORDER BY salary DESC) AS row_num, first_name, last_name, salary 
    FROM employees WHERE department_id=1 ORDER BY salary DESC;
    
  • RANK():计算每个分区内的行排名。

    示例代码:

    复制代码
    SELECT RANK() OVER(PARTITION BY department_id ORDER BY salary DESC) AS dept_rank, first_name, last_name, salary 
    FROM employees ORDER BY department_id, dept_rank;
    
  • DENSE_RANK():计算部门内高于当前员工的人数。

    示例代码:

    复制代码
    SELECT DENSE_RANK() OVER(PARTITION BY department_id ORDER BY salary DESC) AS dense_dept_rank, first_name, last_name, salary 
    FROM employees ORDER BY department_id, dense_dept_rank;
    
  • NTILE():将行分成指定数量的桶,返回每个桶的编号。

    示例代码:

    复制代码
    SELECT NTILE(4) OVER(ORDER BY salary DESC) AS quartile, first_name, last_name, salary 
    FROM employees ORDER BY quartile, salary DESC;
    

数值函数

数值函数用于对数字进行操作,如ABS、CEIL、FLOOR、MOD、RAND等等。

  • ABS():返回一个数的绝对值。

    示例代码:

    复制代码
    SELECT ABS(-10);
    
  • CEIL():将一个数向上取整为最接近的整数。

    示例代码:

    复制代码
    SELECT CEIL(3.14);
    
  • FLOOR():将一个数向下取整为最接近的整数。

    示例代码:

    复制代码
    SELECT FLOOR(3.14);
    
  • MOD():返回两个数相除的余数。

    示例代码:

    复制代码
    SELECT MOD(10, 3);
    
  • RAND():返回一个0到1之间的随机数。

    示例代码:

    复制代码
    SELECT RAND();
    

字符串函数

字符串函数用于处理文本字符串,如CONCAT、LENGTH、SUBSTRING、TRIM等等。

  • CONCAT():将两个或多个字符串连接在一起。

    示例代码:

    复制代码
    SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;
    
  • LENGTH():返回指定字符串的长度。

    示例代码:

    复制代码
    SELECT LENGTH('hello world');
    
  • SUBSTRING():返回一个字符串的一部分,可以指定起始位置和长度。

    示例代码:

    复制代码
    SELECT SUBSTRING('hello world', 1, 5);
    
  • TRIM():去掉字符串的前导和后缀空格。

    示例代码:

    复制代码
    SELECT TRIM(' hello world   ');
    

日期和时间函数

日期和时间函数用于处理日期和时间,如NOW、DATE、TIME、YEAR、MONTH等等。

  • NOW():返回当前日期和时间。

    示例代码:

    复制代码
    SELECT NOW();
    
  • DATE():返回一个日期的日期部分。

    示例代码:

    复制代码
    SELECT DATE('2023-04-05 17:05:37');
    
  • TIME():返回一个日期的时间部分。

    示例代码:

    复制代码
    SELECT TIME('2023-04-05 17:05:37');
    
  • YEAR():返回一个日期的年份部分。

    示例代码:

    复制代码
    SELECT YEAR('2023-04-05');
    
  • MONTH():返回一个日期的月份部分。

    示例代码:

    复制代码
    SELECT MONTH('2023-04-05');
    

Performance Schema Functions

Performance Schema是MySQL的一个可选组件,用于监视MySQL服务器的性能。Performance Schema函数可以获取有关服务器性能的详细信息,如性能事件、等待事件、锁等。

  • PERFORMANCE_SCHEMA_ENABLED():检查Performance Schema是否启用。

    示例代码:

    复制代码
    SELECT PERFORMANCE_SCHEMA_ENABLED();
    
  • WAIT_FOR_EXECUTED_GTID_SET():等待执行的GTID集合。

    示例代码:

    复制代码
    SELECT WAIT_FOR_EXECUTED_GTID_SET('1-1-1', 10);
    

Internal Functions

MySQL还提供了许多内部函数,例如CONNECTION_ID、CURRENT_USER、LAST_INSERT_ID等。

  • CONNECTION_ID():返回当前连接的ID。

    示例代码:

    复制代码
    SELECT CONNECTION_ID();
    
  • CURRENT_USER():返回当前用户的用户名和主机名。

    示例代码:

    复制代码
    SELECT CURRENT_USER();
    
  • LAST_INSERT_ID():返回上次插入操作的最后一个自增ID。

    示例代码:

    复制代码
    INSERT INTO employees (first_name, last_name, salary) VALUES ('John', 'Smith', 50000);
    SELECT LAST_INSERT_ID();
    

Miscellaneous Functions

MySQL还提供了许多杂项函数,如COALESCE、IFNULL、NULLIF等。

  • COALESCE():返回参数列表中第一个非NULL值。

    示例代码:

    复制代码
    SELECT COALESCE(NULL, 1, 2);
    
  • IFNULL():如果第一个参数不为NULL,则返回第一个参数;否则返回第二个参数。

    示例代码:

    复制代码
    SELECT IFNULL(NULL, 'hello');
    
  • NULLIF():如果两个参数相等,则返回NULL;否则返回第一个参数。

    示例代码:

    复制代码
    SELECT NULLIF(10, 10);
    

以上是MySQL中的一些常用函数及其示例代码