[MySQL课后作业]人事管理系统的SQL实践
第一题
1.假设某商业集团中有若干公司,人事数据库中有3个基本表:
职工表:EMP(E#.ENAME,AGE, SEX, ECITY)。 其属性分别表示职工工号、姓名、年龄、性别和居住城市。
工作表:WORKS(E#,C#,SALARY)。其属性分别表示职工工号、所在公司的编号和工资。
公司表:COMP(C#,CANME,CITY,MGR E#)。其属性分别表示公司编号、公司名称、公司所在城市和公司经理的工号
在3个基本表中,字段AGE和SALARY为数值型,其他字段均为字符型
创建数据库表
create database goods;
use goods;CREATE TABLE EMP (`E#` varchar(4) PRIMARY KEY,ENAME varchar(50),AGE int,SEX char(2),ECITY varchar(20)
);CREATE TABLE WORKS (`E#` varchar(10),`C#` varchar(10),SALARY decimal(8, 2),PRIMARY KEY (`E#`, `C#`)
);CREATE TABLE COMP (`C#` varchar(10) PRIMARY KEY,CNAME varchar(20),CITY varchar(20),`MEG_E#` varchar(10)
);
插入数据
INSERT INTO EMP VALUES( '0001', '张三', 56, '女', '成都' ),( '0002', '李四', 44, '男', '深圳' ),( '0003', '王五', 28, '男', '武汉' ),( '0004', '赵六', 57, '男', '成都' ),( '0005', '小红', 67, '女', '北京' ),( '0006', '小明', 70, '男', '上海' );INSERT INTO WORKS VALUES( '0001', '0001', 2800.00 ),( '0001', '0002', 1500.00 ),( '0002', '0003', 9580.00 ),( '0002', '0002', 1598.00 ),( '0003', '0001', 5500.00 ),( '0003', '0002', 2230.00 ),( '0004', '0002', 3300.00 ),( '0005', '0003', 1332.00 );INSERT INTO COMP VALUES( '0001', '联华公司', '成都', '0001' ),( '0002', '联华武汉分部', '武汉', '0002' ),( '0003', '联华重庆分部', '重庆', '0001' );
(1)检索超过50岁的男职工的工号和姓名。
SELECT `E#`,ENAME FROM EMP WHERE AGE>50 AND SEX="男";

(2)假设每个职工可在多个公司工作,检索每个职工的兼职公司数目和总工资。显示为(E#,NUM,SUM SALARY),其属性分别表示工号、公司数目和总工资。
SELECT `E#`,COUNT(*)NUM,SUM(SALARY) AS SUM_SALARY FROM WORKS GROUP BY `E#`;

(3)检索联华公司低于本公司职工平均工资的所有职工的工号和姓名。
SELECT E.`E#`, E.ENAME FROM EMP E
JOIN WORKS W ON E.`E#` = W.`E#`
JOIN COMP C ON W.`C#` = C.`C#`
WHERE C.CNAME = '联华公司' AND W.SALARY < (SELECT AVG(W.SALARY)FROM WORKS WJOIN COMP C ON W.`C#` = C.`C#`WHERE C.CNAME = '联华公司'
);

(4)检索职工人数最多的公司的编号和名称。
SELECT C.`C#`, C.CNAME FROM COMP C
JOIN WORKS W ON C.`C#` = W.`C#`
GROUP BY C.`C#` ORDER BY COUNT(W.`E#`) DESC LIMIT 1;

(5)检索平均工资高于联华公司平均工资的公司编号和名称。
SELECT C.`C#`, C.CNAME FROM COMP C
JOIN WORKS W ON C.`C#` = W.`C#`
GROUP BY C.`C#` HAVING AVG(W.SALARY) > (SELECT AVG(W.SALARY) FROM WORKS WJOIN COMP C ON W.`C#` = C.`C#` WHERE C.CNAME = '联华公司'
);

(6)为联华公司的职工加薪 5%。
UPDATE WORKS W SET SALARY = SALARY * 1.05
WHERE W.`C#` IN (SELECT `C#` FROM COMP WHERE CNAME = '联华公司');

(7)在表 WORKS中删除年龄大于60岁的职工记录。
DELETE FROM works
WHERE works.`E#` IN ( SELECT emp.`E#` FROM emp WHERE emp.AGE > 60 );

(8)建立一个有关女职工的视图emp woman,属性包括(E#,ENAME,C#,CANME.SALARY)。然后对视图empwoman 进行操作,检索每一个女职工的总工资(假设每个职工可在多个公司兼职)。
CREATE VIEW emp_woman AS SELECT
emp.`E#`, emp.ENAME, comp.`C#`, comp.CNAME, works.SALARY FROM empJOIN works ON emp.`E#` = works.`E#`JOIN comp ON comp.`C#` = works.`C#`
WHERE emp.SEX = "女";SELECT `E#`, ENAME, sum( salary ) FROM emp_woman GROUP BY `E#`;

第二题
(1)创建表 workinfo,要求创建表的同时在id字段上创建名为 index id 的唯一性索引,且降序排列。workinfo的表结构如下图所示。
| 字段名 | 字段描述 | 数据类型 | 非空 | 主键 | 唯一 | 自增 |
|---|---|---|---|---|---|---|
| id | 编号 | INT | 是 | 是 | 是 | 是 |
| name | 职位名称 | VARCHAR(20) | 是 | 否 | 否 | 否 |
| type | 职位类型 | VARCHAR(10) | 否 | 否 | 否 | 否 |
| address | 工作地址 | VARCHAR(50) | 否 | 否 | 否 | 否 |
| wages | 工资 | INT | 否 | 否 | 否 | 否 |
| contente | 工作内容 | TINYTEXT | 否 | 否 | 否 | 否 |
| exrta | 附加信息 | TEXT | 否 | 否 | 否 | 否 |
CREATE TABLE workinfo (id INT NOT NULL AUTO_INCREMENT,name VARCHAR(20) NOT NULL,type VARCHAR(10),address VARCHAR(50),wages INT,contents TINYTEXT,extra TEXT,PRIMARY KEY (id DESC),UNIQUE KEY index_id (id)
);
(2)使用CREATE INDEX语句为name字段创建长度为10的索引indexname。
CREATE INDEX index_name ON workinfo(name(10)); SHOW INDEX FROM WORKINFO;

(3)使用 ALTER TABLE语句在type 和 address 字段上创建名为indext的索引。
ALTER TABLE workinfo ADD INDEX indext (type, address); SHOW INDEX FROM WORKINFO;

(4)使用 ALTER TABLE语句在extra字段上创建名为 index_ext的全文索引。
ALTER TABLE workinfo ADD FULLTEXT index_ext (extra); SHOW INDEX FROM WORKINFO;

(5)删除表 workinfo 的唯一性索引 index_id。
ALTER TABLE workinfo DROP INDEX index_id;SHOW INDEX FROM WORKINFO;

第三题
3.某工厂的信息管理数据库中有如下两个关系模式。
职工(职工号,姓名,年龄,月工资,部门号,电话,办公室)
部门(部门号,部门名,负责人代码,任职时间)
创建数据库表
-- 创建职工表
CREATE TABLE `职工` (`职工号` INT PRIMARY KEY,`姓名` VARCHAR(50) NOT NULL,`年龄` INT,`月工资` DECIMAL(10, 2), `部门号` INT, `电话` VARCHAR(20),`办公室` VARCHAR(50)
); -- 创建部门表
CREATE TABLE `部门` (`部门号` INT PRIMARY KEY,`部门名` VARCHAR(50) NOT NULL,`负责人代码` INT,`任职时间` DATE
);
(1)查询每个部门月工资最高的“职工号”的 SQL语句如下。
use goods; SELECT 职工号 FROM 职工 E WHERE 月工资=(SELECT MAX(月工资)FROM 职工 M WHERE M.部门号=E.部门号);
① 请用 30 字以内的文字简要说明该査询语句对查询效率的影响。
该查询每次查询都要对整个职工表进行扫描计算,效率较低。
②对该查询语句进行修改,使它既能实现相同功能,又能提高查询效率。
SELECT E.职工号 FROM 职工 E
INNER JOIN ( SELECT 部门号, MAX(月工资) AS 最高月工资 FROM 职工 GROUP BY 部门号) AS 最高工资
ON E.部门号 = 最高工资.部门号 AND E.月工资 = 最高工资.最高月工资;
(2)假定分别在“职工”关系中的“年龄”和“月工资”字段上创建索引,如下的 SELECI查询语句可能不会促使查询优化器使用索引,从而降低查询效率,请写出既能实现相同功能又能提高查询效率的 SQL 语句。
SELECT 姓名,年龄,月工资 FROM 职工 WHERE 年龄>35 or 月工资<1000;`
SELECT 姓名, 年龄, 月工资 FROM 职工 WHERE 年龄 > 35
UNION
SELECT 姓名, 年龄, 月工资 FROM 职工 WHERE 月工资 < 1000;
相关文章:
[MySQL课后作业]人事管理系统的SQL实践
第一题 1.假设某商业集团中有若干公司,人事数据库中有3个基本表: 职工表:EMP(E#.ENAME,AGE, SEX, ECITY)。 其属性分别表示职工工号、姓名、年龄、性别和居住城市。 工作表:WORKS(E#,C#,SALARY)。其属性分别表示职工工号、所在公司的编号和工资。 公司表:COMP(C#,CA…...
【MySQL】增删改查-进阶(二)
目录 🌴新增 🎄查询 🚩聚合查询 🏀聚合函数 🏀group by子句 🏀HAVING 🚩联合查询 🏀内连接 🏀外连接 🏀自连接 🏀子查询 🏀…...
cefsharp79.1.360(Chromium 79.0.3945.130)支持H264视频播放-PDF预览 老版本回顾系列体验
一、关于此版本 版本:Cef 79.1.36/CefSharp 79.1.360/Chromium 79.0.3945.130/支持H264/支持PDF预览 支持PDF预览和H264推荐版本 63/79/84/88/100/111/125 运行环境需要 visual c++ 2015不支持xp/vista/2003/2008默认不支持h264(版权问题)支持打印预览 print preview已知问题…...
【Linux】main函数的参数列表从何而来?
Linux系统进程通过exec系列函数启动新程序时,argc整型 、 argv数组 和 环境变量表 environ 会作为 exec 系列函数的参数,显式传递给新程序的 main 函数。 main函数的参数列表 在C语言中,main函数的标准参数列表通常如下所示: in…...
缓冲区类QBuffer
1、QBuffer继承自QIODevice 2、是一种随机设备 3、和QFile类似, 4、有了 QBuffer,你可以把 QByteArray 当成文件一样来操作 其主要作用就是像QFile操作文件一样来操作一块QByteArray(内存区域),比如读和写 常用方…...
从一个事故中理解 Redis(几乎)所有知识点
作者:看破 一、简单回顾 事故回溯总结一句话: (1)因为大 KEY 调用量,随着白天自然流量趋势增长而增长,最终在业务高峰最高点期占满带宽使用 100%。   (2ÿ…...
MySQL程序介绍<二>
目录 mysqlcheck - 表维护程序 Mysqldump - 数据库备份程序 mysqladmin - MySQL 服务器管理程序 mysqlshow - 显⽰数据库、表和列信息 mysqldumpslow - 总结慢查询⽇志⽂件 编辑 mysqlbinlog - 处理⼆进制⽇志⽂件 mysqlslap - 负载仿真客⼾端 接着上篇继续介绍MySQL…...
Java项目实战II基于Spring Boot的毕业就业信息管理系统设计与实现(源码+数据库+文档)
目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着高校扩…...
LeetCode 1343.大小为K且平均值大于等于阈值的子数组数目
题目: 给你一个整数数组 arr 和两个整数 k 和 threshold 。 请你返回长度为 k 且平均值大于等于 threshold 的子数组数目。 思路:定长滑动窗口 入 更新 出 代码: class Solution {public int numOfSubarrays(int[] arr, int k, int t…...
【电商项目】1分布式基础篇
1 项目简介 1.2 项目架构图 1.2.1 项目微服务架构图 1.2.2 微服务划分图 2 分布式基础概念 3 Linux系统环境搭建 查看网络IP和网关 linux网络环境配置 补充P123(修改linux网络设置&开启root密码访问) 设置主机名和hosts映射 主机名解析过程分析&…...
PHP嵌套函数
PHP嵌套函数(Nested Functions)在标准的PHP语法中并不直接支持,也就是说,你不能在一个函数内部直接定义另一个函数。然而,可以通过闭包(Closures)和匿名函数(Anonymous Functions&am…...
外包干了2个月,技术明显退步
回望过去,我是一名普通的本科生,于2019年通过校招有幸加入了南京某知名软件公司。那时的我,满怀着对未来的憧憬和热情,投入到了功能测试的岗位中。日复一日,年复一年,转眼间,我已经在这个岗位上…...
kaptcha依赖maven无法拉取的问题
老依赖了,就是无法拉取,也不知道为什么,就是用maven一直拉去不成功,还以为是魔法的原因,试了好久发现不是,只好在百度寻求帮助了,好在寻找到了这位大佬的文章Maven - 解决无法安装 Kaptcha 依赖…...
48.旋转图像
秋招未止脚步不止,大厂,我一定要上大厂! 题目链接 . - 力扣(LeetCode) 自己的思路 感觉好难,想不出来. 噫噫噫,我想着想着又想出来了。 //发现规律了,先左右对称, 再…...
每天5分钟玩转C#/.NET之goto跳转语句
前言 在我们日常工作中常用的C#跳转语句有break、continue、return,但是还有一个C#跳转语句很多同学可能都比较的陌生就是goto,今天大姚带大家一起来认识一下goto语句及其它的优缺点。 goto语句介绍 goto 语句由关键字 goto 后跟一个标签名称组成&…...
Java处理大数据小技巧:深入探讨与实践
引言 一、选择合适的数据结构 1. 使用高效的集合 2. 并发安全的数据结构 二、内存管理 1. JVM参数调优 2. 避免内存泄漏 三、并行计算与分布式处理 1. 利用Java并发API 2. 分布式框架 四、数据压缩与序列化 1. 数据压缩 2. 高效序列化 五、外部存储与缓存 1. NoS…...
我开源了Go语言连接数据库和一键生成结构体的包【实用】
项目地址:https://gitee.com/zht639/my_gopkg autosql autosql 是一个简化数据库使用的模块,支持常见的数据库(MySQL、PostgreSQL、SQLite、SQL Server)。该模块不仅提供了数据库连接函数,还能自动生成数据表对应的结…...
Sentinel 快速入门
前置推荐阅读:Sentinel 介绍-CSDN博客 前置推荐阅读:Nacos快速入门-CSDN博客 快速开始 欢迎来到 Sentinel 的世界!这篇新手指南将指引您快速入门 Sentinel。 Sentinel 的使用可以分为两个部分: 核心库(Java 客户端):…...
基于SpringBoot健康生活助手微信小程序【附源码】
基于SpringBoot健康生活助手微信小程序 效果如下: 管理员登录界面 管理员主界面 用户管理界面 健康记录管理界面 健康目标管理界面 微信小程序首页界面 活动信息界面 留言反馈界面 研究背景 近年来,由于计算机技术和互联网技术的飞速发展,…...
功能安全实战系列-软件FEMA分析与组件鉴定
本文框架 前言1. 功能安全分析1.1 Why1.2 What?1.3 How?1.3.1 分析范围确定1.3.2 失效模式分析1.3.3 安全措施制定1.3.4 确认是否满足功能安全目标2. 软件组件鉴定2.1 Why2.2 How?前言 在本系列笔者将结合工作中对功能安全实战部分的开发经验进一步介绍常用,包括Memory(Fl…...
【基于Python技术的智慧中医商业项目】后端应用Articles代码实现(四)
后台文章接口一旦缺少统一的权限边界与查询约束,常见风险集中在未审核内容被暴露、分页与筛选口径不一致、详情阅读数更新链路出错,表现为列表数据异常、详情访问抖动、统计数据不可信。 内容围绕文章应用的 views 与 urls 两段链路拆解,聚焦分页与筛选参数、只读视图集的查…...
[特殊字符] 第72课:杨辉三角
想系统提升编程能力、查看更完整的学习路线,欢迎访问 AI Compass:https://github.com/tingaicompass/AI-Compass 仓库持续更新刷题题解、Python 基础和 AI 实战内容,适合想高效进阶的你。📖 第72课:杨辉三角模块:动态规划 | 难度:…...
SenseVoiceSmall问题解决:常见部署问题排查,确保快速上手
SenseVoiceSmall问题解决:常见部署问题排查,确保快速上手 1. 部署前准备:环境检查清单 1.1 硬件与系统要求 GPU配置:建议使用NVIDIA显卡(RTX 3060及以上),显存至少8GBCUDA版本:需…...
深入解析航顺HK32F030C8T6与STM32F030的兼容性差异及实战调优
1. 航顺HK32F030C8T6与STM32F030的硬件差异解析 第一次拿到航顺HK32F030C8T6这颗国产MCU时,我下意识以为它和STM32F030可以完全互换。但实际在智能家居项目中踩坑后才发现,两者的硬件差异远比想象中多。最明显的区别就是主频——STM32F030最高只能跑到48…...
FLUX.1-dev驱动像素终端实战:API服务封装与Python脚本批量调用示例
FLUX.1-dev驱动像素终端实战:API服务封装与Python脚本批量调用示例 1. 像素幻梦工坊概述 Pixel Dream Workshop是一款基于FLUX.1-dev扩散模型的像素艺术生成终端,专为创作者设计。它采用16-bit像素风格的现代明亮界面,彻底改变了传统AI绘图…...
嵌入式工程师成长之路(1)——元件基础(完整版)
点击下面图片带您领略全新的嵌入式学习路线 🔥爆款热榜 88万+阅读 1.6万+收藏 文章目录 前言 一、认识元件 ①、认识元件 ②、认识封装 二、电阻 1.上拉电阻与下拉电阻 ①、定义 ②、应用 ③、阻值选择 ④、因上下拉电阻引发的问题 ⑤、因一颗上拉电阻引发的思考 2.高精密采…...
【工业C# OPC UA配置黄金法则】:20年资深工程师亲授5大避坑指南与一键式配置模板
第一章:工业C# OPC UA配置黄金法则总览在工业自动化系统中,C# 与 OPC UA 的集成必须兼顾安全性、可维护性与实时性。配置不当不仅导致通信中断,更可能引发证书信任链失效、节点访问越权或会话超时风暴。以下核心原则构成稳定部署的基石。强制…...
是德N5771A直流电源/keysight N5771A
是德N5771A直流电源/keysight N5771A 是德N5771A 探头是一款 直流电源 ,主要特点包括: 输出额定值:电压为300伏,电流为5安培,功率为1500瓦 接口标准:支持 GPIB 、 LAN 、 USB 接口࿰…...
OpenClaw飞书机器人配置:SecGPT-14B安全警报实时推送
OpenClaw飞书机器人配置:SecGPT-14B安全警报实时推送 1. 为什么需要安全警报实时推送? 上周三凌晨3点,我的个人服务器突然收到异常登录告警。当我早上看到邮件时,攻击者早已完成数据窃取并抹除了痕迹。这次事件让我意识到&#…...
【2026春招必看】MiniMax大模型算法岗面试深度解析:薪资福利+核心考点+项目经验!手把手教你冲刺高薪Offer!
今天给大家梳理出来minmax的福利待遇,顺便分享面试大模型算法岗的面试题。喜欢本文记得收藏、关注、点赞。 废话不多说,我们要开车了。 薪资介绍 月薪(base) 应届/初级(1–2年):35K–50K / 月中…...
