单表查询练习
-- 1. 查询出部门编号为30的所有员工
mysql> select * from emp where deptno=30;
-- 2. 所有销售员的姓名、编号和部门编号。
mysql> select ename,empno,deptno from emp where job='销售员';
-- 3. 找出奖金高于工资的员工。
mysql> select * from emp where comm>sai;
-- 4. 找出奖金高于工资60%的员工。
mysql> select * from emp where comm>sai*0.6;
-- 5. 找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料。
mysql> select * from emp where (deptno=10 and job='经理') or (deptno=20 and job='销售员');
-- 6. 找出部门编号为10中所有经理,部门编号为20中所有销售员,还有既不是经理又不是销售员但其工资大或等于20000的所有员工详细资料。
mysql> select * from emp where (deptno=10 and job='经理') or (deptno=20 and job='销售员') or (not(job='经理' or job='销售') and sai>=20000);
-- 7. 无奖金或奖金低于1000的员工。
mysql> select * from emp where comm is NULL or comm<1000;
-- 8. 查询名字由三个字组成的员工。
-- 注意:一个汉字占三个字节
mysql> select * from emp where ename like '___';
-- 9.查询2000年入职的员工。
mysql> select * from emp where year(hiredate)=2000;
-- 10. 查询所有员工详细信息,用编号升序排序
mysql> select * from emp order by empno asc;
-- 11. 查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序
mysql> select * from emp order by sai desc,hiredate asc;
-- 12.查询每个部门的平均工资
mysql> select deptno,avg(sai) '部门平均工资' from emp group by deptno;
-- 13.查询每个部门的雇员数量
mysql> select deptno,count(*) '部门雇员数量' from emp group by deptno;
-- 14.查询每种工作的最高工资、最低工资、人数
mysql> select job,max(sai)'最高工资',min(sai)'最低工资',count(*)'人数' from emp group by job;
多表练习
--1、查询每个部门的所属员工
mysql> select * from dept3,emp3
-> where dept3.deptno=emp3.dept_id;
--2、查询研发部门的所属员工
mysql> select * from dept3,emp3
-> where dept3.deptno=emp3.dept_id
-> and dept3.name='研发部';
--3、查询研发部和销售部的所属员工
mysql> select * from dept3,emp3
-> where dept3.deptno=emp3.dept_id
-> and (dept3.name='研发部' or dept3.name='销售部');
--4、查询每个部门的员工数,并升序排序
mysql> select d.name,count(*) '员工数'
-> from dept3 d,emp3 e
-> where d.deptno=e.dept_id
-> group by d.name
-> order by count(*) asc;
--5、查询人数大于等于3的部门,并按照人数降序排序
mysql> select d.name,count(*) '员工数'
-> from dept3 d,emp3 e
-> where d.deptno=e.dept_id
-> group by d.name
-> having count(*)>=3
-> order by count(*) desc;