字符串函数
---数据表当中的某些信息转换为大写 小写select lower('HELLO')
select upper('hello')
---左填充
select lpad('ename',20,'*') from emp;
---右填充
select rpad('ename',20,'$') from emp;
---去掉前后的空格
SELECT trim(' 11 1 ')
---重复字符串
SELECT repeat('aa',8)
---替换字符串
SELECT replace(ename,'o','*') from emp
---字符串截取函数
---从字符串左截取,截取的长度为3
select left('hello word',3);
---从字符串右边截取,截取的长度为3
select right('hello word',3);
---substring(字符串,开始的位置,截取长度) 从0开始
select substring('hello word',4,5)
---字符串拼接
select concat('hello' ,'word','mysql')
---concat_ws(拼接符,字符串1,字符串2)
select concat_ws('-','aa','bb','cc','dd')
---字符串信息
select length('1234567890');
---locate(字符串1,字符串2) 返回字符串1在字符串2中的位置
select locate('4','1234567890')
数字函数
---round(第一个参数:原数值,第二个参数:四舍五入的小数后位置) 第二个参数可有可无
select round(4.33733,2);
SELECT CEIL(4.1); 进位
SELECT floor(4.9); 向下保留整数
---和第一个函数round函数参数用法一致,但是不考虑四舍五入
SELECT TRUNCATE(12.33599,2)
SELECT PI(); 圆周率
SELECT pow(2,3);
SELECT sqrt(64);
---随机数(0-1)
SELECT RAND();
时间函数
---当前日期
SELECT ==NOW()== 2020-08-06 09:37:01
SELECT CURDATE(); 2020-08-06
SELECT CURTIME(); 09:33:55
select ==year(curdate());==
select month(curdate());
select day(curdate());
SELECT hour(NOW());
SELECT minute(NOW());
SELECT SECOND(NOW());
---传回季度
SELECT quarter(NOW());
---==extract()== 可选择任何,等价于上面的那些操作
SELECT extract(year from now());
SELECT extract(quarter from now());
SELECT extract(hour from now());
---[返回1-7、、、星期日、星期一、。。。星期日=1]
SELECT dayofweek(NOW());
--- [==返回今天是今年的第几天==]
SELECT dayofyear(NOW());
---**==计算时间差==
SELECT ==datediff('2021-1-1',NOW());==
---==不常用==
---**之后时间
---日期,天数 算多少天数的日期
SELECT adddate(NOW(),30); 30天之后为2020-09-05 09:53:04
SELECT adddate(NOW(),interval 5 year); 2025-08-06 09:54:30
---之前的时间
---获取5天之前的时间
SELECT subdate(NOW(),5); 5小时之前为2020-08-01 19:25:46
SELECT subdate(now(),interval 5 hour);
流程控制函数
—流程控制函数,简单的说和三目运算符类似,第一个参数:判断条件,第二个参数:成立执行,第三个参数:不成立的时候执行
select if(5>4,'aaa','bbb');
use pythonbs
select ename,if(sex='女','小姐姐','小哥哥') 称呼 from emp
多条件选择
CASE when 条件 THEN 运算式
when 条件 then 运算式
ELSE 运算式
end 名称
---语句[sal>=6000,sal>=4000,]
SELECT ename,sal ,
case when sal>=6000 then '白领'
when sal >=4000 then '蓝领'
else '其他'
end 等级
from emp
聚合函数
---求和
SELECT sum(sal) from emp;
---最大值
SELECT max(sal) from emp;
---最小值
SELECT min(sal) from emp;
---平均值
SELECT avg(sal) from emp;
---出现的次数
SELECT count(ename) from emp;
高级查询
group by…HAVING…
—1.查询每个部门的平均工资 【思路:按照部门分类,平均数聚合函数实现求每一个部门的平均工资】
—group by 查询列表只能出现分组关键字和聚合函数
select avg(sel) from emp group by deptno
—2.查找每个部门女生的的平均工资
—【先查找女生 然后按照部门分类】
select deptno 部门,avg(sal) 平均薪资 from emp where sex='女' group by deptno
—3.查询平均工资高于4000的
—注意:having 必须在group by 之后出现,判断条件仅仅可以为:完成分组后可用的条件
select deptno,avg(sal) from emp
group by deptno
HAVING avg(sal)>4000;