← 返回笔记

工程实践

数据库应用系统设计:部门职员管理系统

2026-08-18 09:00 MySQL数据库设计

围绕 DEPT、EMP、SALGRADE 三表模型,记录从建表到复杂查询的数据库应用系统设计过程。

数据库应用系统设计:部门职员管理系统

来源:数据库技术与应用考核项目(期末)· 整理:婉萤

一个完整的数据库小项目:从建表到复杂查询,全程手写 SQL。

三表设计

经典的 DEPT / EMP / SALGRADE 模型:

CREATE TABLE dept (
  deptno INT PRIMARY KEY, dname VARCHAR(20), loc VARCHAR(20)
);
CREATE TABLE emp (
  empno INT PRIMARY KEY, ename VARCHAR(20), job VARCHAR(20),
  mgr INT, hiredate DATE, sal DECIMAL(7,2), comm DECIMAL(7,2),
  deptno INT, FOREIGN KEY (deptno) REFERENCES dept(deptno)
);
CREATE TABLE salgrade (grade INT, losal INT, hisal INT);

设计要点:主外键、字段类型与约束(NOT NULL / UNIQUE)、decimal 用于金额。

DML 实战

  • 批量插入多条记录
  • DELETE ... WHERE ename LIKE 'S%'
  • UPDATE emp SET sal = sal * 1.1 WHERE ...(全员提薪 10%)

DQL 重头戏

  • 列转行领导查询(GROUP_CONCAT 把同组姓名拼成一行)
  • 外连接查各部门人数(含 0 人的部门)
  • 部门最高工资排名子查询
  • 子查询求平均工资
  • 经典辨析:WHEREHAVING 的区别(分组前过滤行 vs 分组后过滤组)

项目小结

这个项目把「数据库设计 → 建表 → 数据操作 → 复杂查询」完整走了一遍。最大的心得:SQL 要先用嘴说清楚逻辑,再动手写——查询需求翻译成「从哪张表、按什么条件、留下哪些列」,写出来基本不会错。