MySQL中的常用函数

為{幸葍}努か 提交于 2020-01-19 14:28:21

1.字符串函数

length(a)                 获得字符串a的长度

concat(a,b,c)             将多个值拼接成一个字符串

trim(a)                   去掉字符串a首尾的空格

replace(a,b,c)            将字符串a中出现的b字符串替换成c

subString(str,index,len)  从第index个字符开始截取字符串str,最多取len个

reverse(a)                反转字符串a

locate(a,b)               查询子字符串a在字符串b中出现的位置,从1开始

2.数学函数

abs(a)               取a的绝对值

sqrt(a)              取a的平方根

mod(a,b)             取a%b  计算a整除b之后的余数

ceiling(a);          向上取整,取得大于等于a的最小整数

floor(a);            向下取整,取得小于等于a的最大整数  

round(a,b);          四舍五入对a保留b位小数

truncate(a,b);       对数值a保留b位小数,直接去掉多余的尾数

sign(a)              返回1 0 -1表示a是正数  0 或者负数

power(a,b)           返回a的b次方[次幂]

rand()               返回0~1之间的一个随机数  

floor(rand()*100)    获得0~100之间的随机数


3.日期时间函数

addDate(d,days)                  在当前日期上加days天

addDate(d,interval num unit)     在当前日期上加days天

 unit                            可以是day  month  year week

curdate()                        获得系统当前日期

curtime()                        获得系统当前时间

sysdate()                        获得系统日期时间

now()                            获得系统日期时间

date_add(d,interval num unit)    在当前日期上加上对应的unit

date_sub(d,interval num unit)    在当前日期上减去对应的unit

sundate(d,interval num unit)     在当前日期上减去对应的unit

date_format(now(),'%Y %m %d')    按照指定格式格式化日期时间

date_format(now(),'%Y年%m月%d日 %H:%i:%s')

4.特殊函数

case  when  then  end

如果员工工资超过3000,就输出优秀,如果工资超过2000,就输出合格,其它就输出  贫困

select sal,case when sal>=3000 then '优秀' when sal>=2000 then '合格' else '贫困' end from emp;

select sal,case sal when 3000 then '优秀' else '差一点' end from emp;

if(a,b,c) 如果a为真,就输出b,否则输出c

//如果1<2为真,就输出aa

select if(1<2,'aa','bb');

select if(comm is null,0,comm) from emp;

ifnull(a,b)如果a为null,就输出b

select ifnull(comm,0) from emp;

nullif(a,b) 如果a=b,就输出null,如果a!=b,就输出a


MySQL作业:

1.select * from dept where deptno in(select distinct deptno from emp);


2.先查SMITH的工资

select sal from emp where ename='SMITH';


将上一个语句作为条件查询

select * from emp where sal > (select sal from emp where ename='SMITH');


3.select a.ename,b.ename from (select ename,mgr from emp) a,(select empno,ename from emp) b where a.mgr=b.empno


4.select a.* from (select * from emp) a,(select empno,ename,hiredate from emp) b where a.mgr=b.empno and a.hiredate<b.hiredate;


5.select a.dname,b.* from dept a left join emp b on a.deptno=b.deptno;


6.select  e.ename,d.dname from dept d,emp e where e.job='CLERK' and d.deptno=e.deptno;


7.select job from emp group by job having min(sal)>1500;


8.select ename from emp,dept where emp.deptno=dept.deptno and dept.dname='SALES';


9.select ename from emp where sal > (select avg(sal) from emp);


10.select ename,job from emp where job=(select job from emp where ename='SCOTT') and ename!='SCOTT';


11.select ename,sal from emp where sal in (select sal from emp where deptno=30);


12.select ename,sal from emp where sal > (select max(sal) from emp where deptno=30);


13.查询所有人的服务年限

select hiredate,datediff(sysdate(),hiredate) from emp;

select avg(sal),count(empno),avg(datediff(sysdate(),hiredate)) 平均期限 from emp group by deptno;


14.select e.ename,d.dname,e.sal from emp e join dept d on e.deptno=d.deptno;


15.select count(empno),dept.* from emp right join dept on emp.deptno=dept.deptno group by dept.deptno;

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!