java day36 mysql(3)

1、msyql练习

1.1 数据库文件下载:

链接:https://pan.baidu.com/s/1bqfkFf0TDSacFRD4SVPjFw
提取码:2ys0

1.2 题目及答案

一、单表查询

1、选择部门30中的雇员

SELECT *from emp where Deptno=30;

2、列出所有办事员的姓名、编号和部门

SELECT e.Ename,e.Empno,d.Dname from emp as e inner join dept as d on e.Deptno=d.Deptno;

3、找出佣金高于薪金的雇员

select *from emp where Comm>Sal;

4、找出佣金高于薪金60%的雇员

select *from emp where Comm>Sal*0.6; 

5、找出部门10中所有经理和部门20中的所有办事员的详细资料

select emp.*, dept.* from emp inner join dept on emp.Deptno=dept.Deptno  
where (emp.Deptno=10 and Job='经理') or (emp.Deptno=20 and Job='办事员');

6、找出既不是经理又不是办事员但其薪金>=2000的所有雇员的详细资料

select emp.*, dept.* from emp inner join dept on emp.Deptno=dept.Deptno  
where (Job!='经理' and Job!='办事员') and Sal>=2000;

7、找出收取佣金的雇员的不同工作

select distinct Job from emp;

8、找出不收取佣金或收取的佣金低于100的雇员

select *from emp where Comm<100;

9、显示正好为6个字符的雇员姓名

select Ename from emp where length(Ename)=6;

10、显示不带有’R’的雇员姓名

select Ename from emp where Ename not like '%R%';

11、显示所有雇员的姓名,用a替换所有’A’

select replace(Ename, 'A', 'a') from emp;

12、显示雇员的详细资料,按姓名排序

select * from emp order by Ename;

13、显示所有雇员的姓名、工作和薪金,按工作的降序顺序排序,而工作相同时按薪金升序

select Ename, Job, Sal from emp order by Job desc, Sal asc;

14、显示在一个月为30天的情况下所有雇员的日薪金

select Ename, (Sal/30) as per_diem  from emp;

15、显示姓名字段的任何位置,包含 “A” 的所有雇员的姓名

select *from emp where Ename like '%A%';

二、多表查询
1、列出至少有一个雇员的所有部门

select distinct Dname from emp,dept where emp.Deptno=dept.Deptno;

2、列出薪金比"jdaran "多的所有雇员

select *from emp where Sal>(select Sal from emp where Ename='jdaran');

3、列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门

select dept.Dname, emp.* from emp right join dept on emp.Deptno=dept.Deptno;

4、列出所有“CLERK”(办事员)的姓名及其部门名称

select dept.Dname, emp.* from emp left join dept on emp.Deptno=dept.Deptno where Job='办事员';

6、列出各种工作类别的最低薪金,显示最低薪金大于1500的记录

select Job,min(Sal) from emp group by Job having (min(Sal)>1500);

7、列出薪金高于公司平均水平的所有雇员

select  * from emp where sal>(select avg(Sal) from emp);

8、列出某些雇员的姓名和薪金,条件是他们的薪金等于部门20中任何一个雇员的薪金

select Ename, Sal from emp where Sal in (select Sal from emp where Deptno=20);

9、列出某些雇员的姓名和薪金,条件是他们的薪金高于部门20中所有雇员的薪金

select Ename, Sal from emp where Sal > (select max(Sal) from emp where Deptno=20);

注意:高于部门20的所有人的薪资,就是高于部门20的最高薪资

10、列出每个部门的信息以及该部门中雇员的数量

select d.Deptno '编号', Dname '部门',count(Ename) as '人数', Loc as '办事处' 
from dept d left join emp e on (d.Deptno=e.Deptno) group by d.Deptno, Dname;  

11、列出所有雇员的雇员名称、部门名称和薪金

select e.Ename,d.Dname,e.Sal from emp e left join dept d on (e.Deptno=d.Deptno);

11、列出各个部门的MANAGER(经理)的最低薪金

select e.Ename,d.Dname,Job,e.Sal from emp e left join dept d on (e.Deptno=d.Deptno) where Job='经理' and Sal=(select min(Sal) from emp where Job='经理
');
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值