Day 4:高级对象与数据库安全

视图、索引、触发器:让数据库变聪明且安全的秘密武器

1. 视图 (View):虚拟的“滤镜”

“视图不存数据,它只是存了一段 SQL。它是保护原表隐私的‘毛玻璃’。”
会话真题演练

题目:如果往视图里插入数据,原始表会同步变化吗?

答案:会同步变化。
解析:视图是实时窗口,操作视图本质上是数据库在后台代为操作原表。但前提是该视图必须是可更新的。

2. 索引 (Index):搜索的“传送门”

“索引能让 SELECT 飞快,但会让 INSERT/UPDATE 变慢,因为它要花时间维护那棵 B+ 树。”

存放位置: 索引是确定的存取路径,存储在 磁盘 上。

CREATE INDEX idx_stu_name ON Students(姓名);
权衡思考题

题目:往一个拥有 10 个索引的表里插入 100 万条数据,速度比没有索引的表( )。

A. 快很多   B. 一样   C. 慢得多

答案:C
解析:每插入一行,数据库必须同步更新 10 个 B+ 树索引,开销巨大。

3. 触发器 (Trigger):自动化的“警卫”

“触发器是‘触发就中’的陷阱。只要发生了增删改,它就会自动跳出来执行任务。”

4. 安全管理 (GRANT/REVOKE)

“GRANT 就像发通行证。注意语法:GRANT 动作 ON 资源 TO 人。”
GRANT SELECT, UPDATE ON Students TO StaffA;
语法辨析

题目:授权时为什么用 GRANT SELECT ON 而不是 FROM

解析:SELECT 是“权利”,ON 代表将权利加在哪个“资源”上。FROM 只是查询时定位来源的介词。