数据库MySQL-----------子查询

来源:互联网 发布:淘宝网修改手机号码 编辑:程序博客网 时间:2024/05/22 02:30

小白笔记,大神勿喷,如果我写的不正确请给出您宝贵的建议,谢谢! 


做一下数据库的笔记

 最近在学数据库相关知识,直接懵逼,先做笔记再说



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);




1 0
原创粉丝点击