SQL Server之视图基础知识
2011-07-13 09:59
375 查看
视图的概念
视图就是一张虚拟的表。视图在外观和行为上都类似于表,但它不需要实际的物理存储。
当创建一个视图时,实际上是在数据库里执行了一个select语句。
警告:如果用于创建视图的表被删除了,那么这个视图就不可访问了。如果对这个视图做查询,就会收到错误信息。
创建视图
create view view_name
as
sql_sentence
执行语句 select * from view_name
With Check Option
这是Create View语句里的一个选项,其目的是确保全部的Update和Insert语句满足视图定义里的条件。
例如:
create view view_score
as
select sid,fid,score from score where fid is not null
with check option
在这个范例里,with check option确保了fid里的数不能为null。
当插入数据:insert into view_score values(null,59),系统会提示错误。
警告:在基于视图创建另一个视图时,with check option有两个选项:cascaded和local,其中cascaded是默认选项。在对基表进行更新时,cascade
选项会检查所有底层视图,所有完整性约束,以及新视图的定义条件。local选项只检查两个视图的完整性约束和新视图的定义条件,不检查底层的表。因
此,使用cascade选项创建视图是更安全的做法,基表的引用完整性也得到了保护。
[b]删除视图
[/b]drop view view_name
它有两个选项:restrict和cascade;如果使用了restrict选项进行删除操作,而其他视图在约束里有所引用,删除操作就会出错。
如果使用了cascade选项,而且其他视图或约束被引用了,drop view也会成功,而且底层的视图或数据也会被删除。警告:在使用cascade选项时小心,避免重要的视图被意外的删除。
视图的注意事项:
在一定条件下,视图的底层数据可以进行更新:
视图不包括结合;
视图不包括Group By子句;
视图不包括Union语句;
视图不包含对伪字段RowNum的任何引用;
视图不包含任何组函数;
不能使用Distinct子句;
Where子句包含的嵌套的表表达式不能与From子句引用同一个表。
视图就是一张虚拟的表。视图在外观和行为上都类似于表,但它不需要实际的物理存储。
当创建一个视图时,实际上是在数据库里执行了一个select语句。
警告:如果用于创建视图的表被删除了,那么这个视图就不可访问了。如果对这个视图做查询,就会收到错误信息。
创建视图
create view view_name
as
sql_sentence
执行语句 select * from view_name
With Check Option
这是Create View语句里的一个选项,其目的是确保全部的Update和Insert语句满足视图定义里的条件。
例如:
create view view_score
as
select sid,fid,score from score where fid is not null
with check option
在这个范例里,with check option确保了fid里的数不能为null。
当插入数据:insert into view_score values(null,59),系统会提示错误。
警告:在基于视图创建另一个视图时,with check option有两个选项:cascaded和local,其中cascaded是默认选项。在对基表进行更新时,cascade
选项会检查所有底层视图,所有完整性约束,以及新视图的定义条件。local选项只检查两个视图的完整性约束和新视图的定义条件,不检查底层的表。因
此,使用cascade选项创建视图是更安全的做法,基表的引用完整性也得到了保护。
[b]删除视图
[/b]drop view view_name
它有两个选项:restrict和cascade;如果使用了restrict选项进行删除操作,而其他视图在约束里有所引用,删除操作就会出错。
如果使用了cascade选项,而且其他视图或约束被引用了,drop view也会成功,而且底层的视图或数据也会被删除。警告:在使用cascade选项时小心,避免重要的视图被意外的删除。
视图的注意事项:
在一定条件下,视图的底层数据可以进行更新:
视图不包括结合;
视图不包括Group By子句;
视图不包括Union语句;
视图不包含对伪字段RowNum的任何引用;
视图不包含任何组函数;
不能使用Distinct子句;
Where子句包含的嵌套的表表达式不能与From子句引用同一个表。
相关文章推荐
- SQL Server基础知识之:设计和实现视图
- SQL Server基础知识之:设计和实现视图
- 【Demo 0004】屏幕、窗体及视图基础知识
- SQL Server 连接基础知识
- Oracle基础知识(十二) - 视图
- SQL Server 索引基础知识(3)----测试中一些常看的指标和清除缓存的方法
- SQL Server 索引基础知识(2)----聚集索引,非聚集索引
- SQL Server之游标的基础知识
- SQL Server之存储过程基础知识
- SQL server 的基础知识的学习(1)
- SQL Server 索引基础知识----聚集索引,非聚集索引 (转)
- UI基础知识 -- 视图控制器继承的一些方法
- SQL Server 索引基础知识
- SQL Server 连接基础知识
- IOS开发入门(12)-表视图I:基础知识
- Yii框架官方指南系列9——基础知识:视图
- SQL Server 索引基础知识(4)----主键与聚集索引
- SQL Server 索引基础知识(3)----测试中一些常看的指标和清除缓存的方法
- SQL Server 存储过程之基础知识(转)
- SQL Server基础知识