mysql之常用函数、聚合函数以及合并

函数

MySQL函数是 MySQL 数据库提供的内部函数,这些内部函数可以帮助用户更加方便地处理表中的数据。函数就像预定的公式一样存放在数据库里,每个用户都可以调用已经存在的函数来完成某些功能。

  1. 类似Java定义方法

  2. 可以带参数

  3. 必须有返回值(一行一列) ,重点:java方法可以没有返回值,数据库函数必须要有返回值 select max(score) from sc;

  4. 函数可以嵌套到sql语句中 注:存储过程则不可以

  5. 函数可嵌套调用

常用函数

日期函数

函数名称作 用
NOW 和 SYSDATE两个函数作用相同,返回当前系统的日期和时间值
MONTH获取指定日期中的月份
DAYOFMONTH获取指定日期是一个月中是第几天,返回值范围是1~31
YEAR获取年份,返回值范围是 1970〜2069
DATEDIFF获取两个日期之间间隔,返回参数 1 减去参数 2 的值
DATE_FORMAT格式化指定的日期,根据参数返回指定格式的值
DATE_ADD 和 ADDDATE两个函数功能相同,都是向日期添加指定的时间间隔
WEEKDAY获取指定日期在一周内的对应的工作日索引
QUARTER获取季度
WEEK获取指定日期
WEEKOFYEAR获取提定日期在一年中处第几个星期

DATE_FORMAT():将日期转换成字符串 STR_TO_DATE():将字符串转换成日期

date_add(NOW(), interval 1 MONTH)

提问:

  1. 查询各学生的年龄,只按年份来算

  2. 按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一

  3. 查询本周过生日的学生

  4. 查询下周过生日的学生

  5. 查询本月过生日的学生

  6. 查询下月过生日的学生

字符串函数

函数名称作 用
LENGTH计算字符串长度函数,返回字符串的字节长度
LOWER将字符串中的字母转换为小写
UPPER将字符串中的字母转换为大写
LEFT从左侧字截取符串,返回字符串左边的若干个字符
RIGHT从右侧字截取符串,返回字符串右边的若干个字符
TRIM删除字符串左右两侧的空格
REPLACE字符串替换函数,返回替换后的新字符串
SUBSTRING截取字符串,返回从指定位置开始的指定长度的字符换
CONCAT字符串连接
...

数值型函数

函数名称作 用
ABS求绝对值
SQRT求二次方根
MOD求余数
CEIL 和 CEILING两个函数功能相同,都是返回不小于参数的最小整数,即向上取整
FLOOR向下取整,返回值转化为一个BIGINT
RAND生成一个0~1之间的随机数,传入整数参数是,用来产生重复序列
ROUND对所传参数进行四舍五入
...

聚合函数

函数名称作用
MAX查询指定列的最大值
MIN查询指定列的最小值
COUNT统计查询结果的行数
SUM求和,返回指定列的总和
AVG求平均值,返回指定列数据的平均值

流程控制函数

函数名称作用
IF判断,流程控制
IFNULL判断是否为空
CASE搜索语句
  1. IF语法结构如下:

    IF(expr,v1,v2)

示例:

SELECT sid,sname,IF(address is NULL,'未知',address) '地址'  FROM t_student ;
  1. IFNULL函数的语法:

IFNULL(v1,v2);
​
其中:如果 v1 不为 NULL,则 IFNULL 函数返回 v1; 否则返回 v2 的结果。

示例:

SELECT sid,sname,IFNULL(address,'未知') '地址'  FROM t_student ;
  1. CASE

简单的 CASE 语句的语法:

CASE  <表达式>
   WHEN <值1> THEN <操作>
   WHEN <值2> THEN <操作>
   ...
   ELSE <操作>
END CASE;

其中:<表达式> 可以是任何有效的表达式。我们将 <表达式> 的值与每个 WHEN 子句中的值进行比较,例如 <值1>,<值2> 等。如果 <表达式> 和 <值n> 的值相等,则执行相应的 WHEN 分支中的命令 <操作>。如果 WHEN 子句中的 <值n> 没有与 <表达式> 的值匹配,则 ELSE 子句中的命令将被执行。ELSE 子句是可选的。 如果省略 ELSE 子句,并且找不到匹配项,MySQL 将引发错误。

示例:

 SELECT CASE WEEKDAY(NOW()) 
 WHEN 0 THEN '星期一' 
 WHEN 1 THEN '星期二' 
 WHEN 2 THEN '星期三' 
 WHEN 3 THEN '星期四' 
 WHEN 4 THEN '星期五' 
 WHEN 5 THEN '星期六'
 ELSE '星期天' END AS COLUMN1,NOW(),WEEKDAY(NOW()),DAYNAME(NOW());

提问:如何显示成绩等级?

union

mysql union 用于把来自多个select 语句的结果组合到一个结果集合中。语法为:

select  column,......from table1
union [all]
select  column,...... from table2
  1. 重复记录是指查询中各个字段完全重复的记录。

  2. 第一个 SELECT 语句中被使用的字段名称也被用于结果的字段名称。

  3. 各 SELECT 语句字段名称可以不同,但字段属性必须一致。

union 与 union all 的区别

当使用union 时,mysql 会把结果集中重复的记录删掉,而使用union all ,mysql 会把所有的记录返回,且效率高于union 。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值