• mysql学习笔记—常用sql函数


    SQL 拥有很多可用于计数和计算的内建函数。

    SQL Aggregate 函数

    SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。

    有用的 Aggregate 函数:

    • AVG() - 返回平均值
    • COUNT() - 返回行数
    • FIRST() - 返回第一个记录的值
    • LAST() - 返回最后一个记录的值
    • MAX() - 返回最大值
    • MIN() - 返回最小值
    • SUM() - 返回总和

    SQL Scalar 函数

    SQL Scalar 函数基于输入值,返回一个单一的值。

    有用的 Scalar 函数:

    • UCASE() - 将某个字段转换为大写
    • LCASE() - 将某个字段转换为小写
    • MID() - 从某个文本字段提取字符
    • LEN() - 返回某个文本字段的长度
    • ROUND() - 对某个数值字段进行指定小数位数的四舍五入
    • NOW() - 返回当前的系统日期和时间
    • FORMAT() - 格式化某个字段的显示方式

    AVG() 函数

    AVG() 函数返回数值列的平均值。

    SELECT AVG(column_name) FROM table_name

    COUNT() 函数

    COUNT() 函数返回匹配指定条件的行数。

    COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):

    SELECT COUNT(column_name) FROM table_name;

    COUNT(*) 函数返回表中的记录数(不会忽略列值为NULL的记录):

    SELECT COUNT(*) FROM table_name;

    COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目(NULL 不计入):

    SELECT COUNT(DISTINCT column_name) FROM table_name;

    InnoDB 引擎以同样的方式处理 SELECT COUNT(*) 和 COUNT(1),两者没有性能差异。 

    MyISAM引擎,当第一列定义为 NOT NULL 时,COUNT(1) 和 COUNT(*) 具有相同的查询性能。

    MAX() 函数

    MAX() 函数返回指定列的最大值。

    SELECT MAX(column_name) FROM table_name;

    MIN() 函数

    MIN() 函数返回指定列的最小值。

    SELECT MIN(column_name) FROM table_name;

    SUM() 函数

    SUM() 函数返回数值列的总数。

    SELECT SUM(column_name) FROM table_name;

    GROUP BY 语句

    GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。

    SELECT column_name, aggregate_function(column_name)
    FROM table_name
    WHERE column_name operator value
    GROUP BY column_name;

    例子:

    SELECT site_id, SUM(access_log.count) AS nums
    FROM access_log GROUP BY site_id;

    HAVING 子句

    在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。

    HAVING 子句可以让我们筛选分组后的各组数据。

    SELECT column_name, aggregate_function(column_name)
    FROM table_name
    WHERE column_name operator value
    GROUP BY column_name
    HAVING aggregate_function(column_name) operator value;

    例子:

    SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_log
    INNER JOIN Websites
    ON access_log.site_id=Websites.id)
    GROUP BY Websites.name
    HAVING SUM(access_log.count) > 200;

    UCASE() 函数

    UCASE() 函数把字段的值转换为大写。

    SELECT UCASE(column_name) FROM table_name;

    LCASE() 函数

    LCASE() 函数把字段的值转换为小写。

    SELECT LCASE(column_name) FROM table_name;

    MID() 函数

    MID() 函数用于从文本字段中提取字符。

    SELECT MID(column_name,start[,length]) FROM table_name;
    • column_name:必需。要提取字符的字段。
    • start:必需。规定开始位置(起始值是 1)。
    • length:可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。

    LEN() 函数

    LEN() 函数返回文本字段中值的长度。

    SELECT LEN(column_name) FROM table_name;

    MySQL 中函数为 LENGTH():

    SELECT LENGTH(column_name) FROM table_name;

    ROUND() 函数

    ROUND() 函数用于把数值字段舍入为指定的小数位数。

    ROUND(X): 返回参数X的四舍五入的一个整数。

    mysql> select ROUND(-1.23);
            -> -1
    mysql> select ROUND(-1.58);
            -> -2
    mysql> select ROUND(1.58);
            -> 2

    ROUND(X,D): 返回参数X的四舍五入的有 D 位小数的一个数字。如果D为0,结果将没有小数点或小数部分。

    mysql> select ROUND(1.298, 1);
            -> 1.3
    mysql> select ROUND(1.298, 0);
            -> 1

    NOW() 函数

    NOW() 函数返回当前系统的日期和时间。

    SELECT NOW() FROM table_name;

    FORMAT() 函数

    FORMAT() 函数用于对字段的显示进行格式化。

    SELECT FORMAT(column_name,format) FROM table_name;
    • column_name:必需。要格式化的字段。
    • format:必需。规定格式。

    例子(使用的是DATE_FORMAT函数,格式化时间):

    SELECT name, url, DATE_FORMAT(Now(),'%Y-%m-%d') AS date
    FROM Websites;

     可以使用的format格式有:

    格式描述
    %a 缩写星期名
    %b 缩写月名
    %c 月,数值
    %D 带有英文前缀的月中的天
    %d 月的天,数值(00-31)
    %e 月的天,数值(0-31)
    %f 微秒
    %H 小时 (00-23)
    %h 小时 (01-12)
    %I 小时 (01-12)
    %i 分钟,数值(00-59)
    %j 年的天 (001-366)
    %k 小时 (0-23)
    %l 小时 (1-12)
    %M 月名
    %m 月,数值(00-12)
    %p AM 或 PM
    %r 时间,12-小时(hh:mm:ss AM 或 PM)
    %S 秒(00-59)
    %s 秒(00-59)
    %T 时间, 24-小时 (hh:mm:ss)
    %U 周 (00-53) 星期日是一周的第一天
    %u 周 (00-53) 星期一是一周的第一天
    %V 周 (01-53) 星期日是一周的第一天,与 %X 使用
    %v 周 (01-53) 星期一是一周的第一天,与 %x 使用
    %W 星期名
    %w 周的天 (0=星期日, 6=星期六)
    %X 年,其中的星期日是周的第一天,4 位,与 %V 使用
    %x 年,其中的星期一是周的第一天,4 位,与 %v 使用
    %Y 年,4 位
    %y 年,2 位

    在MySQL中还可以使用IF()、IFNULL()、NULLIF()、ISNULL()函数进行流程的控制。

    IF()函数

    IF(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false,则返回expr3的值。

    SELECT IF(TRUE,'A','B'); -- 输出结果:A
    SELECT IF(FALSE,'A','B'); -- 输出结果:B

    IFNULL()函数

    IFNULL(expr1,expr2),如果expr1的值为null,则返回expr2的值,如果expr1的值不为null,则返回expr1的值。

    SELECT IFNULL(NULL,'B'); -- 输出结果:B
    SELECT IFNULL('HELLO','B'); -- 输出结果:HELLO

    NULLIF()函数

    NULLIF(expr1,expr2),如果expr1=expr2成立,那么返回值为null,否则返回值为expr1的值。

    SELECT NULLIF('A','A'); -- 输出结果:null
    SELECT NULLIF('A','B'); -- 输出结果:A


    ISNULL()函数

    ISNULL(expr),如果expr的值为null,则返回1,如果expr1的值不为null,则返回0。

    SELECT ISNULL(NULL); -- 输出结果:1
    SELECT ISNULL('HELLO'); -- 输出结果:0


     

    参考:

    菜鸟教程:SQL函数

    w3c的sql教程

    MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用

  • 相关阅读:
    Ubuntu终端Terminal常用快捷键
    继承(一)
    c语言中动态数组的建立
    指针的一些小的知识点
    什么是内存地址
    组合(composition)与继承(inheritance)
    重载new和delete
    不要轻易delete void*指针,这样会隐藏比较多的错误。
    内存管理运算符new delete与内存管理函数malloc free的区别——已经他们对对象创建的过程。
    自动类型转换之全局重载运算符与成员重载运算符
  • 原文地址:https://www.cnblogs.com/Jason-Xiang/p/6707484.html
Copyright © 2020-2023  润新知