mysql 练习总结

来源:互联网 发布:怎样撤回淘宝手机充值 编辑:程序博客网 时间:2024/06/05 08:59

(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,dnofrom empwhere sal=(select max(sal) from emp);

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

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

select e.eno,e.ename, s.gradefrom emp e,salgrade swhere 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