当前位置: 首页 > news >正文

实训作业-人事资源管理系统

er图 模型图

DDL与DML

DROP TABLE IF EXISTS `departments`;
CREATE TABLE `departments` (`department_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '部门ID',`department_name` varchar(100) NOT NULL COMMENT '部门名称',PRIMARY KEY (`department_id`),UNIQUE KEY `department_name` (`department_name`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;INSERT INTO `departments` VALUES ('5', 'IT部');
INSERT INTO `departments` VALUES ('1', '人力资源部');
INSERT INTO `departments` VALUES ('3', '工程部');
INSERT INTO `departments` VALUES ('4', '市场部');
INSERT INTO `departments` VALUES ('2', '财务部');DROP TABLE IF EXISTS `employee_salaries`;
CREATE TABLE `employee_salaries` (`salary_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '薪资记录ID',`user_id` int(11) DEFAULT NULL COMMENT '员工ID',`grade_id` int(11) DEFAULT NULL COMMENT '薪资等级ID',`salary` decimal(10,2) NOT NULL COMMENT '薪资',`start_date` date NOT NULL COMMENT '薪资开始日期',PRIMARY KEY (`salary_id`),KEY `grade_id` (`grade_id`),KEY `user_id` (`user_id`),CONSTRAINT `employee_salaries_ibfk_1` FOREIGN KEY (`grade_id`) REFERENCES `salary_grades` (`grade_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,CONSTRAINT `employee_salaries_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;INSERT INTO `employee_salaries` VALUES ('1', '1', '1', '3500.00', '2020-01-01');
INSERT INTO `employee_salaries` VALUES ('2', '2', '2', '7000.00', '2021-05-15');
INSERT INTO `employee_salaries` VALUES ('3', '3', '3', '12000.00', '2022-09-01');
INSERT INTO `employee_salaries` VALUES ('4', '4', '4', '15000.00', '2020-01-01');
INSERT INTO `employee_salaries` VALUES ('5', '5', '5', '18000.00', '2021-05-15');
INSERT INTO `employee_salaries` VALUES ('6', '6', '3', '13000.00', '2022-08-02');DROP TABLE IF EXISTS `employee_trainings`;
CREATE TABLE `employee_trainings` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '培训记录ID',`user_id` int(11) DEFAULT NULL COMMENT '员工ID',`training_id` int(11) DEFAULT NULL COMMENT '培训ID',`attendance_date` date NOT NULL COMMENT '参加日期',PRIMARY KEY (`id`),KEY `training_id` (`training_id`),KEY `user_id` (`user_id`),CONSTRAINT `employee_trainings_ibfk_1` FOREIGN KEY (`training_id`) REFERENCES `trainings` (`training_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,CONSTRAINT `employee_trainings_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;INSERT INTO `employee_trainings` VALUES ('1', '1', '1', '2023-01-02');
INSERT INTO `employee_trainings` VALUES ('2', '2', '2', '2023-02-16');
INSERT INTO `employee_trainings` VALUES ('3', '3', '3', '2023-03-31');
INSERT INTO `employee_trainings` VALUES ('4', '4', '4', '2023-04-16');
INSERT INTO `employee_trainings` VALUES ('5', '5', '5', '2023-05-02');DROP TABLE IF EXISTS `positions`;
CREATE TABLE `positions` (`position_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '职位ID',`position_name` varchar(100) NOT NULL COMMENT '职位名称',`department_id` int(11) DEFAULT NULL COMMENT '所属部门ID',PRIMARY KEY (`position_id`),UNIQUE KEY `position_name` (`position_name`),KEY `department_id` (`department_id`),CONSTRAINT `positions_ibfk_1` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;INSERT INTO `positions` VALUES ('1', '招聘专员', '1');
INSERT INTO `positions` VALUES ('2', '财务经理', '2');
INSERT INTO `positions` VALUES ('3', '软件工程师', '3');
INSERT INTO `positions` VALUES ('4', '市场经理', '4');
INSERT INTO `positions` VALUES ('5', 'IT支持', '5');DROP TABLE IF EXISTS `salary_grades`;
CREATE TABLE `salary_grades` (`grade_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '薪资等级ID',`grade_name` varchar(50) NOT NULL COMMENT '薪资等级名称',`minimum_salary` decimal(10,2) NOT NULL COMMENT '最低薪资',`maximum_salary` decimal(10,2) NOT NULL COMMENT '最高薪资',PRIMARY KEY (`grade_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;INSERT INTO `salary_grades` VALUES ('1', '初级', '3000.00', '5000.00');
INSERT INTO `salary_grades` VALUES ('2', '中级', '5000.00', '8000.00');
INSERT INTO `salary_grades` VALUES ('3', '高级', '8000.00', '12000.00');
INSERT INTO `salary_grades` VALUES ('4', '资深', '12000.00', '18000.00');
INSERT INTO `salary_grades` VALUES ('5', '总监级', '18000.00', '25000.00');DROP TABLE IF EXISTS `trainings`;
CREATE TABLE `trainings` (`training_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '培训ID',`training_name` varchar(100) NOT NULL COMMENT '培训名称',`description` text COMMENT '培训描述',`training_date` date NOT NULL COMMENT '培训日期',PRIMARY KEY (`training_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;INSERT INTO `trainings` VALUES ('1', '新员工入职培训', '公司文化、规章制度等', '2023-01-01');
INSERT INTO `trainings` VALUES ('2', '项目管理培训', '敏捷开发、Scrum等', '2023-02-15');
INSERT INTO `trainings` VALUES ('3', '编程技能培训', 'Python、Java等', '2023-03-30');
INSERT INTO `trainings` VALUES ('4', '市场营销培训', 'SEO、广告策略等', '2023-04-15');
INSERT INTO `trainings` VALUES ('5', '领导力发展培训', '团队管理、沟通技巧等', '2023-05-01');DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (`user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '员工ID',`username` varchar(50) NOT NULL COMMENT '用户名',`password` varchar(255) NOT NULL COMMENT '密码',`gender` enum('男','女') NOT NULL COMMENT '性别',`email` varchar(100) DEFAULT NULL COMMENT '邮箱',`phone` varchar(20) DEFAULT NULL COMMENT '电话',`hire_date` date NOT NULL COMMENT '入职日期',`department_id` int(11) NOT NULL,PRIMARY KEY (`user_id`),UNIQUE KEY `username` (`username`),UNIQUE KEY `email` (`email`),UNIQUE KEY `phone` (`phone`),KEY `department_id` (`department_id`),CONSTRAINT `users_ibfk_1` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;INSERT INTO `users` VALUES ('1', 'user1', 'pass123', '男', 'user1@example.com', '1234567890', '2020-01-01', '1');
INSERT INTO `users` VALUES ('2', 'user2', 'pass456', '女', 'user2@example.com', '0987654321', '2020-02-15', '2');
INSERT INTO `users` VALUES ('3', 'user3', 'pass789', '男', 'user3@example.com', '1112223333', '2020-03-30', '3');
INSERT INTO `users` VALUES ('4', 'user4', 'passabc', '女', 'user4@example.com', '3334445555', '2020-04-15', '4');
INSERT INTO `users` VALUES ('5', 'user5', 'passxyz', '男', 'user5@example.com', '5556667777', '2020-05-01', '5');
INSERT INTO `users` VALUES ('6', 'user6', 'pass988', '男', 'ueer6@example.com', '4578946413', '2020-08-02', '3');

查询

##查询所有员工信息
SELECT * FROM users;##查询薪资等级为“中级”的薪资范围SELECT minimum_salary, maximum_salary FROM salary_grades WHERE grade_name = '中级';
##查询入职时间大于2020-03-31的员工信息
SELECT * FROM users WHERE hire_date > '2020-03-31';
##查询参加过新员工入职培训的员工的用户名和入职日期
SELECT users.username, users.hire_date
FROM users 
JOIN employee_trainings  ON users.user_id = employee_trainings.user_id
JOIN trainings  ON employee_trainings.training_id = trainings.training_id
WHERE trainings.training_name = '新员工入职培训';
##找出薪资等级为"高级"且薪资超过其薪资等级内平均薪资的员工。
SELECT u.username, es.salary
FROM users u
JOIN employee_salaries es ON u.user_id = es.user_id
JOIN salary_grades sg ON es.grade_id = sg.grade_id
WHERE sg.grade_name = '高级' AND es.salary > (SELECT AVG(salary) FROM employee_salaries es2 JOIN salary_grades sg2 ON es2.grade_id = sg2.grade_id WHERE sg2.grade_name = '高级'
);
##找出员工数量最多的部门及其员工数量。
SELECT departments.department_name, COUNT(users.user_id) AS employee_count
FROM departments 
JOIN users  ON departments.department_id = users.department_id
GROUP BY departments.department_name
ORDER BY employee_count DESC
LIMIT 1;

触发器和存储过程

delimiter $$
CREATE TRIGGER update_salaries ##创建一个·触发器
BEFORE UPDATE on employee_salaries ##在修改薪资表后执行
for each ROW
BEGIN
DECLARE result DECIMAL(10,4);##定义一个变量
DECLARE result1 DECIMAL(10,4);##定义第二个变量
SET result=(new.salary-old.salary)/old.salary*100;
SET result1=(old.salary-new.salary)/old.salary*100;
IF result>20 THEN ##如果上浮动超过20执行下面语句
SIGNAL SQLSTATE '45000' SET message_text='更改工资上下浮动不能超过20%';
end if;
IF result1>20 THEN##如果下浮动超过20执行下面语句
SIGNAL SQLSTATE '45000' SET message_text='更改工资上下浮动不能超过20%';
end IF;
END;
$$
delimiter;

delimiter $$
CREATE PROCEDURE create_user(
IN in_user_id int, in in_grade_id int)##创建1个添加新员工的触发器,定义员工id和薪资等级id
BEGIN
INSERT INTO users VALUES(in_user_id,'杀','pass213','男','user7@example.com','1589756324','2020-01-01',1);
INSERT INTO employee_salaries VALUES(7,in_user_id,in_grade_id,13500,'2021-05-15');##向员工表和员工薪资表中插入信息
end $$
delimiter;
CALL create_user(7,3);##测试

相关文章:

实训作业-人事资源管理系统

er图 模型图 DDL与DML DROP TABLE IF EXISTS departments; CREATE TABLE departments (department_id int(11) NOT NULL AUTO_INCREMENT COMMENT 部门ID,department_name varchar(100) NOT NULL COMMENT 部门名称,PRIMARY KEY (department_id),UNIQUE KEY department_name (de…...

Flink 资源静态调度

本内容是根据 Flink 1.18.0-Scala_2.12 版本源码梳理而来。本文主要讲述任务提交时,为 Task 分配资源的过程。 以下是具体步骤讲解: TaskManager 资源注册 TaskManager 在启动时,会向 ResourceManager 注册资源。ResourceManager 会将 Tas…...

upload-labs第十三关教程

upload-labs第十三关教程 第十三关一、源代码分析代码审计 二、绕过分析1)0x00绕过a.上传eval.pngb.使用burpsuite进行拦截修改之前:修改之后:进入hex模块: c.放包上传成功: d.使用中国蚁剑进行连接 2)%00绕…...

基于springboot实现宠物商城网站管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现宠物商城网站管理系统演示 摘要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,商品信息因为其管理内容繁杂&#xff…...

Fragment与ViewModel(MVVM架构)

简介 在Android应用开发中,Fragment和ViewModel是两个非常重要的概念,它们分别属于架构组件库的一部分,旨在帮助开发者构建更加模块化、健壮且易维护的应用。 Fragment Fragment是Android系统提供的一种可重用的UI组件,它能够作为…...

Linux开发讲课16--- 【内存管理】页表映射基础知识2

ARM32页表和Linux页表那些奇葩的地方 ARM32硬件页表中PGD页目录项PGD是从20位开始的,但是为何头文件定义是从21位开始? 历史原因:Linux最初是基于x86的体系结构设计的,因此Linux内核很多的头文件的定义都是基于x86的&#xff0c…...

uniapp地图点击获取位置

主页面 <view class"right-content" click.stop"kilometer(item)"><view class"km">{{item.distance||0}}km</view><image src"../../static/map.png" mode""style"width: 32rpx; height: 32rpx…...

Unity程序开发:1.基本概念及操作

1. 基本概念与操作 Unity 是一个功能强大的游戏开发引擎&#xff0c;广泛用于创建2D和3D游戏。要开始开发游戏&#xff0c;了解游戏对象和组件的基本概念是必不可少的。 游戏对象与组件 什么是游戏对象&#xff08;GameObject&#xff09; 在 Unity 中&#xff0c;游戏对象…...

前端新手小白的第一个AI全栈项目---AI聊天室

前言 ok&#xff0c;大家好。- ̗̀(๑ᵔ⌔ᵔ๑)最近也是想做自己的第一个前后端分离的项目&#xff0c;刚好最近学了一点AI接口的实现。想着用接口做一个自己的ai聊天室并且尝试一下全栈式开发。中间真的解决了很多问题&#xff0c;也是成功之后也是想要将实现过程分享一下&a…...

金升阳电源被制裁,广州顶源电源模块可以完美替换

广州顶源电子科技股份有限公司,座落于国家高新技术开发区---广州科学城&#xff0c;是一家集研发、生产、销售及服务于一体的DC-DC&#xff0c;AC-DC电源的生产厂家。 公司通过了IATF16949汽车认证及ISO9001:2015质量管理体系认证。拥有专家级研发团队&#xff0c;产品研发经过…...

《数据赋能:一本书讲透数字化营销与运营》—— 从正确的数据观开始

基于数据打通的“全链路”营销是当下的“时髦”&#xff0c;应用它的前提是什么&#xff1f;深度营销和运营的关键数据如何获得&#xff1f;如何利用数据进行更精准的营销投放&#xff1f;如何利用数据优化投放的效果&#xff1f;如何促进消费者的转化&#xff0c;以及激活留存…...

JDK 24:Leyden

Project Leyden 发布了其首个早期版本(24-leyden2-8 2024/6/20)。初始版本专注于缩短 Java 应用程序的启动时间。 1.特点 提前编译 Java 方法&#xff0c;以便在应用程序在生产运行中启动时立即本地执行它们&#xff1b;提前解析常量池条目可以让 AOT 编译器生成更好的代码&a…...

对于图片转3d人脸方面的研究

1.一个开源的可以运行的项目&#xff08;face3d/README.md at master yfeng95/face3d GitHub&#xff09; 在配置好环境后&#xff0c;让我们一个一个py文件运行它&#xff08;我将给出中文注释&#xff09; 1&#xff09;1_pipeline.py 将一个3d头像的mat文件转换为jpg…...

.NET C# 八股文 代码阅读(一)

.NET C# 八股文 代码阅读&#xff08;一&#xff09; 目录 .NET C# 八股文 代码阅读&#xff08;一&#xff09;1 两种获10000个数的方式&#xff0c;哪种效率更高&#xff1f;为什么&#xff1f;2 请说出以下代码AB谁先打印&#xff0c;AB打印的值分别为多少&#xff1f;3 关于…...

C++用Crow实现一个简单的Web程序,实现动态页面,向页面中输入数据并展示

Crow是一个轻量级、快速的C微框架&#xff0c;用于构建Web应用程序和RESTful API。 将处理前端页面的POST请求以添加数据的逻辑添加到 /submit 路由中&#xff0c;并添加了一个新的路由 / 用于返回包含输入框、按钮和表格的完整页面。当用户向表格添加数据时&#xff0c;JavaS…...

南信大尹志聪教授为一作在顶级综合性期刊《Natl. Sci. Rev.》发文:传统梅雨停摆,江南缘何不再多烟雨?

文章简介 论文名称&#xff1a;Traditional Meiyu–Baiu has been suspended by global warming 第一作者及单位&#xff1a;尹志聪(教授|南京信息工程大学大气科学学院) 通讯作者及单位&#xff1a;王会军&#xff08;院士|南京信息工程大学大气科学学院&#xff09; 文章发…...

程序员如何用ChatGPT解决常见编程问题:实例解析

引言 在现代编程的世界中&#xff0c;技术进步日新月异&#xff0c;程序员们面临着各种各样的挑战和问题。解决这些问题的过程中&#xff0c;找到合适的工具至关重要。ChatGPT作为一种先进的人工智能语言模型&#xff0c;能够帮助程序员迅速、高效地解决常见的编程问题。本文将…...

初识 SpringMVC,运行配置第一个Spring MVC 程序

1. 初识 SpringMVC&#xff0c;运行配置第一个Spring MVC 程序 文章目录 1. 初识 SpringMVC&#xff0c;运行配置第一个Spring MVC 程序1.1 什么是 MVC 2. Spring MVC 概述2.1 Spring MVC 的作用&#xff1a; 3. 运行配置第一个 Spring MVC 程序3.1 第一步&#xff1a;创建Mave…...

STM32F1+HAL库+FreeTOTS学习1——FreeRTOS入门

STM32F1HAL库FreeTOTS学习1——FreeRTOS入门 裸机开发与操作系统嵌入式操作系统简介FreeRTOS简介FreeRTOS的几个重要概念任务调度器任务状态状态列表 裸机开发与操作系统 在以往的嵌入式学习中&#xff0c;我们最常用的就是裸机开发&#xff0c;所谓裸机开发就是指在没有操作系…...

杭州代理记账报税全程托管专业实力全面指南

杭州代理记税报税服务可以为企业提供全程托管财务管理解决方案&#xff0c;确保企业的财务工作专业、高效、合规。以下是杭州代理记税报税服务全面指南&#xff1a; https://www.9733.cn/news/detail/185.html 一、代理记账报税服务的内容 基础服务&#xff1a; 每日记&#xf…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...