MYSQL常用函数

普通函数

数学函数

 SELECT ABS(-8); /*绝对值*/
 SELECT CEILING(9.4); /*向上取整*/
 SELECT FLOOR(9.4); /*向下取整*/
 SELECT RAND(); /*随机数,返回一个0-1之间的随机数*/
 SELECT SIGN(0); /*符号函数: 负数返回-1,正数返回1,0返回0*/

字符串函数

 SELECT CHAR_LENGTH('狂神说坚持就能成功'); /*返回字符串包含的字符数*/
 SELECT CONCAT('我','爱','程序'); /*合并字符串,参数可以有多个*/
 SELECT INSERT('我爱编程helloworld',1,2,'超级热爱'); /*替换字符串,从某个位置开始替换某个长度*/
 SELECT LOWER('KuangShen'); /*小写*/
 SELECT UPPER('KuangShen'); /*大写*/
 SELECT LEFT('hello,world',5); /*从左边截取*/
 SELECT RIGHT('hello,world',5); /*从右边截取*/
 SELECT REPLACE('狂神说坚持就能成功','坚持','努力'); /*替换字符串*/
 SELECT SUBSTR('狂神说坚持就能成功',4,6); /*截取字符串,开始和长度*/
 SELECT REVERSE('狂神说坚持就能成功'); /*反转
 ​
 -- 查询姓周的同学,改成邹
 SELECT REPLACE(studentname,'周','邹') AS 新名字
 FROM student WHERE studentname LIKE '周%';

日期与时间函数

 SELECT CURRENT_DATE(); /*获取当前日期*/
 SELECT CURDATE(); /*获取当前日期*/
 SELECT NOW(); /*获取当前日期和时间*/
 SELECT LOCALTIME(); /*获取当前日期和时间*/
 SELECT SYSDATE(); /*获取当前日期和时间*/
 ​
 -- 获取年月日,时分秒
 SELECT YEAR(NOW());
 SELECT MONTH(NOW());
 SELECT DAY(NOW());
 SELECT HOUR(NOW());
 SELECT MINUTE(NOW());
 SELECT SECOND(NOW());

系统信息函数

 SELECT VERSION(); /*版本*/
 SELECT USER(); /*用户*/

聚合函数

函数 描述
COUNT() 返回满足Select条件的记录总和数,如 select count(*) 【不建议使用 *,效率低】
SUM() 返回数字字段或表达式列作统计,返回一列的总和
AVG() 通常为数值字段或表达列作统计,返回一列的平均值
MAX() 可以为数值字段,字符字段或表达式列作统计,返回最大的值
MIN() 可以为数值字段,字符字段或表达式列作统计,返回最小的值

例:

 -- 聚合函数
 /*COUNT:非空的*/
 SELECT COUNT(studentname) FROM student;
 SELECT COUNT(*) FROM student;
 SELECT COUNT(1) FROM student; /*推荐*/
 ​
 -- 从含义上讲,count(1) 与 count(*) 都表示对全部数据行的查询。
 -- count(字段) 会统计该字段在表中出现的次数,忽略字段为null 的情况。即不统计字段为null的记录。
 -- count(*) 包括了所有的列,相当于行数,在统计结果的时候,包含字段为null 的记录;
 -- count(1) 用1代表代码行,在统计结果的时候,包含字段为null 的记录 。
 /*
 很多人认为count(1)执行的效率会比count(*)高,原因是count(*)会存在全表扫描,而count(1)
 可以针对一个字段进行查询。其实不然,count(1)和count(*)都会对全表进行扫描,统计所有记录的
 条数,包括那些为null的记录,因此,它们的效率可以说是相差无几。而count(字段)则与前两者不
 同,它会统计该字段不为null的记录条数。
 ​
 下面它们之间的一些对比:
 ​
 1)在表没有主键时,count(1)比count(*)快
 2)有主键时,主键作为计算条件,count(主键)效率最高;
 3)若表格只有一个字段,则count(*)效率较高。
 */
 ​
 SELECT SUM(StudentResult) AS 总和 FROM result;
 SELECT AVG(StudentResult) AS 平均分 FROM result;
 SELECT MAX(StudentResult) AS 最高分 FROM result;
 SELECT MIN(StudentResult) AS 最低分 FROM result;

注:

where写在group by前面,要是放在分组后面的筛选,要使用HAVING

因为 HAVING 是从前面筛选的字段再筛选

而 where 是从数据表中的>字段直接进行的筛选的

 -- 查询不同课程的平均分,最高分,最低分
 -- 前提:根据不同的课程进行分组
 SELECT subjectname,AVG(studentresult) AS 平均分,MAX(StudentResult) AS 最高
 分,MIN(StudentResult) AS 最低分
 FROM result AS r
 INNER JOIN `subject` AS s
 ON r.subjectno = s.subjectno
 GROUP BY r.subjectno
 HAVING 平均分>80;

发布者:糖太宗,转载请注明出处:https://www.qztxs.com/archives/science/technology/12599

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年6月15日 下午7:03
下一篇 2022年6月16日 下午1:42

相关推荐

  • 求最大最小值,最少要进行多少次比较? | 经典面试题

    如何从n个数里找到最大值? 很容易想到,用一个循环就能搞定。  int find_max(int arr[n]){     int max = -infinite;     for(int i=0; i         if(arr[i]>max)             max=arr[i];     return max; }   这里,需要执行n...

    技术 2022年5月11日
    2800
  • proxychains_error

    在使用proxychains代理时,报了个错误 1 2 ProxyChains-3.1 (http://proxychains.sf.net) ERROR: ld.so: object 'libproxychains.so.3' from LD_PRELOAD cannot be preloaded (cannot open shared object fi...

    技术 2022年6月13日
    3000
  • Nginx输出JSON格式日志

    将Nginx的日志转为json格式 将Nginx日志记录的字段以json格式创建一个命名的日志,配置log_format   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 map $upstream_response_time $upstream...

    技术 2022年6月13日
    7200
  • HTTPS 安全最佳实践(转发)

    0x00 前言 SSL/TLS 是一种简单易懂的技术,它很容易部署及运行。但想要部署的安全通常是不容易的。这也使系统管理员和开发者不得不去了解 SSL 和 TLS 相关的技术,掌握如何配置一个安全的 web 服务器或应用。无疑会耗费很大的精力去看相关的技术文档,乏味且宽泛。 本篇文档的目的在于如何让系统管理员或开发者用尽可能少的时间部署一个安全的 web 站...

    技术 2022年6月1日
    5600
  • 什么是单机 集群 热备 磁盘阵列raid

    单机部署(stand-alone):只有一个饮水机提供服务,服务只部署一份。   集群部署(cluster):有多个饮水机同时提供服务,服务冗余部署,每个冗余的服务都对外提供服务,一个服务挂掉时依然可用。   热备部署(hot-swap):只有一个桶提供服务,另一个桶stand-by,在水用完时自动热替换,服务冗余部署,只有一个主服务对外提供服务,影子服务在...

    2022年5月11日
    4200

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信