第二十五回:镜花水月

—— SQL VIEWS (视图)
👈 上一回:岁月长河 🏠 回到大竹峰 🔗 大结局:天书总纲

那些复杂的 SQL 语句(比如四五个表的 JOIN),我每次都要重新写一遍,写得手都酸了。能不能把它“存”起来,下次直接看结果?

这便是 VIEW (视图)。它如镜花水月,看似是表,实则是幻象。它不存数据,只存查询的逻辑。

🪞 幻境之术:CREATE VIEW

📜 幻术心法

视图是基于 SQL 语句的结果集的可视化的表。

你可以像查询普通表一样查询视图。

🧘‍♂️ 试炼:制造幻象

我们把“列出所有弟子及其法宝”这个复杂查询做成视图:

CREATE VIEW V_DiscipleWeapons AS SELECT Disciples.Name, Weapons.WeaponName FROM Disciples JOIN Weapons ON Disciples.Weapon_ID = Weapons.W_ID;

使用幻象: 以后你想看结果,只需:

SELECT * FROM V_DiscipleWeapons;

🔄 幻境重构:更新与删除

若幻境有瑕疵,需重新施法;若不再需要,则需破除。

1. 更新视图 (Update View)

MySQL / Oracle / PostgreSQL: 使用 CREATE OR REPLACE VIEW

CREATE OR REPLACE VIEW V_DiscipleWeapons AS SELECT Disciples.Name, Weapons.WeaponName, Weapons.Power FROM Disciples JOIN Weapons ON Disciples.Weapon_ID = Weapons.W_ID;

SQL Server: 使用 ALTER VIEW

ALTER VIEW V_DiscipleWeapons AS ...

2. 破阵 (Drop View)

彻底销毁视图:

DROP VIEW V_DiscipleWeapons;

如果我把真的表(Disciples)里的数据改了,这幻象里的数据会变吗?

当然会!镜中花虽是幻象,但花动,影亦动。视图总是显示最新的数据。