MySQL测试题——开发公司人事管理系统,包括 Employee表 和 Department表
一、需求分析
我們的開發(fā)團(tuán)隊,計劃開發(fā)一款公司人事管理軟件,用于幫助中小型企業(yè)進(jìn)行更加高效的人事管理。現(xiàn)在需要對數(shù)據(jù)庫部分進(jìn)行設(shè)計和開發(fā),根據(jù)對需求和立項的分析,我們確定該數(shù)據(jù)庫中最核心的兩個表為員工表(Employee)和部門表(Department)。兩個表的結(jié)構(gòu)如下:
Employee表:
| 字段名 | 數(shù)據(jù)類型 | 約束 | 說明 |
| employeeId | int | 非空,主鍵,自增 | 員工編號 |
| name | varchar | 非空 | 姓名 |
| birth | date | ? | 出生日期 |
| joblevel | varchar | 長度10 | 職位級別 |
| salary | decimal | 長度10,2位小數(shù) | 薪資 |
| phone | varchar | 長度11 | 電話 |
| departmentId | int | 外鍵,非空,引用Department表的主鍵 | 所屬部門 |
Department表:
| 字段名 | 數(shù)據(jù)類型 | 約束 | 說明 |
| departmentId | int | 非空,主鍵,自增 | 部門編號 |
| name | varchar | 長度20 | 部門名稱 |
二、具體要求
Department:
| employeeId | name | birth | joblevel | salary | phone | departmentId |
| 1001 | 張強(qiáng) | 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 | 張?zhí)扃?/span> | 1980-9-15 | 二級 | 5000 | 13965815822 | 4 |
Emploment:
| departmentId | name |
| 1 | 商務(wù)部 |
| 2 | 行政部 |
| 3 | 財務(wù)部 |
| 4 | 研發(fā)部 |
3、考試結(jié)束時,分離出數(shù)據(jù)腳本文件和查詢腳本文件,一并上交;
三、功能實現(xiàn)
創(chuàng)建數(shù)據(jù)庫:
CREATE DATABASE Company;創(chuàng)建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 );創(chuàng)建Department表:
CREATE TABLE Department (departmentId INT NOT NULL PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20) );設(shè)置外鍵:
ALTER TABLE Employee ADD CONSTRAINT fk_departmentId FOREIGN KEY (departmentId) REFERENCES department(departmentId)插入數(shù)據(jù):
-- ---------------------------- -- Records of department -- ---------------------------- INSERT INTO department VALUES ('1', '商務(wù)部'); INSERT INTO department VALUES ('2', '行政部'); INSERT INTO department VALUES ('3', '財務(wù)部'); INSERT INTO department VALUES ('4', '研發(fā)部'); -- ---------------------------- -- Records of employee -- ---------------------------- INSERT INTO employee VALUES ('1001', '張強(qiáng)', '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', '張?zhí)扃?#39;, '1980-09-15', '二級', '5000.00', '13965815822', '4');題目:
1、通過層層面試篩選,你正式成為該公司研發(fā)部的一名二級員工,請以自己的信息,插入一條數(shù)據(jù)到員工表;(5)
INSERT INTO employee VALUES (NULL, '楊明金', '2005-06-01', '二級', '4500.00', '18877778888', '4');2、統(tǒng)計研發(fā)部的員工信息,并按照薪資升序排列;(5)
SELECT * FROM employee e,department d WHERE e.departmentid=d.departmentid AND d.name='研發(fā)部' ORDER BY salary3、給二級員工中,薪資低于5500的,增加薪資500元,并將數(shù)據(jù)更新到數(shù)據(jù)庫;(10)
UPDATE employee SET salary=salary+500 WHERE joblevel='二級' AND salary<55004、查詢統(tǒng)計每個部門的員工平均薪資,并顯示部門名稱和平均薪資;(10)
SELECT d.name 部門名稱,ROUND(AVG(salary),2) 平均薪資 FROM employee e,department d WHERE e.departmentid=d.departmentid GROUP BY d.name5、“陳大壯”由于個人原因,從公司離職了,故需從數(shù)據(jù)庫中,刪除他的個人信息,請使用DML語言實現(xiàn)該需求;(10)
DELETE FROM employee WHERE name='陳大壯'6、李梅昨天去換手機(jī)卡了,新的號碼是15677289289,在系統(tǒng)中,需要對她的電話進(jìn)行更新。(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、計算年齡最大的員工和年齡最小的員工相差的歲數(shù);(10)
SELECT DATEDIFF(MAX(birth),MIN(birth))/365 FROM employee9、查看最大年齡和最小年齡:
SELECT MAX(DATEDIFF(CURDATE(),birth)/365) 最大年齡,MIN(DATEDIFF(CURDATE(),birth)/365) 最小年齡 FROM employee;提示:
內(nèi)置函數(shù)curdate()顯示當(dāng)前日期
內(nèi)置函數(shù)datediff(date1,date2)用于計算日期date1和date2之間相隔的天數(shù)
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的MySQL测试题——开发公司人事管理系统,包括 Employee表 和 Department表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB数组的一些操作
- 下一篇: ffmpeg给图片加中文水印文字