(一)测试任务

任务描述:公司薪酬系统用于记录并发放员工薪资。该系统的数据库设计E-R图如图1所示。

图1 薪酬系统E-R图

该子系统涉及的表中各字段定义见表1到表3。

表1 部门表t_department

字段名

数据类型

是否允许空

是否为主键(默认为否)

其它约束

字段说明

id

int

标识列,从1开始自动增长

编号

dept_name

varchar(20)

名称

description

varchar(100)

默认为null

描述

manager_id

int

外键

部门经理ID

表2 雇员表t_employee

字段名

数据类型

是否允许空

是否为主键(默认为否)

其它约束

字段说明

id

int

标识列,从1开始自动增长

编号

name

varchar(10)

姓名

level

int

级别限制在1-15

级别

dept_id

int

外键

所属部门ID

表3 薪水表t_salary

字段名

数据类型

是否允许空

是否为主键(默认为否)

其它约束

字段说明

id

int

标识列,从1开始自动增长

编号

basic_salary

decimal(10, 1)

限制必须大于0

基本工资

performance_salary

decimal(10, 1)

绩效工资

salary_date

datetime

employee_id

int

外键

薪酬所属雇员ID

请按以上设计完成数据库创建、数据表创建和数据操作任务:

任务1:创建数据库(5分)

创建数据库EmployeeSalaryManagement。如果原来有该数据库,请先删除。

任务2:创建数据表及约束(30分)

(1)按表1到表3所列出字段, 创建数据表t_department、t_employee、t_salary,将三个表的主键列设为标识列,自动从1开始增长。(10分)

(2)根据表1到表3中的约束要求,建立好主建、外键、默认、检查、非空等约束。(20分)

CREATE DATABASE IF NOT EXISTS EmployeeSalaryManagement_dsw;
USE EmployeeSalaryManagement_dsw;CREATE TABLE IF NOT EXISTS t_department_dsw(
id_dsw1 int PRIMARY key auto_increment,
dept_name_dsw varchar(20) NOT NULL,
description_dsw varchar(100) DEFAULT NULL,
manager_id_dsw int not null
)ENGINE=InnoDB;
SELECT*FROM t_department_dsw;CREATE TABLE IF NOT EXISTS t_employee_dsw(
id_dsw int PRIMARY key auto_increment,
name_dsw varchar(10)not null,
level_dsw int not null check(level_dsw between 1 and 15),
dept_id_dsw int not null,
CONSTRAINT fk_t_employee_dsw_t_department_dsw FOREIGN KEY(dept_id_dsw)REFERENCES t_department_dsw(id_dsw1)on DELETE CASCADE on UPDATE CASCADE
)ENGINE=InnoDB;
SELECT*FROM t_employee_dsw;CREATE TABLE IF NOT EXISTS t_salary_dsw(
id_dsw2 int PRIMARY key auto_increment,
basic_salary_dsw decimal(10, 1)not null check(basic_salary_dsw>0),
performance_salary_dsw decimal(10, 1)not null ,
salary_date_dsw datetime not null,
employee_id_dsw int not null,
CONSTRAINT fk_t_salary_dsw_t_employee_dsw FOREIGN KEY(employee_id_dsw)REFERENCES t_employee_dsw(id_dsw)on DELETE CASCADE on UPDATE CASCADE
)ENGINE = InnoDB;
SELECT*FROM t_salary_dsw;

任务3:数据库操作(50分)

(1)在三个表中分别插入5条测试数据(样本数据包含下面题目中使用的数据)。

insert into t_department_dsw values(null,'销售部', NULL, '0020');
insert into t_department_dsw values(null,'人事部', NULL, '0002');
insert into t_department_dsw values(null,'生产部', NULL, '0027');
insert into t_department_dsw values(null,'后勤部', NULL, '0012');
insert into t_department_dsw values(null,'公关部', NULL, '0007');
SELECT*FROM t_department_dsw;insert into t_employee_dsw values(null,'王旭','002','1');
insert into t_employee_dsw values(null,'张世杰','012','1');
insert into t_employee_dsw values(null,'闻康','011','1');
insert into t_employee_dsw values(null,'曾裕豪','002','1');
insert into t_employee_dsw values(null,'胡佳','012','1');
insert into t_employee_dsw values(null,'孙达','012','2');
insert into t_employee_dsw values(null,'黄伟英','011','2');
insert into t_employee_dsw values(null,'蒋珂','005','2');
insert into t_employee_dsw values(null,'刘鹏','010','2');
insert into t_employee_dsw values(null,'刘明','015','3');
insert into t_employee_dsw values(null,'胡迎','005','3');
insert into t_employee_dsw values(null,'危博文','014','3');
insert into t_employee_dsw values(null,'黄佳','004','3');
insert into t_employee_dsw values(null,'张三','015','4');
insert into t_employee_dsw values(null,'胡好','005','4');
insert into t_employee_dsw values(null,'博文','014','4');
insert into t_employee_dsw values(null,'秦明','003','4');
SELECT*FROM t_employee_dsw;insert into t_salary_dsw values(null,'3000','200','2018-2-5','1');
insert into t_salary_dsw values(null,'3000','100','2018-10-7','2');
insert into t_salary_dsw values(null,'3000','200','2018-2-9','3');
insert into t_salary_dsw values(null,'2000','110','2018-2-5','4');
insert into t_salary_dsw values(null,'2000','100','2018-10-7','5');
insert into t_salary_dsw values(null,'2000','200','2018-2-9','6');
insert into t_salary_dsw values(null,'3000','200','2018-2-5','7');
insert into t_salary_dsw values(null,'3000','100','2018-10-7','8');
insert into t_salary_dsw values(null,'3000','200','201-2-9','9');
insert into t_salary_dsw values(null,'2000','110','2018-2-5','10');
insert into t_salary_dsw values(null,'2000','100','2019-10-7','11');
insert into t_salary_dsw values(null,'2000','200','2019-2-9','12');
insert into t_salary_dsw values(null,'2000','100','2019-10-7','13');
insert into t_salary_dsw values(null,'3000','200','2018-2-9','14');
insert into t_salary_dsw values(null,'2000','110','2019-2-5','15');
insert into t_salary_dsw values(null,'2000','100','2019-10-7','16');
insert into t_salary_dsw values(null,'2000','200','2020-2-9','17');
SELECT*FROM t_salary_dsw;

(2)查询t_employee表中的员工id、员工姓名和部门编号。

SELECT id_dsw,name_dsw,dept_id_dsw
FROM t_employee_dsw;

(3)查询员工姓名含‘张’的员工id、员工姓名和部门编号。

SELECT id_dsw,name_dsw,dept_id_dsw
FROM t_employee_dsw
WHERE name_dsw like '%张%';

(4)查询部门的人数和平均工资。

SELECT COUNT(b.dept_id_dsw),AVG(c.basic_salary_dsw)
FROM t_salary_dsw c,t_employee_dsw b
where b.dept_id_dsw=c.employee_id_dsw;

(5)删除雇员‘张三’的所有信息。

delete from t_salary_dsw
WHERE id_dsw2=(SELECT id_dsw from t_employee_dsw where name_dsw='张三');SELECT*FROM t_salary_dsw;delete from t_employee_dsw
where name_dsw='张三';
SELECT*FROM t_employee_dsw;

试题2-12:数据库设计与操作相关推荐

  1. 二、数据库设计与操作

    一.    数据库设计 仿QQ数据库一共包括5张数据表,每张数据表结构如下: 1.      tb_User(用户信息表) 这张表主要用来存储用户的好友关系与信息 字段名 数据类型 是否Null值 默 ...

  2. 一套外企的数据库设计面试题

    最近发现园子里面关于数据库方面的文章比较多,正好我也是一个喜欢凑热闹的家伙,那就跟着烧一把火吧.^_^ 这是前阵子一个朋友面试外企的一套关于数据库设计的试题,有兴趣的朋友不妨一试. Part I   ...

  3. 一个在线ER模型设计工具:支持数据库设计、生成、反向工程、优化和文档生成等操作

    ER模型介绍 ER模型,即实体关系模型,是数据库建模的一种重要方法.它可以帮助开发人员更好地理解数据库结构,并确定数据库的概念模型.在本文中,我们将详细介绍ER模型设计的基本概念和过程. 首先,我们需 ...

  4. 在线 OJ 项目(二) · 操作数据库 · 设计前后端交互的 API · 实现在线编译运行功能

    一.操作数据库前的准备 二.封装操作数据库数据的相关操作 三.设计前后端交互的 API 四.实现在线编译运行功能 一.操作数据库前的准备 设计数据库表 我们需要对数据库中存储的题目进行操作. 创建一个 ...

  5. MySQL数据库设计概念(多表查询事务操作)

    每天进步一点点 数据库设计概念 数据库设计简介 表关系(多对多) 表关系(一对多) 表关系之一对一 多表查询 笛卡尔积现象 内连接查询 外连接查询 嵌套查询(子查询) 事务操作 事务的概念 手动提交事 ...

  6. Bootstrap4+MySQL前后端综合实训-Day04-AM【新闻管理手机端页面+数据库操作(PowerDesigner 图形化数据库设计软件、SQLyog软件)】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记] 目   录 W3C标准盒子模型和IE盒子模型的区别 Bootstrap4--新闻管理手机端页面 菜 ...

  7. MySQL面试题 数据库设计三范式

    第一范式 属性(字段)的原子性约束,要求属性具有原子性,不可再分割: 比如个人信息,个人信息不能作为一个字段,它可以再分为姓名.name.age等: 第二范式 记录的惟一性约束,要求记录有惟一标识,每 ...

  8. php面试题之五——MySQL数据库(基础部分)

    五.MySQL数据库 mysql_num_rows() mysql_affected_rows() 这两个函数都作用于 mysql_query($query)操作的结果,mysql_num_rows( ...

  9. 七、Oracle 数据库设计

    1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体. 在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证 ...

最新文章

  1. mysql5.7 生成列 generated column
  2. 【11】nvjdc不能用以后另一种jd ck获取办法
  3. 为什么需要Redis 集群
  4. Java每天5道面试题,跟我走,offer有!(九)
  5. Kali Linux 和 渗透测试
  6. java如何寻找main函数对应的类
  7. 漫步线性代数二十六——特征值和特征向量(续)
  8. 用bitbucket积累代码
  9. TensorFlow 资源大全中文版
  10. tcp下载窗口太小的问题_面试官:换人!他连 TCP 这几个参数都不懂(二)
  11. 暴风影音使用技巧十则
  12. oracle 10g 各版本下载地址
  13. [RK3288][Android6.0] 调试笔记 --- 播放搜狐视频会Crash问题
  14. TFIDF理解和应用
  15. JavaScript数据源版省市县三级联动
  16. docker参数详解
  17. 有什么可以赚钱的副业?日入300元就靠这几个副业!
  18. 莫名骨痛,警惕骨转移
  19. vm虚拟机输入法_VM虚拟机中fedora28 无法使用中文输入法问题
  20. 微信电商小程序开发有什么好处呢

热门文章

  1. 字典学习/稀疏表示学习笔记
  2. 国家自然科学基金查阅
  3. access数据库的用户名和密码的问题
  4. PVLAN 技术介绍
  5. 省市区地址三级联动jQuery插件Distpicker使用
  6. 2022年 Q1书单:17本书《可口可乐传》《随机漫步的傻瓜》等 | δ星 丨读书笔记与书单 notes...
  7. 怎样参与火箭计划币_从目的到计划不是火箭科学
  8. Ubuntu修改屏幕(尺寸/分辨率)大小
  9. python3实现PAT乙级算法题库全集
  10. linux的三权分立设计思路和用户创建(安全管理员、系统管理员和审计管理员)