1. 视图 (View):虚拟的“滤镜”
“视图不存数据,它只是存了一段 SQL。它是保护原表隐私的‘毛玻璃’。”
- 安全性:隐藏敏感字段(如只给看姓名,不给看学号)。
- 简化性:把复杂的 JOIN 包装成一张假表。
- 独立性:原表结构变了,只要视图定义跟着改,前端程序就不用动。
会话真题演练
题目:如果往视图里插入数据,原始表会同步变化吗?
答案:会同步变化。
解析:视图是实时窗口,操作视图本质上是数据库在后台代为操作原表。但前提是该视图必须是可更新的。
2. 索引 (Index):搜索的“传送门”
“索引能让 SELECT 飞快,但会让 INSERT/UPDATE 变慢,因为它要花时间维护那棵 B+ 树。”
存放位置: 索引是确定的存取路径,存储在 磁盘 上。
CREATE INDEX idx_stu_name ON Students(姓名);
权衡思考题
题目:往一个拥有 10 个索引的表里插入 100 万条数据,速度比没有索引的表( )。
A. 快很多 B. 一样 C. 慢得多
答案:C。
解析:每插入一行,数据库必须同步更新 10 个 B+ 树索引,开销巨大。
3. 触发器 (Trigger):自动化的“警卫”
“触发器是‘触发就中’的陷阱。只要发生了增删改,它就会自动跳出来执行任务。”
- 事件:INSERT, UPDATE, DELETE。
- 时间:BEFORE(发生前校验)或 AFTER(发生后记账)。
- 应用:自动记录审计日志。
4. 安全管理 (GRANT/REVOKE)
“GRANT 就像发通行证。注意语法:GRANT 动作 ON 资源 TO 人。”
GRANT SELECT, UPDATE ON Students TO StaffA;
语法辨析
题目:授权时为什么用 GRANT SELECT ON 而不是 FROM?
解析:SELECT 是“权利”,ON 代表将权利加在哪个“资源”上。FROM 只是查询时定位来源的介词。