在 SQL 中,视图是一个虚拟表,它通过使用预定义的查询组合来自一个或多个现有表的数据而创建。与物理表不同,视图本身不存储数据,它们会在每次访问时动态显示来自其底层查询的结果。视图充当具有名称的已保存查询,允许开发人员简化复杂操作、通过限制列访问来强制执行安全性或以特定格式呈现数据,而无需更改原始表。
要创建视图,请使用 CREATE VIEW
语句,后跟一个名称和一个 SELECT
查询,该查询定义要包含的数据。 例如,如果您有一个 customers
表,其中包含 customer_id
、name
和 email
等列,以及一个 orders
表,其中包含 order_id
、customer_id
和 total
,您可以创建一个视图来显示客户姓名及其订单总额。 SQL 如下所示
CREATE VIEW customer_orders AS
SELECT c.name, o.order_id, o.total
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id;
此视图将允许像查询表一样查询 customer_orders
,例如 SELECT * FROM customer_orders WHERE total > 100;
。 视图还可以包括计算字段、过滤器或聚合。 例如,视图可以使用 GROUP BY
计算每个客户的平均订单价值。
视图特别适用于抽象重复的连接或过滤器,确保跨查询的一致逻辑。 它们还可以限制对敏感列的访问(例如,从共享视图中排除 email
)。 但是,视图也有局限性:性能取决于底层查询,并且通过视图更新数据可能需要满足特定条件(例如,没有计算列的单表更新)。 尽管存在这些限制,视图仍然是组织复杂 SQL 逻辑和简化数据访问的实用工具。