随时可以打开使用的MySQL常见的函数

为什么使用MySQL函数?

为了简化操作,MySql提供了大量的函数给程序员使用(比如你想输入当前时间,可y以调用now()函数)

在哪里使用MySQL函数

插入语句的values()中,更新语句中,删除语句中,查询语句及其子句中。

MySQL常见函数

字符串函数

函数操作符方法描述
CONCAT(S1,S2,…,Sn)连接S1,S2,…,Sn为一个字符串
CONCAT(s, S1,S2,…,Sn)同CONCAT(s1,s2,…)函数,但是每个字符串之间要加上s
CONCAT_WS(separator, str1, str2, …)可以指定间隔符将多个字符串进行连接;
CHAR_LENGTH(s)返回字符串s的字符数
LENGTH(s)返回字符串s的字节数,和字符集有关
INSERT(str, index , len, instr)将字符串str从第index位置开始,len个字符长的子串替换为字符串instr
UPPER(s) 或 UCASE(s)将字符串s的所有字母转成大写字母
LOWER(s) 或LCASE(s)将字符串s的所有字母转成小写字母
LEFT(s,n)返回字符串s最左边的n个字符
RIGHT(s,n)返回字符串s最右边的n个字符
LPAD(str, len, pad)用字符串pad对str最左边进行填充,直到str的长度为len个字符
RPAD(str ,len, pad)用字符串pad对str最右边进行填充,直到str的长度为len个字符
LTRIM(s)去掉字符串s左侧的空格
RTRIM(s)去掉字符串s右侧的空格
TRIM(s)去掉字符串s开始与结尾的空格
TRIM(【BOTH 】s1 FROM s)去掉字符串s开始与结尾的s1
TRIM(【LEADING】s1 FROM s)去掉字符串s开始处的s1
TRIM(【TRAILING】s1 FROM s)去掉字符串s结尾处的s1
REPEAT(str, n)返回str重复n次的结果
REPLACE(str, a, b)用字符串b替换字符串str中所有出现的字符串a
STRCMP(s1,s2)比较字符串s1,s2
SUBSTRING(s,index,len)返回从字符串s的index位置其len个字符

数学函数

函数操作符方法描述
ABS(x)返回x的绝对值
CEIL(x)返回大于x的最小整数值
FLOOR(x)返回大于x的最大整数值
MOD(x,y)返回x/y的模
RAND(x)返回0~1的随机值
ROUND(x,y)返回参数x的四舍五入的有y位的小数的值
TRUNCATE(x,y)返回数字x截断为y位小数的结果
SQRT(x)返回x的平方根
POW(x,y)返回x的y次方

日期时间函数

函数操作符方法描述
current_date()获取当前日期,如 2019-10-18
current_time()获取当前时:分:秒,如:15:36:11
now()获取当前的日期和时间,如:2019-10-18 15:37:17
WEEK(date) WEEKOFYEAR(date)返回一年中的第几周
DAYOFWEEK()返回周几,注意:周日是1,周一是2,。。。周六是7
WEEKDAY(date)返回周几,注意,周1是0,周2是1,。。。周日是6
DAYNAME(date)返回星期:MONDAY,TUESDAY…SUNDAY
MONTHNAME(date)返回月份:January,。。。。。
DATEDIFF(date1,date2) TIMEDIFF(time1, time2)返回date1 - date2的日期间隔 返回time1 - time2的时间间隔
DATE_ADD(datetime, INTERVALE expr type)返回与给定日期时间相差INTERVAL时间段的日期时间
DATE_FORMAT(datetime ,fmt)按照字符串fmt格式化日期datetime值
STR_TO_DATE(str, fmt)按照字符串fmt对str进行解析,解析为一个日期

流程函数

函数操作符方法描述
IF(value,t ,f)如果value是真,返回t,否则返回f
IFNULL(value1, value2)如果value1不为空,返回value1,否则返回value2
CASE WHEN 条件1 THEN result1 WHEN 条件2 THEN result2 … [ELSE resultn] END相当于Java的if…else if…
CASE expr WHEN 常量值1 THEN 值1 WHEN 常量值1 THEN 值1 … [ELSE 值n] END相当于Java的switch

聚合函数

函数操作符方法描述
max(列名)求这一列的最大值
min(列名)求这一列的最小值
avg(列名)求这一列的平均值
count(列名)统计这一列有多少条记录
sum(列名)对这一列求总和

分组函数

语法:
GROUP BY将分组字段结果中相同内容作为一组,并且返回每组的第一条数据,所以单独分组没什么用处。

SELECT 字段1,字段2... FROM 表名  [where 条件] GROUP BY 列 [HAVING 条件];.

< 分组的目的就是为了统计,一般分组会跟聚合函数一起使用 >

注意事项:

  • 根据某一列进行分组, 将分组字段结果中相同内容作为一组; 有几组 返回的记录就有几条
  • 单独分组 没有意义, 返回每一组的第一条记录
  • 分组的目的一般为了做统计使用, 所以经常和聚合函数一起使用
  • 在分组里面, 如果select后面的列没有出现在group by后面 展示这个组的这个列的第一个数据

连接查询

内连接:
隐式内连接: select … from 表1,表2 where 外键字段的值 = 主表主键的值 and 条件…;
显式内连接: select … from 表1 inner join 表2 on 外键字段的值 = 主表主键的值 [where 条件];

外连接:
左外连接: select … from 左表 left [outer] join 右表 on 外键字段的值 = 主表主键的值 [where 条件];
右外连接: select … from 左表 right [outer] join 右表 on 外键字段的值 = 主表主键的值 [where 条件];

子查询:
子查询的结果是一个值: select … from 表名 where 字段 (= > < >= <= <>) (子查询);

子查询的结果是单列多行: select … from 表名 where 字段 in (子查询);

子查询的结果是多列多行:
select … from (子查询) 别名 where 条件;
select … from (子查询) 别名,表名 别名 where 条件;
select … from (子查询) 别名 left join 表名 别名 on 条件;
select … from (子查询) 别名 right join 表名 别名 on 条件;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值