SQL---基本常用函数

SQL—基本常用函数

提示:本人新手,仅供参考

案例成绩表结构
表结构

1、AVG 函数

AVG 函数返回数值列的平均值,NULL 值不包括在计算中

-- 查询整个年级的语文平均分
SELECT AVG(score) AS "语文平均分" FROM grade WHERE `subject` = '语文'
-- 查询语文成绩高于平均分的同学及分数
SELECT st_name AS '姓名',score AS '分数' FROM grade WHERE `subject` = '语文' AND 
score > (SELECT AVG(score) FROM grade WHERE `subject` = '语文')

2、COUNT() 函数

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

SELECT COUNT(id) FROM grade

3、TOP 函数

FIRST() 函数返回指定的字段中第一个记录的值
注意:TOP 是Sql Server 数据库中的,在MySQL使用LIMIT限制条数

-- 左闭右开
SELECT * FROM grade LIMIT 0,5

4、MAX() 函数

MAX 函数返回一列中的最大值,NULL 值不包括在计算中

SELECT MAX(score) FROM grade

5、MIN() 函数

MIN 函数返回一列中的最小值,NULL 值不包括在计算中

SELECT MIN(score) FROM grade

6、SUM() 函数

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

SELECT SUM(score) FROM grade

7、UCASE() 函数

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

-- 原值 Ms Wang 转换后值MS WANG
SELECT LCASE(`name`) FROM teacher

8、LCASE() 函数

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

-- 原值 Ms Wang 转换后值ms wang
SELECT LCASE(`name`) FROM teacher

9、MID() 函数

MID 函数用于从文本字段中提取字符
第一个参数是要提取字符的字段,第二个参数是起始位置(起始值是 1),第三个参数是字符个数(如果省略则是返回剩余文本)

SELECT MID(score,1,3) score FROM grade

10、LEN() 函数

LEN 函数返回文本字段中值的长度
注意:LEN()是Sql Server 数据库中的,在MySQL使用LENGTH()

SELECT LENGTH(score) score FROM grade

11、ROUND() 函数

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

-- 假设price为16.88
--表示对score进行保留一位小数
SELECT ROUND(score,1) FROM grade

舍入规则(我理解的):如1.501只保留整数,它是与1.5比较大于1.5进位,小于或等于1.5的舍去

12、NOW() 函数

NOW 函数返回当前的日期和时间
注意:NOW()是MySQL数据库中的,在Sql Server 数据库中使用

SELECT NOW() AS '当前日期和时间' FROM DUAL

13、FORMAT() 函数

FORMAT 函数用于对字段的显示进行格式化
注意:FORMAT() 是Sql Server 数据库中的,在MySQL使用DATE_FORMAT()
说是对字段的显示进行格式化,但我在网上只看到了它对时间类型数据进行格式化,不知道能否自定义格式类型不!

-- 在MySQL中是DATE_FORMAT
-- DUAL是伪表,用于保证语句的结构完整
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d') AS '当前日期' FROM DUAL

14、GROUP BY 语句

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

-- 查询学科名以及对应的平均分
SELECT `subject` AS '学科',AVG(score) AS '平均分' FROM grade GROUP BY `subject`

15、HAVING 子句

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字语句内无法使用聚合函数,HAVING子句一般用于对聚合函数的值做限定,通常与GROUP BY函数一起使用
需求:查询一班平均分大于60的科目及其平均分

SELECT `subject` AS '学科',AVG(score) AS '平均分' FROM grade WHERE st_class = 1 GROUP BY `subject` HAVING AVG(score) > 60

16、GROUP_CONCAT()函数

这个函数在MySQL中有,在其他的数据库中有没有不知道!
用于一对多字段的连接,将多的值字符串拼接在一起,中间用逗号隔开
班主任表
需求:查询班级对应班主任姓名和学生姓名
主要的是因为班级和学生是一对多的关系,又要将他们同时查出来,只用JOIN无法做到将学生姓名统计在一起,查询出来是多条记录

SELECT t.class_num AS '班级',t.`name` AS '班主任姓名',
	GROUP_CONCAT(g.st_name) AS '学生姓名' 
FROM teacher t LEFT JOIN grade g ON t.class_num = g.st_class  
WHERE g.`subject` = '语文' GROUP BY t.`name`

查询结果

17、CONCAT 函数

用于字符串的拼接
CONCAT做字符串拼接,防止SQL注入

-- 用在查询条件中
SELECT * FROM greade WHERE CONCAT('%',st_name,'%') AND del_flag = 0

-- 用在查询结果中
SELECT CONCAT(begin_time,'-',end_time) AS '电影播放时间' FROM schedule

总结

这些常用函数在一些特殊的需求中还是特别有用的!
菜鸟教程链接
W3School教程链接
菜鸟教程更加全面,但是界面丑!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值