根据需求完善 sql 语句
掌握 SQL 语句的 CRUD
雇员表(employee):雇员编号(empid,主键),姓名(name),性别(sex),职称(title),出生日期(birthday),所属部门(depid)
部门表(department):部门编号(depid,主键),部门名称(depname)
工资表(salary):雇员编号(empid),基本工资(basesalary),职务工资(titlesalary),扣除(deduction)
1.修改表结构,在部门表中添加部门简介字段
2.将李四的职称改为“工程师”,并将她的基本工资改成 2000,职务工资为 700
3.删除人事部门的部门记录
4.查询出每个雇员的雇员编号,实发工资,应发工资
5.查询姓张且年龄小于 40 的员工记录
6.查询雇员的雇员编号,姓名,职称,部门名称,实发工资
7.查询销售部门的雇员姓名,工资
8.统计各职称的人数
9.统计各部门的部门名称,实发工资总和,平均工资
10.查询比销售部门所有员工基本工资都高的雇员姓名
了解数据表以及各列的含义
分析需求,梳理数据表新职课教研教学中心
根据语法,结合需求操作数据库
MySql 数据表的创建
MySql CRUD 操作
/** * @Author:cheng * @Date:2021-8-8 */ -- 创建名为kkb01的库 create database if not exists kkb01; /* 雇员表(employee):雇员编号(empid,主键),姓名(name),性别(sex),职称(title),出生日期(birthday),所属部门(depid) */ create table employee( empid int not null primary key , name varchar(20), sex enum('男', '女'), title varchar(20), birthday date, depid varchar(20) ); /* 部门(department):部门编号(depid,主键),部门名称(depname) */ create table department( depid int not null primary key , depname varchar(20) ); /* 工资表(salary):雇员编号(empid),基本工资(basesalary),职务工资(titlesalary),扣除(deduction) */ create table salary( empid int not null , basesalary int, titlesalary int, deduction int ); -- 各需求解决如下 -- 1. 修改表结构,在部门表中添加部门简介字段 alter table department ADD deprofile varchar(20); -- 2. 将李四的职称改为“工程师”,并将她的基本工资改成 2000,职务工资为 700 select * from employee e , salary s where name = '李四' and e.empid = s.empid; update employee e set e.title = '工程师' where e.name = '李四'; update salary s set s.basesalary = 2000, s.titlesalary = 700 where s.empid = (select a.empid from(select e.empid from employee e where e.name = '李四') as a); -- 3. 删除人事部门的部门记录 delete from department where depname = '人事部'; -- 4. 查询出每个雇员的雇员编号,实发工资,应发工资 select s.empid as '编号', (s.basesalary + s.titlesalary - s.deduction) as '实发工资', (s.basesalary + s.titlesalary) as '应发工资' from salary as s; -- 5. 查询姓张且年龄小于 40 的员工记录 select e.* from employee e where e.name like '张%' and TIMESTAMPDIFF( YEAR, e.birthday, CURDATE()) < 40; -- 6. 查询雇员的雇员编号,姓名,职称,部门名称,实发工资 select e.empid, e.name, e.title, d.depname, (s.basesalary + s.titlesalary - s.deduction) as '实发工资' from employee e left join department d on e.depid = d.depid left join salary s on e.empid = s.empid; -- 7. 查询销售部门的雇员姓名,工资 select e.name, s.basesalary from employee e, salary s, department d where d.depname = '销售部' and e.depid = d.depid and e.empid = s.empid; -- 8. 统计各职称的人数 select e.title, COUNT(*) from employee e group by e.title; -- 9. 统计各部门的部门名称,实发工资总和,平均工资 select d.depname, SUM(s.basesalary + s.titlesalary - s.deduction) as '实发工资总和', AVG(s.basesalary + s.titlesalary - s.deduction) as '平均工资' from department d, employee e, salary s where e.depid = d.depid and e.empid = s.empid group by d.depname; -- 10. 查询比销售部门所有员工基本工资都高的雇员姓名 select e.name from employee e where e.empid = (select s.empid from salary s where s.basesalary > (select MAX(s.basesalary) from employee e, salary s where e.empid = s.empid and e.depid = (select d.depid from department d where d.depname = '销售部')));