简单查询
查询入职时间在1982-7-9之后,并且不从事SALESMAN工作的员工姓名、入职时间、职位。
select ename,hiredate,job
from emp
where hiredate >'1982-07-09'and job <> 'salesman'
查询员工姓名的第三个字母是a的员工姓名。
SELECT ename
from emp
where ename like '__a%'
查询除了10、20号部门以外的员工姓名、部门编号。
select ename,deptno
from emp
where deptno not in(10,20)
查询部门号为30号员工的信息,先按工资降序排序,再按姓名升序排序。
select *
from emp
where deptno = 30
ORDER BY sal desc,ename asc
查询没有上级的员工(经理号为空)的员工姓名。
select *
from emp
where mgr is null
查询工资大于等于4500并且部门为10或者20的员工的姓名\工资、部门编号。
SELECT ename,sal,deptno
FROM emp
where sal > 4500 and (deptno in (10,20))
多表连接查询
显示员工SMITH的姓名,部门名称,直接上级名称
select e.ename,dname,d.ename
from emp e join emp d
on e.mgr = d.empno
join dept s
on e.deptno = s.deptno
where e.ename = 'smith'
显示员工姓名,部门名称,工资,工资级别,要求工资级别大于4级。
SELECT ename,dname,sal,grade
from emp e join dept d
on e.deptno = d.deptno
join salgrade
on e.sal between losal and hisal
where grade > 4
显示员工KING和FORD管理的员工姓名及其经理姓名。重点是要第三个表
左连接之前的两个表,这样才能显示king
select e.ename,m.ename,d.ename
from emp e join emp m
on e.mgr = m.empno
left join emp d
on m.mgr = d.empno
where m.ename in ('king','ford')
显示员工姓名,参加工作时间,经理名,
参加工作时间,要求参加时间比经理早。
select e.ename,e.hiredate,m.ename
from emp e join emp m
on e.mgr = m.empno
where e.hiredate < m.hiredate