5-mysql函数
官网:MySQL :: MySQL 5.7 参考手册 :: 12.1 内置函数和运算符参考
5.1,常用函数
数学运算
-- 常用函数
-- 数学运算
select ABS(-8) -- 绝对值 8
select CEILING(9.5) -- 向上取整 10
select FLOOR(9.5) -- 向下取整 9
select RAND() -- 返回0-1之间的随机数 0.36746780515412597
select SIGN(10) -- 负数返回-1 整数返回1 1
字符串函数
-- 字符串函数
select CHAR_LENGTH('哇哈哈哈航昂昂昂昂昂') -- 字符串长度 10
select CONCAT('你','真','帅') -- 拼接字符串
select INSERT('我是赛亚人',1,2,'舒破') -- 替换 舒破赛亚人
select LOWER('ASssbasAA') -- 转小写字母 asssasaa
select UPPER('ASssasAA') -- 转大写字母 ASSSASAA
select INSTR('ASssbasAA','b') -- 返回第一次出现字符串的索引 5
select REPLACE('鸡汤来咯','鸡汤','毒药') -- 替换指定字符串 毒药来咯
select SUBSTR('鸡汤来咯',3,2) -- 截取字符串(原字符串, 截取位置, 截取长度) 来咯
select REVERSE('鸡汤来咯') -- 反转字符 咯来汤鸡
时间与日期函数
-- 时间和日期
select CURRENT_DATE -- 获取当前日期
select CURDATE() -- 获取当前日期
select NOW() -- 获取当前日期 时分秒
select SYSDATE() -- 系统时间 时分秒
select LOCALTIME() -- 本地时间 时分秒
-- 年月日时分秒
select YEAR(NOW());
select MONTH(NOW());
select day(NOW());
select hour(NOW());
select minute(NOW());
select second(NOW());
系统函数
-- 系统
select SYSTEM_USER()
select USER() 获取当前用户
select VERSION()
5.2,聚合函数(常用)
函数名称 | 描述 |
---|---|
count() | 记数 |
sum() | 求和 |
avg() | 平均数 |
max() | 最大值 |
min() | 最小值 |
… |
-- 聚合函数
-- count() 统计表中记录数量
SELECT COUNT(studentname) FROM student; -- count(字段),忽略所有null值
SELECT COUNT(*) FROM student;-- count(*) ,不会忽略null值, 本质计算行数
SELECT COUNT(1) FROM student;-- count(1) ,不会忽略null值, 本质计算行数
SELECT SUM(studentresult) 总和 FROM result;
SELECT AVG(studentresult) 平均分 FROM result;
SELECT MAX(studentresult) 最高分 FROM result;
SELECT MIN(studentresult) 最低分 FROM result;
cout(1)和count(*)的区别
执行结果:
count(*)count(1)都不会去过滤null值,但count(列名)会去过滤null值。
执行效率:
如果表中存在主键,count(主键列名)效率最高
百度知道回答:
count(1),其实就是计算一共有多少符合条件的行。
1并不是表示第一个字段,而是表示一个固定值。
其实就可以想成表中有这么一个字段,这个字段就是固定值1,count(1),就是计算一共有多少个1.。
同理,count(2),也可以,得到的值完全一样,count(‘x’),count(‘y’)都是可以的。一样的理解方式。在你这个语句理都可以使用,返回的值完全是一样的。就是计数。
count(*),执行时会把星号翻译成字段的具体名字,效果也是一样的,不过多了一个翻译的动作,比固定值的方式效率稍微低一些。