工程实践
数据库应用系统设计:部门职员管理系统
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 人的部门)
- 部门最高工资排名子查询
- 子查询求平均工资
- 经典辨析:
WHERE与HAVING的区别(分组前过滤行 vs 分组后过滤组)
项目小结
这个项目把「数据库设计 → 建表 → 数据操作 → 复杂查询」完整走了一遍。最大的心得:SQL 要先用嘴说清楚逻辑,再动手写——查询需求翻译成「从哪张表、按什么条件、留下哪些列」,写出来基本不会错。