SQL Server视图的创建与使用
一般使用视图来支持即席查询和报表。
一、视图的用处及优点
视图最适合用于支持即席查询,而不应将其作为应用程序的核心。
即席查询创建视图时就遵循的一些原则
SQL Server视图的创建与使用 一般使用视图来支持即席查询和报表。 一、视图的用处及优点 视图最适合用于支持即席查询,而不应将其作为应用程序的核心。 即席查询创建视图时就遵循的一些原则: 1、使用视图来简化复杂连接,将数据库架构中用来连接数据的键隐藏起来 2、将复杂的聚合查询存储为视图 3、使用别名将含义模糊的列名改为易于理解的名称 4、只包含用户感兴趣的列 5、创建视图时,应尽力创建动态的视图,动态视图将有更长的生命周期 如:where 指定下个月的信息 动态。 where 指定12月的信息 开发视图的目标: 1、让用户能够轻松地获取数据以及禁止用户直接存取数据 2、通过创建提供正确数据的视图,可以防止用户错误地查询和理解数据。 二、视图的创建与使用 使用DDL (Create、Alter、Drop)管理视图 1、创建: Create view 视图名称(列名1,列名2..) as select 语句 如: create view selectbmname(部门名称) as select bmname from bumen go select * from selectbmname 结果: 部门名称 技术部 后勤部3 管理部 销售部 后勤部 客户部 管事 2、修改 alter 基本语法: alter view 视图名称 (列名,...) as select 语句 注:与Create语法一样,用于为视图提供新的Sql Select 语句。 如: go alter view selectbmname(修改后的部门名称) as select bmname from bumen go select * from selectbmname 结果: 修改后的部门名称 技术部 后勤部3 管理部 销售部 后勤部 客户部 管事 3、删除 drop view 视图名称 如: drop view selectbmname 注:在预期将要执行多次的脚本中,可使用下面的代码来删除视图并新建 if Exists(select * from sysobjects where name='视图名称') drop view 视图名称 create view .... 三、order by 与视图 视图用作其他查询的数据源,不支持视图内部对数据进行排序, 如果视图中有order by 语句,由使用该视图的Sql语句将其作用于视图。 四、视图的限制 1、视图不能包含从选定列创建新表的Select into 选项 2、视图不能引用临时表(名称中包含’#’的表)或表变量 3、视图不能包含compute 或 compte by列,相反它使用标准聚合函数和分组。 五、使用视图 把普通的视图当作一般的只可查询的表使用。 六、视图保护 关于视图选项中用于对数据及视图的保护的项。通过创建和修改视图时添加指定的 项来实现。 1、保护数据 基本语法: 在视图定义的最后加上:With Check Option 它使where子句进行双向限制, 限制1:视图只能访问满足条件的表中的行 限制2:在通过视图插入和更新数据时,只能更新满足条件的数据行。 注:默认是单向限制,只有限制1. 通过视图更新和插入数据时,和普通表格的语法一致。 如: create view selectbmname(修改后的部门名称) as select bmname from bumen with check option 2、保护视图 总共有三个选项用来保护视图 a、架构变更 当底层数据结构发生变化时,SQL代码往往无法正常运行,视图引用的是表中的数据 如:视图查询的列不存在,视图就无法正常运行 解决方法:通过绑定架构可锁定基表,禁止修改基表 基本语法: 在create 或 alter 与as之间添加:with schemabinding 如: if Exists(select * from sysobjects where name='selectbmname') drop view selectbmname go create view selectbmname(bmname) with Schemabinding as select bmname from dbo.bumen with check option go 注:绑定的架构必须指定架构名,如这里的是dbo, 限制:1、在Select语句中引用对象时必须指定其所有者 2、不能选取所有列 b、加密视图的Select语句 创建的视图和存储过程的源代码,存储在系统表Syscomments中,任何人都可 查看,如果需要将其变成密文,可以使用此选项, 基本语法: 在create 或 alter 与as之间添加:with encryption 如: create view selectbmname(bmname) with encryption as select bmname from dbo.bumen c、应用程序元数据 作用于返回架构信息时。 加上view_metadata只返回有关视图(而不是引用的表的架构信息) 如: create view selectbmname(bmname) with encryption,view_metadata as select bmname from dbo.bumen 注:有多个with选项时,用逗号隔开。 七、通过视图进行更新和表中的数据 一般来说,除非是简单的select语句,否则不能通过它来更新数据,更新方法 与普通表一样,只不过只能使用视图中指定的列。 八、视图性能 视图的一个重要性能与视图对数据加锁有关。 从本质上说,用视图来查找数据时,如果Select语句很快执行完毕,对数据 的锁将立即释放。 九、使用同义词 它可以替换在许多SQL语句中的一个两、三或四部分的名字。使用同义词可以让你减 少输入,而且还能提供一个抽象层来为你保护底层对象的改变。 基本语法: Create Synonem 别名 FOR 原对象名称 当你创建同义词时,相应的对象不需要存在,因为同义词是迟绑定的:当你实际上使用同义词时,SQL Server仅仅检查基对象。 例如,在AdventureWorks示例数据库中mssql 使用视图,你可以以下列方式创建一个同义词: CREATE SYNONYM ProdCat FOR AdventureWorks.Production.ProductCategory 之后,你可以继续使用在SQL语句中的同义词了。例如: SELECT * FROM ProdCat (编辑:通辽站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |