mysql 练习总结

(1)创建部门表
dno(部门号),dname(部门名称),dma(部门经理)
create table dept
(dno int primary key,
dname varchar(15),
dma varchar(15));

(2)创建员工表
emo(员工号),ename(员工名字),dno(部门号),eage(员工年龄),sal(员工工资)
create table emp
(eno int primary key,
ename varchar(15),
dno int,
eage datetime ,
sal float not null,
foreign key(dno) references dept(dno) );

(3)创建工资水平表
grade(等级水平),losal(最低水平),hisal(最高水平)
create table salgrade
(grade int not null primary key,
losal float,
hisal float);

1、查询员工表中工资最高的雇员的员工号、员工姓名、工资和部门号

select eno,ename,sal,dno
from emp
where sal=(select max(sal) from emp);

通过SQL提供的聚合函数求出最大值就行。

2、查询每个员工的员工号,姓名及工资所在水平等级

select e.eno,e.ename, s.grade
from emp e,salgrade s
where e.sal BETWEEN s.losal and s.hisal;

通过between…. and 来选取员工工资在该区别的员工信息。

3、查询每个员工和其部门经理的名字
select e.ename,d.dma,e.eno
from emp e,dept d
where e.dno=d.dno;

4、查询工资在等级水平的员工和其部门经理的名字
select e.ename,d.dma,s.grade
from emp e,dept d,salgrade s
where e.sal BETWEEN s.losal and s.hisal AND e.dno = d.dno;

5.平均薪水最高的部门编号
select dno,MAX(t.a)
from (SELECT avg(sal) as a,dno
FROM emp
GROUP BY dno) as t;
先求出所有部门的平均薪水,然后将其作为一张新表,然后通过MAX()函数求出最大值。
6.查询每个部门的薪水等级
select s.grade,t.dno
from
(select sum(e.sal) as b,e.dno
from emp e
group by e.dno) as t,salgrade s
where t.b BETWEEN s.losal and s.hisal;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值