MySQL测试题——开发公司人事管理系统,包括 Employee表 和 Department表
一、需求分析
我们的开发团队,计划开发一款公司人事管理软件,用于帮助中小型企业进行更加高效的人事管理。现在需要对数据库部分进行设计和开发,根据对需求和立项的分析,我们确定该数据库中最核心的两个表为员工表(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 |
部门名称 |
二、具体要求
- 使用DDL语言创建数据库(Company),创建数据表Employee和Department;
- 使用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表的更多相关文章
- 基于Struts2开发公司职工管理系统 Java源码
开发环境: Windows操作系统 开发工具: MyEclipse+Jdk+Tomcat+MySql数据库 职工管理系统作为一种管理软件正在各公司中得到越来越广泛的应用,且已达到了良好效果. 运行效果 ...
- Mysql 设计超市经营管理系统,包括员工信息表(employee)和 员工部门表(department)
互联网技术学院周测机试题(二) 一.需求分析 为进一步完善连锁超市经营管理,提高管理效率,减少管理成本,决定开发一套商品管理系统,用于日常的管理.本系统分为商品管理.员工管理.店铺管理,库存管理等功能 ...
- Java Web 开发进阶案例之人事管理系统的完整实现
技术:Java+ jsp + servlet+ javabeans +sql+tomcat 概述 本系统的主要任务是实现人事管理系统的系统化和自动化管理, 主要包括招聘入 职.到期离职和员工调动信 ...
- 「物流跟踪管理系统」 · Java Swing + MySQL JDBC开发,美和易思结业考试机试试题
目录 文档说明: 一.语言和环境 二.技术要求 三.功能要求 四.数据库设计 五.具体要求及推荐实现步骤 六.注意事项 实现代码: 一.数据库 二.Java Swing com.ynavc.Bean ...
- 「会员卡管理系统」 · Java Swing + MySQL JDBC开发
目录 目录 一.语言和环境 二.实现功能 三.数据库设计 四.具体要求及推荐实现步骤 五.注意事项 六.评分标准 >>>实现代码: 数据库 com.ynavc.Bean com.yn ...
- 「超市管理系统——商品管理」 · Java Swing + MySQL JDBC开发
项目下载:https://download.csdn.net/download/weixin_44893902/13715024 1.9元付费赞助下载:https://download.csdn.ne ...
- 第四模块:网络编程进阶&数据库开发 第2章·MySQL数据库开发
01-MySQL开篇 02-MySQL简单介绍 03-不同平台下安装MySQL 04-Windows平台MySQL密码设置与破解 05-Linux平台MySQL密码设置与破解 06-Mac平台MySQ ...
- JAVA课程设计——一个简单的教务人事管理系统
大三上学期期末总结,没错,上学期,写在下学期新学期开始,哈哈哈. 上学期学习了面向对象程序设计,课程设计的题目使用JAVA语言完成一个简单的教务人事管理系统,能够实现访问数据库的登录验证,分别按部门和 ...
- 基于SSM后台管理系统/人事管理系统
今天给大家分享一个基于SpringMVC+Mybatis+Mysql的后台管理系统,顾名思义,一个系统一般分为前台和后台,前台主要面向用户,而后台主要面向的则是管理员,后台和前台有所不同,后台的业务一 ...
随机推荐
- proguard 混淆工具的用法 (适用于初学者参考)
一. ProGuard简介 附:proGuard官网 因为Java代码是非常容易反编码的,况且Android开发的应用程序是用Java代码写的,为了很好的保护Java源代码,我们需要对编译好后的cla ...
- oc中调用c函数 实现将字符串转换成unsigned char
帮助码友解决问题,从而复习了一下oc中调用c函数的方式 1,新建c 头文件 test.h 定义 c 函数 #ifndef test_h #define test_h void verificatio ...
- OpenStack之二: 安装OpenStack的yum源及相关组件
#: 在所有节点执行 [root@localhost ~]# yum install centos-release-openstack-stein -y #: 安装相关组件(只在管理端和计算几点安装) ...
- 莫烦python教程学习笔记——总结篇
一.机器学习算法分类: 监督学习:提供数据和数据分类标签.--分类.回归 非监督学习:只提供数据,不提供标签. 半监督学习 强化学习:尝试各种手段,自己去适应环境和规则.总结经验利用反馈,不断提高算法 ...
- 特定场景下的PLC 远程控制和数据读取
最近有位博友提出了一种应用场景,根据工作中实际遇到的类似的产品应用场景,记录下自己的解决方案. 场景: 需要在云端控制和采集各个站点的PLC数据.各个站点是分散的,每个站点有公网访问能力,但是分散站点 ...
- C# 枚举的flags 标志位应用
枚举有个特性叫标志位,使用方法如下 [Flags] enum Foo { a =1, b = 2, c = 4, d = 8 } 每个值需要为2的n次方,保证多个值的组合不会重复. 这样在判断其中一个 ...
- C#.NET编程小考30题错题纠错
1)以下关于序列化和反序列化的描述错误的是( C). a) 序列化是将对象的状态存储到特定存储介质中的过程 b) 二进制格式化器的Serialize()和Deserialize()方法可以分别用来实现 ...
- Android: Client-Server communication by JSON
Refer to: http://osamashabrez.com/client-server-communication-android-json/ This is a sequel to my l ...
- CF20C Dijkstra? 题解
Content 给定一张 \(n\) 个点 \(m\) 条边的无向图,请判断是否有一条可行的从 \(1\) 到 \(n\) 的路径,有的话输出长度最短的,没有的话输出 -1. 数据范围:\(2\leq ...
- SQL获取当天0点0分0秒和23点59分59秒方法
SELECT CONVERT(DATETIME,CONVERT(VARCHAR(10),GETDATE(),120)) select cast(convert(varchar(10),getdate( ...