SQL Server 视图是包含来自引用表的列和行的虚拟表。本研究解释了如何创建、修改、重命名和删除视图。除非我们定义了索引,否则视图不会在数据库中存储一组值。因此,当您对视图使用 SELECT 语句时,记录将来自创建视图时引用的表。
您可以使用 SQL Server Transact 查询或 Management Studio 来创建或替换视图。在进入示例之前,您可以将它们用于以下目的:
- 首先,根据用户的需求简化数据。
- 限制用户访问整个数据库。
SQL Server 创建视图语句
此示例展示了如何使用 CREATE 语句创建视图。
CREATE VIEW EmployeesViewbyQuery AS SELECT [FirstName] + ' ' + [LastName] AS Name ,[Occupation] ,[Education] ,dept.DepartmentName AS Department ,[YearlyIncome] AS Income ,[Sales] FROM [MyEmployees Table] INNER JOIN Department AS dept ON Dept.[id] = [MyEmployees Table].DeptID GO
让我们看看行和列结果集。
SELECT * FROM [dbo].[EmployeesViewbyQuery]

在 SQL Server Management Studio 中创建视图
此示例显示了使用 Management Studio 创建视图的步骤。创建时记住的限制是:
- 它只能在当前数据库中创建。
- 它允许我们拥有最多 1024 列。
要查看现有视图,请选择拥有它们的数据库。正如您所见,我们的数据库没有。
右键单击 Management Studio 中的文件夹,它将打开上下文菜单。要创建它,请从中选择显示的选项。

单击该选项后,查询设计器将在单独的弹出窗口中打开,以添加创建 SQL Server 视图所需的表。
您可以添加函数、表或视图。例如,从下图可以看出,我们选择了 MyEmployees 表和 Department 表。

选择所需的表后,它将显示 查询设计器。请通过在“图表窗格”中勾选列名来选择所需的列。
在此 SQL Server 视图示例中,我们从两个表中选择了名、姓、教育、职业、部门、年收入、销售额和入职日期。请记住,您可以通过将一列拖到另一列上来连接两个表。

Sort Type 属性用于应用 ORDER BY 功能。请在 Grid Pane 中将 Sort Type 更改为 Ascending(升序)或 Descending(降序)。在此示例中,我们将年收入按降序排序。选择 Descending 操作后,它将显示排序表示。

我们设计的最终 SELECT 查询。

请尝试使用 Management Studio 执行我们设计的这个 SQL Server 视图查询,并查看结果。
SELECT TOP (100) PERCENT dbo.[MyEmployees Table].FirstName,
dbo.[MyEmployees Table].LastName,
dbo.[MyEmployees Table].Education,
dbo.[MyEmployees Table].Occupation,
dbo.Department.DepartmentName,
dbo.[MyEmployees Table].YearlyIncome,
dbo.[MyEmployees Table].Sales,
dbo.[MyEmployees Table].HireDate
FROM dbo.Department
INNER JOIN
dbo.[MyEmployees Table] ON
dbo.Department.id = dbo.[MyEmployees Table].DeptID
ORDER BY dbo.[MyEmployees Table].YearlyIncome DESC
接下来,转到“文件”菜单并选择“保存”选项以保存设计的查询。

它将打开“选择名称”弹出窗口以更改默认名称。

展开文件夹,查看创建的视图,然后展开它以查看列名。

注意:一些客户端只授予对视图的访问权限,不允许您访问其主数据库。
在 SQL Server 中重命名视图
它允许您使用内置的存储过程 sp_rename 或 management studio 来重命名视图。
使用 Management Studio 重命名视图
此示例使用 SSMS 重命名视图。要重命名它,请导航到要修改的视图。右键单击名称,然后选择“重命名”选项。

单击“重命名”选项后,SSMS 将允许我们重命名它们。

使用 SP_RENAME 重命名视图
我们可以使用 sp_rename 存储过程来重命名视图。sp_rename 的语法是:
SP_RENAME Old_Name, New_Name
使用 sp_rename 存储过程,您可以重命名现有的视图。为此,请单击“新建查询”并返回以下查询。
SP_RENAME EmployeesViewbyStudio, EmployeesVwName
修改 SQL Server 中的视图
以下示例可帮助您了解修改视图涉及的步骤。但首先,让我们看一下要遵循的限制或约束:
在 SSMS 中修改视图
要在 Management Studio 中修改,请导航到要更改的视图。接下来,右键单击它并选择“设计”选项。

它会打开一个新的设计查询窗口,其中包含现有表和关系。在这里,我们使用过滤器(WHERE 子句)来限制职业为“Professional”的员工,并在 ORDER BY 子句 中使用两个列。

我将从下方选择所有记录以显示修改后的记录。
SELECT [FirstName]
,[LastName]
,[Education]
,[Occupation]
,[DepartmentName]
,[YearlyIncome]
,[Sales]
,[HireDate]
FROM [dbo].[EmployeesViewbySQLSMS]

用于修改的 ALTER VIEW 语句
SQL Server ALTER VIEW 语句是修改现有视图的理想方法。为此,请单击新建查询并写入以下查询。
ALTER VIEW [dbo].[EmployeesViewbySQLSMS]
AS
SELECT TOP 10 emp.FirstName,
emp.LastName,
emp.Education,
emp.Occupation,
Dept.DepartmentName,
emp.YearlyIncome,
emp.Sales
FROM dbo.Department AS Dept
INNER JOIN
dbo.[MyEmployees Table] AS emp ON
Dept.id = emp.DeptID
ORDER BY emp.YearlyIncome DESC,
emp.Sales DESC
让我们看看输出。
SELECT [FirstName]
,[LastName]
,[Education]
,[Occupation]
,[DepartmentName]
,[YearlyIncome]
,[Sales]
FROM [EmployeesViewbySQLSMS]

如何查找视图的定义?
使用 sp_helptext 存储过程来获取视图的定义。
SP_HELPTEXT [EmployeesViewbyQuery]

删除视图
以下示例展示了如何删除视图。
- 删除或丢弃表不会删除依赖项,因此您必须显式使用 SQL Server DROP VIEW 语句来删除它。
- 当您删除它时,所有信息(包括定义)将从系统目录中删除。
使用 Management Studio 删除视图
要使用 Management Studio 进行删除,请右键单击视图名称,然后单击“删除”选项。在本演示中,我们要删除下面的视图。

选择删除选项将打开“删除对象”窗口。接下来,单击“显示依赖项”按钮检查依赖项,然后单击“确定”进行删除。

使用查询删除或丢弃视图
我将使用 DROP 语句删除视图。使用 IF OBJECT_ID (N’VwName’, ‘V’) IS NOT NULL 检查其是否存在于数据库中是一种良好的做法。
DROP VIEW [dbo].[EmployeesVwbyQuery] GO
评论已关闭。