一. 这是索要查询三张表信息
dept
emp
salgrade
二.单表查询
1.查找部门30中员工的详细信息。
SELECT * FROM emp e WHERE e.deptno = 30;
结果:
2.找出从事clerk工作的员工的编号、姓名、部门号。
SELECT e.`EMPNO`,e.`ENAME`,e.`DEPTNO`,e.`JOB` FROM emp e WHERE e.job = 'clerk';
结果:
3.检索出奖金多于基本工资的员工信息。
SELECT * FROM emp e WHERE e.comm > e.`SAL`;
结果:
4.检索出奖金多于基本工资60%的员工信息。
SELECT * FROM emp e WHERE e.comm > e.`SAL`*0.6;
结果:
5.找出10部门的经理、20部门的职员 的员工信息。
SELECT * FROM emp e WHERE e.job = 'manager' AND e.`DEPTNO`=10 OR e.job = 'clerk' AND e.`DEPTNO`=20;
结果:
6.找出10部门的经理、20部门的职员 或者既不是经理也不是职员但是工资高于2000元的员工信息。
SELECT * FROM emp e WHERE e.job = 'manager' AND e.`DEPTNO`=10 OR
e.job = 'clerk' AND e.`DEPTNO`=20
OR e.`JOB`!='manager'AND e.`JOB`!='clerk' AND e.`SAL` > 2000;
7.找出获得奖金的员工的工作。
SELECT
e.job,e.comm
FROM
emp e WHERE comm>= 0;
8.找出奖金少于100或者没有获得奖金的员工的信息。
SELECT
*
FROM
emp e WHERE e.`COMM`< 100
OR e.`COMM` IS NULL ;
9.找出姓名以A、B、S开始的员工信息。
SELECT
*
FROM
emp e
WHERE e.`ENAME` LIKE 'A%' OR e.`ENAME` LIKE 'B%'
OR e.`ENAME` LIKE 'S%';
10.找到名字长度为6个字符的员工信息。
SELECT
*
FROM
emp e
WHERE LENGTH(e.`ENAME`)=6;
11.名字中不包含R字符的员工信息。
SELECT
*
FROM
emp e
WHERE e.`ENAME` NOT LIKE '%R%';
12.返回员工的详细信息并按姓名排序。
SELECT
*
FROM
emp e
ORDER BY e.`ENAME` ASC;
13.返回员工的信息并按工作降序工资升序排列。
SELECT
*
FROM
emp e
ORDER BY e.`JOB` DESC,e.`SAL` ASC;
14.计算员工的日薪(按30天)。
SELECT TRUNCATE(e.sal/30,2) FROM emp e;
扩展:参考《MySQL_5.1_zh》-- 第12章:函数和操作符
15.找出姓名中包含A的员工信息。
select * from emp e where e.ename like '%A%';
三.多表操作
1.返回拥有员工的信息以及员工的部门名、部门号。
select e.*,d.dname from emp e,dept d where e.deptno = d.deptno
2.工资水平多于smith的员工信息
select * from emp e where e.sal >(select e.sal from emp e where e.ename ='smith')
3.返回员工和所属经理的姓名。
select e.ename,m.ename from emp e,emp m where e.mgr =m.empno
select e.ename,m.ename from emp e left join emp m on e.mgr =m.empno
or
(没有经理是否显示)
4.返回雇员的雇佣日期早于其经理雇佣日期的员工及其经理姓名
select e.ename '员工姓名',m.ename '经理姓名',e.hiredate '员工入职日期',m.hiredate '经理入职日期' from emp e,emp m where e.mgr =m.empno and e.hiredate < m.hiredate
5.返回员工姓名及其所在的部门名称。
select e.ename,d.dname from emp e,dept d where e.deptno =d.deptno
6.返回从事clerk工作的员工姓名和所在部门名称。
select e.ename,d.dname,e.job from emp e,dept d where e.deptno =d.deptno and e.job ='clerk'
7.返回部门号及其本部门的最低工资。
select MIN(e.sal),e.deptno from emp e group by e.deptno
8.返回销售部(sales)所有员工的姓名。
select e.ename from emp e where e.deptno =(select d.deptno from dept d where d.dname ='sales')
9.返回工资水平多于平均工资的员工。
select * from emp e where e.sal >(select AVG(e.sal) from emp e)
10.返回与30部门员工工资水平相同的员工姓名与工资。
select e.ename,e.sal from emp e where e.sal in(select e.sal from emp e where e.deptno =30);
11.返回工资高于30部门所有员工工资水平的员工信息。
select * from emp e where e.sal >(select MAX(e.sal) from emp e where e.deptno =30);
12.返回部门号、部门名、部门所在位置及其每个部门的员工总数。
select e.deptno,d.dname,d.loc,COUNT(*) from emp e,dept d where e.deptno = d.deptno group by e.deptno
13.返回员工的姓名、所在部门名及其工资。
select e.ename,d.dname,e.sal from emp e,dept d where e.deptno =d.deptno
14.返回员工的详细信息。(包括部门名)
select e.*,d.dname from emp e,dept d where e.deptno =d.deptno
15.返回员工工作及其从事此工作的最低工资。
select MIN(e.sal),e.job from emp e group by e.job
16.计算出员工的年薪,并且以年薪排序。
select e.sal*12,e.ename from emp e order by e.sal*12 desc