当前位置:首页 > 技术 > 正文内容

关系型数据库 SQL 核心操作与查询实践

访客 技术 2026年7月1日 1

一、 数据库结构构建

为了规范化管理企业内部员工、部门、项目及家属信息,我们需要定义如下关系模式:

  • 人员表 (Staff):包含 ID (主键)、姓名、出生日期、居住地址、性别、月薪、直属主管 ID、部门编码。
  • 部门表 (Division):包含 部门编号 (主键)、名称、经理 ID、任命日期。
  • 部门地址表 (Div_Location):包含 部门编号 (主键)、具体办公点。
  • 项目表 (Task):包含 项目编号 (主键)、项目名称、地点、所属部门编号。
  • 工时记录表 (Activity_Log):包含 员工 ID、项目编号 (组合主键)、投入时长。
  • 受赡养人表 (Dependent_Info):包含 员工 ID、姓名 (组合主键)、性别、出生日期、关系。

二、 数据定义与操作示例

通过 SQL 定义上述表结构并插入初始数据,以下是针对常见业务需求的查询与维护逻辑实现:

-- 示例:查询参与了特定项目且满足复杂条件的员工信息
-- 获取在"研发部"工作且薪资低于 3000 的员工
SELECT s.name, s.address 
FROM Staff s
JOIN Division d ON s.dept_id = d.div_code
WHERE d.div_name = '研发部' AND s.salary < 3000;

-- 示例:子查询实现关联匹配
-- 查询未参与项目 'P01' 的员工名单
SELECT name FROM Staff 
WHERE staff_id NOT IN (
    SELECT staff_id FROM Activity_Log WHERE task_id = 'P01'
);

-- 示例:利用聚合函数与分组处理
-- 统计至少承担了 3 个项目的员工
SELECT staff_id 
FROM Activity_Log 
GROUP BY staff_id 
HAVING COUNT(task_id) >= 3;

三、 进阶查询技巧

在处理复杂的多表关联与全量项目覆盖时,常采用以下 SQL 模式:

  • 全量匹配:使用嵌套 NOT EXISTS 结构判断是否完成所有任务列表。
  • 多维度过滤:利用 GROUP BYHAVING COUNT(DISTINCT ...) 统计跨部门参与情况。
  • 自关联查询:通过别名将表自身连接,用于查找汇报关系或进行比对分析。

四、 数据维护与更新

对已有关系进行模式变更及数据修正时,需确保一致性:

-- 修改数据:统一上调薪资水平
UPDATE Staff SET salary = 3000 WHERE salary < 3000;

-- 结构变更:动态添加字段以记录更多信息
ALTER TABLE Dependent_Info ADD (work_org VARCHAR(50), job_title VARCHAR(20));

-- 删除逻辑:清理部门相关联的员工数据
DELETE FROM Staff WHERE dept_id IN (
    SELECT div_code FROM Division WHERE div_name = '研发部'
);

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。