SQL VIEW(视图):
数据库表:
er图:

视图:
视图是存储在数据库目录中的命名查询,允许客户端在之后引用它。
视图可以包含来自使用连接的多个表的列,也可以只包含单个表的列的子集。 这使得视图对于抽象或隐藏复杂查询很有用。
下图说明了包含多个表中列的视图:

视图有以下优点:
安全 :
您可以限制用户直接访问表,并允许他们通过视图访问数据子集。
例如,可以允许用户通过视图访问客户姓名,电话,电子邮件,但限制他们访问银行帐户和其他敏感信息。
简单:
关系数据库可以具有许多具有复杂关系的表,例如,一对一和一对多使得难以导航。 但是,可以使用一组视图简化具有连接和条件的复杂查询。
一致性 :
有时,需要在每个查询中编写复杂的公式或逻辑。为了使其一致,可以隐藏视图中的复杂查询逻辑和计算。
定义视图后,可以从视图中引用逻辑,而不是在单独的查询中重写它。
A、SQL Server创建视图
SQL Server中创建新视图,请使用 CREATE VIEW 语句,如下所示:

在上面语法中,
(1)在 CREATE VIEW 关键字后指定视图的名称。 schema_name 是视图所属的架构的名称。
(2)指定定义 AS 关键字后面的视图的 SELECT 语句( select_statement )。 SELECT 语句可以引用一个 或多个表。
如果未明确指定视图的列列表,SQL Server将使用从 SELECT 语句派生的列列表。
如果想重新定义视图,例如,向其添加更多列或从中删除一些列,可以在 CREATE VIEW 关键字后使用 OR ALTER 关键字。
1、创建一个简单的视图示例
以下语句根据 orders , order_items 和 products 表创建名为 daily_sales 的视图:

创建 daily_sales 视图后,可以使用简单的 SELECT 语句在视图上针对基础表查询数据:

2、重新定义视图示例
要将客户名称列添加到 sales.daily_sales 视图,请使用 CREATE VIEW 或 ALTER 语句,如下所示:


在此示例中,明确指定了视图的列列表。
以下语句从 sales.daily_sales 视图查询数据:

B、SQL Server重命名视图
在重命名视图之前,必须注意所有依赖于视图的对象都可能失败。
这些对象包括存储过程,用户定义的函数,触发器,查询,其他视图和客户端应用程序。
因此,重命名视图后,必须确保引用视图旧名称的所有对象都使用新名称。
使用SSMS重命名视图:
要重命名视图的名称,请按照以下步骤操作:
首先,在对象资源管理器(Server Server Management Studio)中,展开“数据库”,选择包含要重命名的视 图的数据库名称,然后展开“视图”文件夹。
其次,右键单击要重命名的视图,然后选择“重命名” 。

使用SQL重命名视图 :
如果要以编程方式重命名视图,可以使用 sp_rename 存储过程:

在这个语句中:
使用 @obname 参数指定旧的视图名称,并将新的视图名称传递给 @newname 参数。
sp_rename 存储过程返回以下消息:

C、SQL Server列出视图
列出SQL Server数据库中的所有视图,请查询 sys.views 或 sys.objects 目录视图。
方法1:sys.views

方法2:sys.objects

D、SQL Server获取视图定义信息
使用sql_module 获取视图信息
要获取视图的信息,请使用系统目录 sys.sql_module 和 OBJECT_ID() 函数:

在此查询中,将视图名称传递给 WHERE 子句中的 OBJECT_ID() 函数。 OBJECT_ID() 函数返回模式范围 数据库对象的标识号。
使用sp_helptext存储过程获取视图信息 :
sp_helptext 存储过程返回用户定义对象(如视图)的定义。
要获取视图的信息,请将视图名称传递给 sp_helptext 存储过程。 例如,以下语句返回 sales.daily_sales 视图的信息:

使用OBJECT_DEFINITION()函数获取视图信息 :
获取视图信息的另一种方法是使用 OBJECT_DEFINITION() 和 OBJECT_ID() 函数,如下所示:

E、SQL Server删除视图
从数据库中删除视图,请使用 DROP VIEW 语句,它的语法如下所示:

在此语法中,可以指定要在 DROP VIEW 关键字后删除的视图的名称。 如果视图属于模式,则还必须显式指定视图所属的模式的名称。
如果尝试删除不存在的视图,SQL Server将发出错误。
IF EXISTS 子句可防止在删除不存在的视图时发生错误。
要删除多个视图,请使用以下语法:

SQL VIEW(视图)
视图是可视化的表。
这章讲解如何创建、更新和删除视图。
SQL CREATE VIEW 语句
什么是视图?
在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。
注释:数据库的设计和结构不会受到视图中的函数、where 或 join 语句的影响。
SQL CREATE VIEW 语法
CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition
注释:视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用 SQL 语句来重建数据。
SQL CREATE VIEW 实例
可以从某个查询内部、某个存储过程内部,或者从另一个视图内部来使用视图。通过向视图添加函数、join 等等,我们可以向用户精确地提交我们希望提交的数据。
样本数据库 Northwind 拥有一些被默认安装的视图。视图 "Current Product List" 会从 Products 表列出所有正在使用的产品。这个视图使用下列 SQL 创建:
CREATE VIEW[Current Product List]ASSELECTProductID,ProductNameFROMProductsWHEREDiscontinued=No
我们可以查询上面这个视图:
SELECT * FROM [Current Product List]
Northwind 样本数据库的另一个视图会选取 Products 表中所有单位价格高于平均单位价格的产品:
CREATE VIEW[Products Above Average Price]ASSELECTProductName,UnitPriceFROMProductsWHEREUnitPrice>(SELECT AVG(UnitPrice) FROM Products)
我们可以像这样查询上面这个视图:
SELECT * FROM [Products Above Average Price]
另一个来自 Northwind 数据库的视图实例会计算在 1997 年每个种类的销售总数。请注意,这个视图会从另一个名为 "Product Sales for 1997" 的视图那里选取数据:
CREATE VIEW[Category Sales For 1997]ASSELECT DISTINCTCategoryName,Sum(ProductSales)ASCategorySalesFROM[Product Sales for 1997]GROUP BYCategoryName
我们可以像这样查询上面这个视图:
SELECT * FROM [Category Sales For 1997]
我们也可以向查询添加条件。现在,我们仅仅需要查看 "Beverages" 类的全部销量:
SELECT*FROM[Category Sales For 1997]WHERECategoryName='Beverages'
SQL 更新视图
您可以使用下面的语法来更新视图:
SQL CREATE OR REPLACE VIEW Syntax CREATE OR REPLACE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition
现在,我们希望向 "Current Product List" 视图添加 "Category" 列。我们将通过下列 SQL 更新视图:
CREATE VIEW [Current Product List] AS SELECT ProductID,ProductName,Category FROM Products WHERE Discontinued=No
SQL 撤销视图
您可以通过 DROP VIEW 命令来删除视图。
SQL DROP VIEW Syntax DROP VIEW view_name
以上就是我最近整理的新的知识内容,现在分享给你们,希望可以帮助到你们。
本文详细介绍了SQL视图的概念、创建、更新和删除操作。视图是数据库中的命名查询,用于提供对数据的安全访问和简化复杂查询。通过CREATE VIEW语句创建视图,可以限制用户直接访问表并提供数据一致性。文章提供了SQL Server中创建、重命名、查询和删除视图的实例,以及获取视图定义的方法。
959

被折叠的 条评论
为什么被折叠?



