SQL Server视图
精华
小牛编辑
130浏览
2023-03-14
在本教程中,将了解视图以及如何管理视图,包括:创建新视图,删除视图以及通过视图更新基础表的数据。
使用SELECT语句查询一个或多个表中的数据时,将获得结果集。
例如,以下语句返回products
和 brands
表中所有产品的产品名称,品牌和价格:
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
语句从数据库中删除一个或多个视图。 - 创建索引视图 - 演示如何针对具有不频繁数据修改的表创建索引视图,以优化视图的性能。