MySQL学习_入门_常用函数_分组

四、常用函数

4.1常见函数

select upper(指定字符串)

	select upper(指定字符串)

在这里插入图片描述

  • left(str,len) 返回左边的字符

  • select Lower(‘ABC’);

	select Lower('ABC');

在这里插入图片描述

SELECT SUBSTRING(STR,POS);
POS为开始索引,STR为字符串

	SELECT SUBSTRING('你好啊2222',2);

在这里插入图片描述

SELECT LTRIM(’ 你们好 2 ') AS ac;'去除左边的空格

	 SELECT LTRIM('   你们好 2   ') AS ac;'

在这里插入图片描述

SELECT LENGTH(‘你们好!’); 返回字符串的长度

	SELECT LENGTH('你们好!');

RIGHT(str,len)

	SELECT RIGHT('123465',4);

在这里插入图片描述

SELECT LOCATE(s_str,p_str); 返回一个串的子串

	SELECT LOCATE('你好','你好!');

SOUNDEX() 返回发音相同的串

  • 常用函数
	SELECT LEFT('0521561',2)
	LEFT(str,len)
	-- 返回从左边数起的len长度字符串
	
	SELECT RIGHT('123465',2);
	RIGHT(str,len)
	-- 返回从右边边数起的len长度字符串


	SELECT LOCATE('0','123456')
	LOCATE(`substr`,str)
	-- 返回substr 在str中的位置
	-- 找出串的一个字串
	-- 若不存在则返回0
	
	SELECT LOWER('ABC')
	LOWER(str)
	-- 转为小写
	
	SELECT UPPER('abc')
	UPPER(str);
	-- 转为大写
	SELECT LTRIM('  123')
	-- 去掉左边的空格
	SELECT RTRIM('123dddd                      ') AS b
	-- 去掉右边的空格
	-- 空格必须为英文空格,也就是半角空格

	SELECT SOUNDEX('mike')
	-- 匹配发音类似的串
	SELECT SUBSTRING('12345678',5,1);
	SUBSTRING(str,pos)
	SUBSTR(str,pos,len)
	SELECT stbstr(,)
-- 返回从pos开始处的字串,len为返回长度,不填则默认返回后面的所有长度


	SELECT REPLACE('丽日','日','月')
	REPLACE(str,from_str,to_Str)
	-- 将str 中的 from 替换成to
	
	SELECT 	REVERSE('张家口');
	-- 逆序
	
	SELECT INSERT(str,pos,len,newstr)
	SELECT INSERT('123456',4,2,'你')
	-- 用newstr替换 pos位置开始的len长度的字符串
	SELECT ABS(-8)  -- 绝对值
	SELECT CEILING(9.4)  -- 向上取整
	SELECT FLOOR(9.4)   -- 向下取整
	SELECT RAND()  -- 返回0`1 之间的一个随机数
	SELECT SIGN(10) --  判断一个数的符号  负数 -1 ,正数1
4.2时间处理函数(重要)

在这里插入图片描述

-- 时间和日期函数(记住)
	SELECT CURRENT_DATE()  -- 获取当前日期
	SELECT CURDATE()
	select current_time() --获取当前时间
	select date() -- 获取日期时间的日期部分
	date_format() -- 返回一个格式化的日期或者十间川
	SELECT NOW()  -- 当前时间localtime
	SELECT LOCALTIME() -- 本地时间
	SELECT SYSDATE() -- 获取系统时间 yyyy-MM-DD hh:mm:ss
	select second() --获得一个时间的秒部分
	SELECT MINUTE(NOW())  -- 获得一个时间分钟部分
	SELECT HOUR(NOW()) -- 获得一个时间小时部分
	select year() -- 获得指定日期的年份
	select time() --获得一个日期时间的时间部分
	SELECT DATEDIFF('2017-02-05','2018-05-06')
	SELECT DATEDIFF(NOW(),'2018-05-05')  
	DATEDIFF(expr1,expr2) expr1-expr2
	DATE_ADD(DATE,INTERVAL expr unit)
	-- expr:指定的是一个间隔值,在起始时间中增加或者减少,注意:expr是一个字符串.对于负值间隔,可以以"-"开头
	-- unit:表示的是一个单位,比如,加上的是1天还是一个小时. 
	SELECT DATE_ADD(NOW(),INTERVAL 5 HOUR)
	SELECT DATE_ADD(NOW(),INTERVAL 5 MINUTE)
	SELECT DATE_ADD(NOW(),INTERVAL 5 YEAR)
	-- date:起始日期或者起始时间
4.3数值处理函数
-- 数学运算

SELECT ABS(-8)  -- 绝对值
SELECT CEILING(9.4)  -- 向上取整
SELECT FLOOR(9.4)   -- 向下取整
SELECT RAND()  -- 返回0`1 之间的一个随机数
SELECT SIGN(10) --  判断一个数的符号  负数 -1 ,正数1
select tan() -- 返回一个角度的正切值
select sqrt() -- 返回一个值的平方根
select mod() -- 返回除操作的余数
select pi() --返回圆周率

五、聚集函数

5.1AVG()函数

计算平均值

 select avg(score) from sc;
5.2count()函数

三种使用方式

1.使用count(*)对表中的行的数目进行计数,不管表列中包含的是空值(null)还是非空值
2.count(column)对特定列中的具有值的行进行计数,忽略null值
3.count(1),同样不会忽略null值

三者之间的区别:
执行效果上: count(星)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL
count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL
count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计。
执行效率上: 列名为主键,count(列名)会比count(1)快 列名不为主键,count(1)会比count(列名)快
如果表多个列并且没有主键,则 count(1) 的执行效率优于 count() 如果有主键,则 select
count(主键)的执行效率是最优的 如果表只有一个字段,则 select count(
)最优。
转载自:https://www.cnblogs.com/zxf330301/p/10217350.html

5.3MAX()函数

  • 返回指定列的最大值,MAX()要求指定列名

  • 对日期使用,返回最大的日期

  • max会忽略null值

  • 可以对非数值类型使用
    在这里插入图片描述

5.4 MIN()函数

  • MIN函数同样忽略为null值的行,同样需要指定列名
  • 可以对非数值类型使用,sname为varcahr类型
    在这里插入图片描述

5.5 SUM()函数

  • 用来返回指定字段的和
  • 可以利用算数操作符对多个列进行运算

5.6聚集不同值

  • 对所有的行进行计算,指定all 或者不给参数(默认为all)
  • 只包含不同的值,指定distinct参数

六、数据分组

6.1group by 语句

在这里插入图片描述

  • with rollup 可以得到每个分组以及每个分组总结别的值。

  • 没用WITH ROLLUP
    在这里插入图片描述

  • 用了之后 可看见后面加了统计值
    在这里插入图片描述

6.2过滤分组 HAVING
  • HAVING和where的区别:where在分组前过滤,having在分组后过滤

  • 过滤num不等于2的记录
    在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值