一、需求分析

我们的开发团队,计划开发一款公司人事管理软件,用于帮助中小型企业进行更加高效的人事管理。现在需要对数据库部分进行设计和开发,根据对需求和立项的分析,我们确定该数据库中最核心的两个表为员工表(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. 容器之分类与各种测试(四)——multiset

    multiset是可重复关键字的关联式容器,其与序列式容器相比最大的优势在于其查找效率相当高.(牺牲空间换取时间段) 例程 #include<stdexcept> #include< ...

  2. C++最小内积

    Description 向量是几何中的一个重要概念. 考虑两个向量 v1=(x1,x2,...,xn)和v2=(y1,y2,...,yn),向量的内积定义为 x1y1+x2y2+...+xnyn 例如 ...

  3. Java设计模式—Proxy动态代理模式

    代理:设计模式 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问.代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理. 图 1. 代 ...

  4. spring中JDBCTemplate的简单应用

    package cn.itcast.datasource.jdbctemplate;import cn.itcast.utils.JDBCUtils;import org.springframewor ...

  5. 【Python】数据处理分析,一些问题记录

    不用造轮子是真的好用啊 python中单引号双引号的区别 和cpp不一样,cpp单引号表示字符,双引号表示字符串,'c'就直接是ascii值了 Python中单引号和双引号都可以用来表示一个字符串 单 ...

  6. Quartz在.NET中的使用

    一.背景 例如需要在某年某月去将数据库的某个数据更新或者同步,又或者是每隔一段时间来执行一部分代码去调用接口,但是又不想人为的手动去执行 针对此类业务可以使用"定时调用任务",市面 ...

  7. 01 - Vue3 UI Framework - 开始

    写在前面 一年多没写过博客了,工作.生活逐渐磨平了棱角. 写代码容易,写博客难,坚持写高水平的技术博客更难. 技术控决定慢慢拾起这份坚持,用作技术学习的阶段性总结. 返回阅读列表点击 这里 开始 大前 ...

  8. pyecharts简介

    一.概况 Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可. 而 Python 是一门富有表达力的语言,很适合用于数据处理.当数据分析遇上数据可 ...

  9. [BUUCTF]PWN14——not_the_same_3dsctf_2016

    [BUUCTF]PWN14--not_the_same_3dsctf_2016 题目网址:https://buuoj.cn/challenges#not_the_same_3dsctf_2016 步骤 ...

  10. Arduino对智能机器人进行简单编程

    Arduino对智能机器人进行简单编程 #include "ESP8266.h" #define TRIG_PIN 5 #define ECHO_PIN A5 #define BE ...