Mysql基本语句(二)
一、这里有三张表,分别是公司员工信息表emp、部门信息表dept、薪资等级表salgrade
emp表:
dept表:
salgrade表:
二、基于这三张表上的多表查询
1、
select * from emp where( sal>500 or job='MANNGER')and ename like 'J%';
2、
select * from emp order by deptno ,sal desc;
3、
注意这里的年薪等于12个月工资加上年终奖
select ename,sal*12+ifnull(comm,0) 年薪 from emp order by sal desc;
4、
select ename,job from emp where sal=(select max(sal)from emp);
5、
select *from emp where sal>(select avg(sal) from emp);
6、
select deptno,format(avg(sal),2) as 平均工资,max(sal) as 最高工资 from emp group by deptno;
注意这里的format用来保留小数点后两位,group by为分组查询
7、
select deptno,avg(sal) as 平均工资 from emp group by deptno having 平均工资<2000;
注意这里having的用法,通常跟group by一起使用,用来对查询后的结果进行筛选
8、
select job,count(*) 雇员总数,format(avg(sal),2) 平均工资 from emp group by job;
9、
注意这里需要用到部门信息表dept和员工信息表emp,需要两张表进行笛卡尔积
select emp.deptno,dname,ename,sal from emp,dept where emp.deptno=dept.deptno and emp.deptno=10;
10、
注意这里需要用到员工表emp和工资级别表salgrade,需要将两个表进行笛卡尔积
select ename,sal,grade from emp,salgrade where sal between losal and hisal;
11、
注意这里要先找出FORD的上级领导,括号里的为子查询
12、
注意这里要先找出SMITH的部门,再找出在这个部门的员工
select * from emp where deptno=(select deptno from emp where ename='SMITH');
13、
select ename,job,sal,deptno from emp where job in(select job from emp where deptno =10) and deptno!=10;