5.1 常用函数(实际并不常用)


数学运算

1. select abs(数值) -- 取绝对值
2. select ceiling(9,4) -- 向上取整
3. select floor(9,4) -- 向下取整
4. select rand() -- 返回0 ~ 1 之间的随机数
5. select sign() -- 判断一个数值的 正负(负数 返回-1 正数返回 1)

字符串函数

6. select char_length(字符串) -- 返回字符串长度
7. select concat(字符串A,字符串B,字符串C,...) -- 拼接这些字符串
8. select insert("我爱你",1,2,"替换") -- 插入字符串或 替换字符串也可以实现
9. select lower(字符串) -- 转为小写
10.select upper(字符串) -- 转为大写 
11.select instr(字符串,子串) -- 返回子串第一次出现的位置 instr 是 in string 的缩写。
12.select replace(原字符串,待替换的字符串,替换后的字符串) -- 替换指定的 子串。
13. select substr(原字符串,起始位置,末位置) -- 返回指定范围的子串
14. select reverse(字符串) -- 反转字符串

时间和日期函数

select current_date() -- 获取当前日期
select curdate() -- 获取当前的日期
select Now() -- 获取当前的时间
select localtime() -- 本地时间
select sysdate() -- 返回系统时间
select year(now()) -- 取一个时间数据的 年份数据
select minute(now()) -- 取 分钟数据
select second(now()) -- 取 秒 数据

系统函数

select system_user(); -- 系统登录的用户
select user() -- 系统登录的用户
select version() -- mysql 版本

5.2 聚合函数(是最常用的函数)

函数名称

描述

count()

计数

sum()

求和

avg()

平均值

max()

最大值

min()

最小值

剩下的自己去查

  1. 查看有多少条数据
select count(studentname) from student;
select count(*) from student;
select count(1) from student;

mysql 聚合函数的值命名为新字段 mysql字符串聚合函数_字符串

count(`字段名`) 会忽略掉 该字段名 下 null 值的 数据!

count(1) 是要比 count(*) 快的。

  1. 求总和、平均值
select sum(studentresult) from result;
select avg(studentresult) from result;

mysql 聚合函数的值命名为新字段 mysql字符串聚合函数_数据库_02


mysql 聚合函数的值命名为新字段 mysql字符串聚合函数_数据库_03

  1. 查询最高分和最低分
select max(studentresult) from result;
select min(studentresult) from result;

mysql 聚合函数的值命名为新字段 mysql字符串聚合函数_mysql 聚合函数的值命名为新字段_04


mysql 聚合函数的值命名为新字段 mysql字符串聚合函数_字符串_05

  1. 练习:查询不同课程的平均分,最高分,最低分

首先我们要知道的是,所谓的不同课程,在 subject 表里面,所以一张表 是不可能查询出来的。

select r.subjectno,subjectname,avg(studentresult),max(studentresult),min(studentresult) from result as r inner join `subject` as sub on r.subjectno = sub.subjectno GROUP BY subjectno;

mysql 聚合函数的值命名为新字段 mysql字符串聚合函数_mysql_06


group by:在聚合查询的时候,是必须要用的,因为 mysql 不知道 你要 通过 什么来进行分组,只有分组后 它才能 把 所有 条数据 显示出来,反馈给你!!如果 聚合查询 后 还需要添加一些 条件来进行限定的话,那么 就 需要 用 having 而不是用 where 去限制条件。

mysql 聚合函数的值命名为新字段 mysql字符串聚合函数_mysql_07

select r.subjectno,subjectname,avg(studentresult)as 平均值,max(studentresult),min(studentresult) from result as r inner join `subject` as sub on r.subjectno = sub.subjectno GROUP BY subjectno having 平均值>80;

mysql 聚合函数的值命名为新字段 mysql字符串聚合函数_数据库_08


这是因为什么呢 ?

答:当你用了 聚合后 就相当于 抛出了一个 首要条件了,所以 再有 限制条件的话,就必须用 having 去修饰了。因为 having 是 在其 之后 进行 限定。

其实 很多时候 都是 要考虑 到底 怎么用 having on 和 where 的。on 通常 用于 联表查询,是在其 之后 进行 限定。where 是 所有语句 都可以 进行限定,但是 都是最先 直接限定。having 是 只能 用于 select 语句,但 在其之后 进行限定。