一、需求分析

我们的开发团队,计划开发一款公司人事管理软件,用于帮助中小型企业进行更加高效的人事管理。现在需要对数据库部分进行设计和开发,根据对需求和立项的分析,我们确定该数据库中最核心的两个表为员工表(Employee)和部门表(Department)。两个表的结构如下:

Employee表:

字段名

数据类型

约束

说明

employeeId

int

非空,主键,自增

员工编号

name

varchar

非空

姓名

birth

date

出生日期

joblevel

varchar

长度10

职位级别

salary

decimal

长度10,2位小数

薪资

phone

varchar

长度11

电话

departmentId

int

外键,非空,引用Department表的主键

所属部门

Department表:

字段名

数据类型

约束

说明

departmentId

int

非空,主键,自增

部门编号

name

varchar

长度20

部门名称

二、具体要求

  1. 使用DDL语言创建数据库(Company),创建数据表Employee和Department;
  2. 使用DML语言插入测试数据,具体数据如下(请按照测试数据插入):

Department:

employeeId

name

birth

joblevel

salary

phone

departmentId

1001

张强

1986-2-3

一级

8000

13585422655

1

1003

萌萌

1990-4-19

二级

6000

18548775264

2

1004

李小峰

1973-7-20

二级

5700

18625489512

1

1006

刘珊

1976-6-28

一级

7500

18524811174

2

1007

李梅

1980-1-29

二级

5500

13958621455

3

1008

张宝玉

1982-9-23

二级

5600

13715620210

1

1009

陈大壮

1978-5-21

一级

7700

15848562585

4

1010

张天琪

1980-9-15

二级

5000

13965815822

4

Emploment:

departmentId

name

1

商务部

2

行政部

3

财务部

4

研发部

3、考试结束时,分离出数据脚本文件和查询脚本文件,一并上交;

三、功能实现

创建数据库:

CREATE DATABASE Company;

创建Employee表:

CREATE TABLE employee (
employeeId INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
birth DATE,
joblevel VARCHAR(10),
salary DECIMAL(10,2),
phone VARCHAR(11),
departmentId INT NOT NULL
);

创建Department表:

CREATE TABLE Department (
departmentId INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20)
);

设置外键:

ALTER TABLE Employee
ADD CONSTRAINT fk_departmentId
FOREIGN KEY (departmentId)
REFERENCES department(departmentId)

插入数据:

-- ----------------------------
-- Records of department
-- ----------------------------
INSERT INTO department VALUES ('1', '商务部');
INSERT INTO department VALUES ('2', '行政部');
INSERT INTO department VALUES ('3', '财务部');
INSERT INTO department VALUES ('4', '研发部');
-- ----------------------------
-- Records of employee
-- ----------------------------
INSERT INTO employee VALUES ('1001', '张强', '1986-02-03', '一级', '8000.00', '13585422655', '1');
INSERT INTO employee VALUES ('1003', '萌萌', '1990-04-19', '二级', '6000.00', '18548775264', '2');
INSERT INTO employee VALUES ('1004', '李小峰', '1973-07-20', '二级', '5700.00', '18625489512', '1');
INSERT INTO employee VALUES ('1006', '刘珊', '1976-06-28', '一级', '7500.00', '18524811174', '2');
INSERT INTO employee VALUES ('1007', '李梅', '1980-01-29', '二级', '5500.00', '13958621455', '3');
INSERT INTO employee VALUES ('1008', '张宝玉', '1982-09-23', '二级', '5600.00', '13715620210', '1');
INSERT INTO employee VALUES ('1009', '陈大壮', '1978-05-21', '一级', '7700.00', '15848562585', '4');
INSERT INTO employee VALUES ('1010', '张天琪', '1980-09-15', '二级', '5000.00', '13965815822', '4');

题目:

1、通过层层面试筛选,你正式成为该公司研发部的一名二级员工,请以自己的信息,插入一条数据到员工表;(5)

INSERT INTO employee VALUES (NULL, '杨明金', '2005-06-01', '二级', '4500.00', '18877778888', '4');

2、统计研发部的员工信息,并按照薪资升序排列;(5)

SELECT * FROM employee e,department d
WHERE e.departmentid=d.departmentid
AND d.name='研发部'
ORDER BY salary

3、给二级员工中,薪资低于5500的,增加薪资500元,并将数据更新到数据库;(10)

UPDATE employee SET salary=salary+500
WHERE joblevel='二级' AND salary<5500

4、查询统计每个部门的员工平均薪资,并显示部门名称和平均薪资;(10)

SELECT d.name 部门名称,ROUND(AVG(salary),2) 平均薪资 FROM employee e,department d
WHERE e.departmentid=d.departmentid
GROUP BY d.name

5、“陈大壮”由于个人原因,从公司离职了,故需从数据库中,删除他的个人信息,请使用DML语言实现该需求;(10)

DELETE FROM employee WHERE name='陈大壮'

6、李梅昨天去换手机卡了,新的号码是15677289289,在系统中,需要对她的电话进行更新。(10)

UPDATE employee SET phone='15677289289' WHERE name='李梅'

7、查询公司中年龄大于35岁姓张的员工信息;(10)

SELECT * FROM employee
WHERE FLOOR(DATEDIFF(CURDATE(),birth)/365)>35
AND name like '张%'

8、计算年龄最大的员工和年龄最小的员工相差的岁数;(10)

SELECT DATEDIFF(MAX(birth),MIN(birth))/365 FROM employee

9、查看最大年龄和最小年龄:

SELECT MAX(DATEDIFF(CURDATE(),birth)/365) 最大年龄,MIN(DATEDIFF(CURDATE(),birth)/365) 最小年龄 FROM employee;

提示:

内置函数curdate()显示当前日期

内置函数datediff(date1,date2)用于计算日期date1和date2之间相隔的天数

MySQL测试题——开发公司人事管理系统,包括 Employee表 和 Department表的更多相关文章

  1. 基于Struts2开发公司职工管理系统 Java源码

    开发环境: Windows操作系统 开发工具: MyEclipse+Jdk+Tomcat+MySql数据库 职工管理系统作为一种管理软件正在各公司中得到越来越广泛的应用,且已达到了良好效果. 运行效果 ...

  2. Mysql 设计超市经营管理系统,包括员工信息表(employee)和 员工部门表(department)

    互联网技术学院周测机试题(二) 一.需求分析 为进一步完善连锁超市经营管理,提高管理效率,减少管理成本,决定开发一套商品管理系统,用于日常的管理.本系统分为商品管理.员工管理.店铺管理,库存管理等功能 ...

  3. Java Web 开发进阶案例之人事管理系统的完整实现

    技术:Java+ jsp + servlet+ javabeans +sql+tomcat   概述 本系统的主要任务是实现人事管理系统的系统化和自动化管理, 主要包括招聘入 职.到期离职和员工调动信 ...

  4. 「物流跟踪管理系统」 · Java Swing + MySQL JDBC开发,美和易思结业考试机试试题

    目录 文档说明: 一.语言和环境 二.技术要求 三.功能要求 四.数据库设计 五.具体要求及推荐实现步骤 六.注意事项 实现代码: 一.数据库 二.Java Swing com.ynavc.Bean ...

  5. 「会员卡管理系统」 · Java Swing + MySQL JDBC开发

    目录 目录 一.语言和环境 二.实现功能 三.数据库设计 四.具体要求及推荐实现步骤 五.注意事项 六.评分标准 >>>实现代码: 数据库 com.ynavc.Bean com.yn ...

  6. 「超市管理系统——商品管理」 · Java Swing + MySQL JDBC开发

    项目下载:https://download.csdn.net/download/weixin_44893902/13715024 1.9元付费赞助下载:https://download.csdn.ne ...

  7. 第四模块:网络编程进阶&数据库开发 第2章·MySQL数据库开发

    01-MySQL开篇 02-MySQL简单介绍 03-不同平台下安装MySQL 04-Windows平台MySQL密码设置与破解 05-Linux平台MySQL密码设置与破解 06-Mac平台MySQ ...

  8. JAVA课程设计——一个简单的教务人事管理系统

    大三上学期期末总结,没错,上学期,写在下学期新学期开始,哈哈哈. 上学期学习了面向对象程序设计,课程设计的题目使用JAVA语言完成一个简单的教务人事管理系统,能够实现访问数据库的登录验证,分别按部门和 ...

  9. 基于SSM后台管理系统/人事管理系统

    今天给大家分享一个基于SpringMVC+Mybatis+Mysql的后台管理系统,顾名思义,一个系统一般分为前台和后台,前台主要面向用户,而后台主要面向的则是管理员,后台和前台有所不同,后台的业务一 ...

随机推荐

  1. 修改 Gradle 插件(Plugins)的下载地址(repositories)

    Gradle 也可以用下面的方式声明使用的插件: 1234 // build.gradleplugins { id 'com.example.plugin', version '1.0'} 其实是从 ...

  2. HashMap 和 HashSet

    对于HashSet而言,系统采用Hash算法决定集合元素的存储位置,这样可以保证快速存取集合元素: 对于HashMap,系统将value当成key的附属,系统根据Hash算法来决定key的存储位置,这 ...

  3. VueAPI 2 (生命周期钩子函数)

    所有的生命周期钩子自动绑定 this 上下文到实例中,因此你可以访问数据,对属性和方法进行运算.这意味着你不能使用箭头函数来定义一个生命周期方法. beforeCreate 在实例初始化之后,此时还不 ...

  4. 『学了就忘』Linux启动引导与修复 — 72、Linux系统的修复模式(单用户模式)

    目录 1.单用户模式常见的错误修复 2.通过单用户模式修改系统密码 (1)进入grub启动引导程序中 (2)编辑相应的系统启动内容 (3)编辑grub配置文件内容 (4)启动系统 (5)修改root用 ...

  5. 捷码:重塑DevOps,打造更流畅紧密的开发与服务交付业务链

    捷码Gemcoder 1周前如果有机会安排一场行业吐槽大会,熟悉软件开发.交付.服务业务各环节的业内人士,对开发中的各种扯皮.交付反反复复.运维服务中的提心吊胆,往往会有很多深刻的体验和刻骨铭心的案例 ...

  6. 学习整理--flex布局(1)

    父元素容器属性 flex-direction: row(默认).row-reverse.column.column-reverse row: 横向正序排列子元素 colimn: 竖向正序排列子元素 r ...

  7. BUU PWN hitcontraining_bamboobox

    本来想学习house of force,结果没用就直接做出来了...我用了三种方法来做这道题. 1.fastbins attack 2.unlink 3.house of force 可以改写got表 ...

  8. CF656C Without Text 题解

    Content 输入一个字符串 \(s\),遍历每一个字符,如果这个字符是小写字母,那么答案就加上这个字母的字母表序:否则,如果这个字符是小写字母,那么答案就减去这个字母的字母表序.求最后的答案. 字 ...

  9. CF979A Pizza, Pizza, Pizza!!! 题解

    Content 小 S 想把一块披萨切成大小.形状都相同的 \((n+1)\) 块(\(n\) 块分给 TA 的 \(n\) 个朋友,还有一块留给自己),试问最小需要切多少块. 数据范围:\(0\le ...

  10. CF1579A Casimir's String Solitaire 题解

    Content 给定一个仅包含 A.B.C 三种字符的字符串 \(s\),有如下两种操作: 删除字符串中的恰好一个 A 和恰好一个 B. 删除字符串中的恰好一个 B 和恰好一个 C. 求是否能够把字符 ...