MySQL函数
官网:https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html
1.常用函数
(1)数学运算
-- 绝对值
select abs(-77); -- 77
-- 向上取整
select ceiling(77.77); -- 78
-- 向下取整
select floor(77.77); -- 77
-- 返回一个0-1的随机数
select rand(); -- 每次都不一样
-- 判断一个数的符号,0返回0,正数返回1,负数返回-1
select sign(0);
select sign(7);
select sign(-77);
(2)字符串函数
-- 返回字符串长度,空格(Space)也包括在内。
select char_length('Alita Battle Angle');
-- 合并字符串,注意是否需要空格。
select concat('I',' ','Love',' ','you',' ','my',' ','dear',' ','Alita');
-- 插入,在指定位置开始替换指定字符串
select insert('我爱编程,我爱Java',1,2,'超级无敌');
-- 转换大小写
select lower('EDWIN JARVIS');
select upper('edwin jarvis');
-- 查找首次出现的位置
select instr('Edwin Jarvis','e');
-- 替换出现的指定字符串
select replace('Edwin Jarvis said keep going on and you will succeed.',
'and you will succeed.','and you will make it!');
-- 返回指定的子字符串,格式:(源字符串,起始位置,结束位置);
select substr('Edwin Jarvis said keep going on and you will succeed.',7,17);
-- 翻转字符串
select reverse('Edwin Jarvis said keep going on and you will succeed.');
use school;
-- 混合应用,查询姓“成”的同学,将其姓氏改为“陈”
select replace(name,'成','陈') from student
where name like '成%';
(3)时间和日期函数(重要,记忆)
-- 获取当前日期
select current_date();-- '2020-05-15'
select curdate();
-- 获取当前日期和时间
select now(); -- 2020-05-15 10:46:05
-- 获取本地时间
select localtime(); -- '2020-05-15 10:46:50'
-- 获取系统时间
select sysdate(); -- '2020-05-15 10:47:37'
-- 年月日时分秒
select year(now());-- 2020
select month(now());-- 5
select day(now());-- 15
select hour(now());-- '10'
select minute(now());-- '48'
select second(now());-- '48'
(4)系统函数
select System_user(); -- root@localhost
select user(); -- root@localhost
select version(); -- 5.5.36
2.聚合函数(常用)
函数名称 | 功能描述 |
---|---|
count() | 计数 |
sum() | 求和 |
avg() | 求平均 |
max() | 求最大值 |
min() | 求最小值 |
… | … |
1.count()函数
count():想要查询表中有多少数据时使用的函数。
count(指定列),查询指定列一共有多少条数据,会忽略null值,本质:计算name行数。
-- ================== 聚合函数 ====================
select count(name) from student;
-- count(*),查询本表格一共有多少条数据,不会忽略null值,本质:计算行数。
-- 大数据情况下,不推荐,运行时间可能会很长。
select count(*) from student;
-- count(列序号),不会忽略null值,本质:计算行数。
select count(1) from student;
执行效果上:
count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL
count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL
count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,
而是表示null)的计数,即某个字段值为NULL时,不统计。
执行效率上:
列名为主键,count(列名)会比count(1)快
列名不为主键,count(1)会比count(列名)快
如果表多个列并且没有主键,则 count(1) 的执行效率优于 count( * )
如果有主键,则 select count(主键)的执行效率是最优的
如果表只有一个字段,则 select count(*)最优。
2.求和函数
select sum(`StudentResult`) as 总分 from student;
select avg(`StudentResult`) as 均分 from student;
select max(`StudentResult`) as 最高分 from student;
select min(`StudentResult`) as 最低分 from student;
参考文献
《【狂神说Java】MySQL最新教程通俗易懂》
视频连接:https://www.bilibili.com/video/BV1NJ411J79W
2020.05.24