1.查找Tomy所在部门名称
多表连接:select name,deptname from emp inner join dept on emp.deptno=dept.deptno where name='tomy';
子查询:select deptname from dept where deptno=(select deptno from emp where name='tomy');
这两种语句都可以得到以下的结果
根据上一篇博客,可以清楚的理解第一种方法,而第二种则是子查询的方法,这个方法的括号中是一个select语句,说明括号中的语句有一个返回值,这个返回值和where部分组成了一个查询条件,就得到了以上的结果
2.查找拥有工资3000元及以上员工的部门名称
select deptname from dept where deptno in(select distinct deptno from emp where salary>=3000);
要理解这个语句需要明白括号里语句的返回值是什么,括号里的返回值是emp表中工资大于等于3000人所在的部门编号,distinct这是个关键字,作用是去重,去掉重复的数据;
3.查找1号部门工资最高的人
select name from emp where deptno=1 and salary =(select max(salary) from emp where deptno=1);
max(参数);这是一个聚合函数,系统提供的函数,括号中的语句的意思是:找出表emp中deptno=1的数据中工资最高的数据,返回值是工资,然后作为条件进行查询
4.查找每个部门工资最高的人
select name,salary from emp e1 where salary=(select max(salary) from emp e2 where e1.deptno=e2.deptno);