语法
CREATE VIEW view_name [( column
[,...n ] ) ]
[ WITH < view_attribute > [ ,...n ] ]
AS
select_statemnet
[ WITH CHECK OPTION ]
< view_attribute > ::=
{ ENCRYPTION | SCHEMABINDING | VIEW_METADATA }
参数
view_name
视图名。
AS
视图要执行的操作
select_statement
定义视图的SELECT语句
WITH ENCRYPTION
将包含CREATE VIEW语句文本的系统表进行加密。可以防止该视图被复制。
创建视图
创建表
IF EXISTS(
SELECT name
FROM sysobjects
WHERE name='MySortTable' AND xtype='U')
DROP TABLE MySortTable
GO
CREATE TABLE MySortTable
(DictionarySort nvarchar(10) ,
BinarySort nvarchar(10)
GO
插入数据
INSERT MySortTable VALUES
('Alpha','Alpha'),
('Bravo','Bravo'),
('Charlie','Charlie'),
('alpha','alpha'),
('bravo','bravo'),
('charlie','charlie')
GO
A.使用简单的CREATE VIEW
该例使用一条最简单的SELECT语句创建了视图。
IF EXISTS(
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_NAME='title_view')
DROP VIEW title_view
GO
CREATE VIEW title_view
AS
SELECT
DictionarySort,
BinarySort
FROM MySortTable
GO
执行视图
该示例告诉SQL Server把执行语句所得到的所有行和列给我。
SELECT * FROM title_view
EXEC sp_helptext ENCRYPTION_view 运行这个存储过程可以查询视图的源码,如果视图加密系统会提示“文本已加密”。
B.使用WITH ENCRYPTION
这个选项一般用于加密视图。
IF EXISTS(
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_NAME='ENCRYPTION_view')
DROP VIEW title_view
GO
CREATE VIEW ENCRYPTION_view
(
DictionarySort ,
BinarySort,
DB
)
WITH ENCRYPTION
AS
SELECT
DictionarySort,
BinarySort,
DictionarySort+' '+BinarySort
FROM MySortTable
GO
SELECT * FROM ENCRYPTION_view
GO
查询经过加密过的存储过程的文本
SELECT
syscomments.id,
syscomments.text
FROM syscomments
JOIN sysobjects on syscomments.id=sysobjects.id AND sysobjects.name='ENCRYPTION_view'