sql语法:sql必读必会(二)mysql中的函数大全

SQL 函数

  1. AVG 函数
    作用:AVG 函数返回数值列的平均值。NULL 值不包括在计算中
    语法:SELECT AVG(列) FROM 表

    求id平均值(实在没字段了,就是意思意思)

    id大于平均值的记录

  2. COUNT() 函数
    作用:返回匹配指定条件的行数。
    语法:SELECT COUNT(列) FROM 表

    年龄是13的记录有34行

    id大于1的年龄不同值2个

  3. FIRST() 函数
    作用:返回指定的字段中第一个记录的值。(多与order by 联合使用)
    语法:SELECT FIRST(列) FROM 表
    !!!这个划重点,贼鸡儿坑,我不知道啥数据支持这个函数,反正mysql,sqlserver,oracle都不支持。
    SQL Server 语法:
    SELECT TOP 1 column_name FROM table_name
    ORDER BY column_name ASC;

    MySQL 语法:
    SELECT column_name FROM table_name
    ORDER BY column_name ASC
    LIMIT 1;

    Oracle 语法:
    SELECT column_name FROM table_name
    ORDER BY column_name ASC
    WHERE ROWNUM <=1;

    因为我这只有mysql数据库,所以就用mysql做例子:

    排序某字段并取第一行记录值

  4. LAST() 函数
    作用:返回指定的字段中最后一个记录的值。
    语法:SELECT LAST(列) FROM 表
    这个没啥好说的了。照着上面第三个来,order by反过来就ok了!我也不多说了,毕竟mysql,sqlserver都不直接支持。

  5. MAX() 函数
    作用:返回一列中的最大值。NULL 值不包括在计算中
    语法:SELECT MAX(列) FROM 表

    最大年龄

  6. MIN() 函数
    作用:返回一列中的最小值。NULL 值不包括在计算中
    语法:SELECT MIN(列) FROM 表

    age最小值

  7. SUM() 函数
    作用:返回数值列的总数(总额)
    语法:SELECT SUM(列) FROM 表

    表中年龄总和

  8. GROUP BY 语句
    作用:用于结合合计函数,根据一个或多个列对结果集进行分组。GROUP BY 语句常常与合计函数联合使用。
    语法:SELECT 分组列,合计函数(合计列) FROM 表 (如果有条件还可以加where语句) GROUP BY 分组列
    其实我觉得这个比较复杂,也不是一个例子两个例子就能完全了解的,甚至我用的也没多少熟练,简单的写几种情况:
    因为这个要结合业务,我这里就拿已有的例子简单的写几个情景:

    每个司机的跑单总数

    订单状态为0是已完成,所以想查找每个司机已完成的订单数要加个条件,状态为0。
    每个司机已完成的订单总数

    这个和上面的类似,已完成的订单才确定钱数。
    每个司机跑单应得钱数

    规定已完成一周的订单才可以提现,现在求每个司机可提现钱数(execute不为0证明已经提现过,所以不算在内):
    这里确定订单是否已完成一周我用了最笨的一种方法,就是当时的创建时间加上七天是否小于当前实现,不小于则说明不够七天,反之同理。
    每个司机可提现钱数

    计算每个司机每天单数统计:这里是按照司机和日期两个字段分组的。实际业务中还容易出现一种需求,那就是如果某天没有数据要补0,保证日期的连续性。但是我目前的知识储备只能做一张日历表关联,比较麻烦,所以这里就不写了。如果大佬们有更好的办法麻烦告知哈,谢谢了。
    每个司机每天单数

  9. HAVING 子句
    作用:在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。
    语法:SELECT 分组列,合计函数(合计列) FROM 表 (如果有条件还可以加where语句) GROUP BY 分组列 HAVING 合计函数(合计列)条件

    挣钱超过一万五的司机

  10. UCASE() 函数
    作用:把字段的值转换为大写。
    语法:SELECT UCASE(列) FROM 表

    image.png

  11. LCASE() 函数
    作用:把字段的值转换为小写。
    语法:SELECT LCASE(列) FROM 表
    用法和上面的大写是一样的,我也不写demo了。

  12. MID() 函数
    作用:用于从文本字段中提取字符。
    语法:SELECT MID(列,起始下标(从1开始),截取长度(不填默认到结束)) FROM 表
    这个我理解为就是一个字符串截取。第一个参数是要截取的列,第二个参数从哪里开始截取(注意的是从1开始,不同于常用的从0开始),第三个参数可写可不写,不写默认是截取到结尾。

    从第二个到结尾

    截取1-3

  13. LEN() 函数
    作用:返回文本字段中值的长度。注意!!!!!坑又来了,mysql中这个函数写法不同,mysql中是LENGTH();
    语法:SELECT LENGTH(列) FROM 表

    司机名字的长度

  14. ROUND() 函数
    作用:用于把数值字段舍入为指定的小数位数。
    语法:SELECT ROUND(字段,小数位数) FROM 表
    因为我数据库真的没有小数能做例子,所以这里看不出效果,但是语句运行正常就说明还是有用的。

    image.png

  15. NOW() 函数
    作用:返回当前的日期和时间。
    语法:这个就是一个函数,我在上文都用到过,就不多说了。

    image.png

  16. FORMAT() 、DATE_FORMAT()
    作用:用于对字段的显示进行格式化。
    format()函数:将数据内容格式化的,可以将数据格式化为整数或者带几位小数的浮点数(四舍五入)。
    DATE_FORMAT() 函数:用于以不同的格式显示日期/时间数据。
    语法:DATE_FORMAT(date,format)
    date 参数是合法的日期。format 规定日期/时间的输出格式。

    时间格式的写法

    对,我说的莫名其妙就是因为这个格式,真的可能是我接触的少,所以很受不了。接下来是两种用法的例子:
    两种格式化的用法

先总结到这里,常用的函数应该差不多了,以后遇到新的再添加,争取每天学习一点点,不知道多久会发生质变。然后大家共勉,祝大家工作生活顺顺利利的吧!
全文手打不易,如果你觉得有帮到你或者有点用,别吝啬的点个喜欢和点个关注哦~~

你可能感兴趣的:(sql语法:sql必读必会(二)mysql中的函数大全)