SQL Server视图

SQL Server视图

在本教程中,将了解视图以及如何管理视图,包括:创建新视图,删除视图以及通过视图更新基础表的数据。

使用SELECT语句查询一个或多个表中的数据时,将获得结果集。

例如,以下语句返回productsbrands表中所有产品的产品名称,品牌和价格:

SELECT
    product_name, 
    brand_name, 
    list_price
FROM
    production.products p
INNER JOIN production.brands b 
        ON b.brand_id = p.brand_id;

下次,如果要获得相同的结果集,可以将此查询语句保存到文本文件中,打开它,然后再次执行。

SQL Server提供了一种通过视图将此查询保存在数据库目录中的更好方法。

视图是存储在数据库目录中的命名查询,允许客户端在之后引用它。

因此,上面的查询可以使用CREATE VIEW语句存储为视图,如下所示:

CREATE VIEW sales.product_info
AS
SELECT
    product_name, 
    brand_name, 
    list_price
FROM
    production.products p
INNER JOIN production.brands b 
        ON b.brand_id = p.brand_id;

稍后,可以像SELECT表一样引用SELECT语句中的视图,如下所示:

SELECT * FROM sales.product_info;

收到此查询时,SQL Server执行以下查询:

SELECT 
    *
FROM (
    SELECT
        product_name, 
        brand_name, 
        list_price
    FROM
        production.products p
    INNER JOIN production.brands b 
        ON b.brand_id = p.brand_id;
);

根据定义,视图不存储除索引视图之外的数据。

视图可以包含来自使用连接的多个表的列,也可以只包含单个表的列的子集。 这使得视图对于抽象或隐藏复杂查询很有用。

下图说明了包含多个表中列的视图:

视图结构

视图的优点

一般来说,视图有以下优点:

安全
您可以限制用户直接访问表,并允许他们通过视图访问数据子集。

例如,可以允许用户通过视图访问客户姓名,电话,电子邮件,但限制他们访问银行帐户和其他敏感信息。

简单

关系数据库可以具有许多具有复杂关系的表,例如,一对一和一对多使得难以导航。
但是,可以使用一组视图简化具有连接和条件的复杂查询。

一致性

有时,需要在每个查询中编写复杂的公式或逻辑。为了使其一致,可以隐藏视图中的复杂查询逻辑和计算。

定义视图后,可以从视图中引用逻辑,而不是在单独的查询中重写它。

在SQL Server中管理视图的相关主题如下 -

  • 创建新视图 - 演示如何在SQL Server数据库中创建新视图。
  • 重命名视图 - 了解如何使用SQL Server Management Studio或Transact-SQL命令重命名视图。
  • 查看列出视图 - 演示如何列出SQL Server数据库中所有视图的几种方法。
  • 获取视图信息 - 演示如何获取有关视图的信息。
  • 删除视图 - 指导如何使用DROP VIEW语句从数据库中删除一个或多个视图。
  • 创建索引视图 - 演示如何针对具有不频繁数据修改的表创建索引视图,以优化视图的性能。