闭卷说明“DDL:把模式写成可执行契约”的对象、成立条件和一个失败反例。
数据库系统 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
闭卷说明“INSERT、UPDATE、DELETE 的影响范围”的对象、成立条件和一个失败反例。
闭卷说明“SELECT 的逻辑执行顺序”的对象、成立条件和一个失败反例。
闭卷说明“NULL 与三值逻辑”的对象、成立条件和一个失败反例。
闭卷说明“表达式、CASE 与类型转换”的对象、成立条件和一个失败反例。
闭卷说明“ORDER BY、LIMIT 与稳定分页”的对象、成立条件和一个失败反例。
闭卷说明“约束失败与可解释错误处理”的对象、成立条件和一个失败反例。
应覆盖:写操作必须先用同一谓词做 SELECT 预览,并在事务中检查受影响行数;缺失 WHERE 是工程事故而非语法小错;规则:安全写入 = 精确谓词 + 行数断言 + 事务 + 可回滚证据;并能围绕“把已离职且结清的员工归档:先查询目标主键,开启事务,插入归档表,再按主键删除并比对行数”给出可执行或可计算的反查。
应覆盖:CREATE TABLE 不只是列清单,还应写类型、主键、唯一、检查、外键与删除更新动作;规则:先声明实体内约束,再声明跨表引用;迁移前必须验证已有数据能满足新约束;并能围绕“设计 department 与 employee:employee.dept_id 引用部门,salary 检查非负,email 唯一,入职日期非空”给出可执行或可计算的反查。
应覆盖:NULL 表示未知或不适用,不等于 0、空串或任何值;比较结果可能是 UNKNOWN,WHERE 只保留 TRUE;规则:TRUE、FALSE、UNKNOWN 构成三值逻辑;NOT UNKNOWN 仍是 UNKNOWN;并能围绕“bonus=NULL 的员工不会被 bonus<>0 选中;应按业务意图使用 IS NULL 或 COALESCE,且先说明缺失含义”给出可执行或可计算的反查。
应覆盖:SQL 书写顺序不等于逻辑顺序;FROM/ON、WHERE、GROUP BY、HAVING、SELECT、DISTINCT、ORDER BY、LIMIT 依次塑造结果;规则:FROM→WHERE→GROUP BY→HAVING→SELECT→DISTINCT→ORDER BY→LIMIT;并能围绕“不能在同层 WHERE 中直接使用 SELECT 别名,因为过滤发生在投影之前;可改用子查询或重复表达式”给出可执行或可计算的反查。
应覆盖:没有 ORDER BY 的结果无承诺顺序;只按非唯一列排序会让分页在并发写入时重复或漏行;规则:稳定全序需要排序键组合唯一;键集分页复杂度通常优于大 OFFSET;并能围绕“按 created_at 倒序翻页时加入 id 作为稳定次键;大页码可用 (created_at,id) 的游标条件替代 OFFSET”给出可执行或可计算的反查。
应覆盖:CASE 把分段业务规则放进查询,CAST 明确类型边界;隐式转换可能让索引失效或产生意外比较;规则:分段条件应从最严格到最宽或显式互斥,并用边界值逐一反查;并能围绕“按成绩区间生成等级时应写互斥且覆盖完整的 CASE,并把 NULL 单独处理,避免落入 ELSE 假装零分”给出可执行或可计算的反查。
应覆盖:应用应区分唯一冲突、外键冲突、检查失败和锁等待,并把数据库错误映射成可行动的业务反馈;规则:先分类错误是否可重试,再决定回滚、重试或反馈;任何重试都要有次数上限和幂等键;并能围绕“重复注册邮箱应返回‘账号已存在’,而不是笼统 500;重试只适用于瞬态冲突,不能掩盖永久约束错误”给出可执行或可计算的反查。