以下是在mysql 环境下进行操作:
drop database if exists HRS;
create database HRS default charset utf8;
use HRS;
drop table if exists TbEmp;
drop table if exists TbDept;
create table TbDept
(
dno int, -- 部门编号
dname varchar(10) not null, -- 部门名称
dloc varchar(20) not null, -- 部门所在地
primary key (dno)
);
insert into TbDept values
(10, '会计部', '北京'),
(20, '研发部', '成都'),
(30, '销售部', '重庆'),
(40, '运维部', '深圳');
create table TbEmp
(
empno int primary key, -- 员工编号
ename varchar(20) not null, -- 员工姓名
job varchar(20) not null, -- 员工职位
mgr int, -- 主管编号
sal int not null, -- 员工月薪
comm int, -- 每月补贴
dno int not null -- 部门编号
);
alter table TbEmp add constraint fk_emp_dno foreign key (dno) references TbDept(dno);
insert low_priority into TbEmp values
(7800, '张三丰', '总裁', null, 9000, 1200, 20),
(2056, '乔峰', '分析师', 7800, 5000, 1500, 20),
(3088, '李莫愁', '设计师', 2056, 3500, 800, 20),
(3211, '张无忌', '程序员', 2056, 3200, null, 20),
(3233, '丘处机', '程序员', 2056, 3400, null, 20),
(3251, '张翠山', '程序员', 2056, 4000, null, 20),
(5566, '宋远桥', '会计师', 7800, 4000, 1000, 10),
(5234, '郭靖', '出纳', 5566, 2000, null, 10),
(3344, '黄蓉', '销售主管', 7800, 3000, 800, 30),
(1359, '胡一刀', '销售员', 3344, 1800, 200, 30),
(4466, '苗人凤', '销售员', 3344, 2500, null, 30),
(3244, '欧阳锋', '程序员', 3088, 3200, null, 20),
(3577, '杨过', '会计', 5566, 2200, null, 10),
(3588, '朱九真', '会计', 5566, 2500, null, 10);
select ename,sal from tbemp where sal=(
select max(sal) from tbemp
);
select concat(job,':',ename) as title,(sal+ifnull(comm,0))*13 as salary from tbemp
order by salary desc;
select dno as '部门编号',count(dno) as '人数' from tbemp
group by dno;
select dname 部门名称,ifnull(total,0) 总人数 from
(select dno,count(dno) as total from tbemp
group by dno) t1 right outer join tbdept t2
on t1.dno=t2.dno;
select ename,sal from tbemp
where sal=(
select max(sal) from tbemp where mgr is not null
);
select ename,sal from tbemp
where sal>(select avg(sal) from tbemp);
select ename,sal ,avgSal from tbemp t1
inner join
(select avg(sal) as avgSal from tbemp)t2
on sal > avgSal;
select ename,sal ,sal - avgSal from tbemp t1
inner join
(select avg(sal) as avgSal from tbemp)t2
on sal > avgSal;
select ename,t1.dno,sal from tbemp t1 inner join
(select dno, avg(sal) as avgSal from tbemp group by dno) t2
on t1.dno=t2.dno and sal>avgSal;
select ename,dname,t1.dno,sal from tbemp t1 inner join
(select dno, avg(sal) as avgSal from tbemp group by dno) t2
on t1.dno=t2.dno and sal>avgSal inner join tbdept t3
on t1.dno=t3.dno;
select
-- 查询主管的姓名和职位
select ename,job from tbemp
where empno in (select distinct mgr from tbemp where mgr is not null);
select ename,sal from tbemp
order by sal desc
limit 3;
select ename,sal from tbemp
order by sal desc
limit 3,3;