SQL Server之视图基础知识
视图的概念
视图就是一张虚拟的表。视图在外观和行为上都类似于表,但它不需要实际的物理存储。
当创建一个视图时,实际上是在数据库里执行了一个select语句。
警告:如果用于创建视图的表被删除了,那么这个视图就不可访问了。如果对这个视图做查询,就会收到错误信息。
创建视图
create view view_name
as
sql_sentence
执行语句 select * from view_name
With Check Option
这是Create View语句里的一个选项,其目的是确保全部的Update和Insert语句满足视图定义里的条件。
例如:
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选项创建视图是更安全的做法,基表的引用完整性也得到了保护。
删除视图
drop view view_name
它有两个选项:restrict和cascade;如果使用了restrict选项进行删除操作,而其他视图在约束里有所引用,删除操作就会出错。
如果使用了cascade选项,而且其他视图或约束被引用了,drop view也会成功,而且底层的视图或数据也会被删除。
警告:在使用cascade选项时小心,避免重要的视图被意外的删除。
视图的注意事项:
在一定条件下,视图的底层数据可以进行更新:
视图不包括结合;
视图不包括Group By子句;
视图不包括Union语句;
视图不包含对伪字段RowNum的任何引用;
视图不包含任何组函数;
不能使用Distinct子句;
Where子句包含的嵌套的表表达式不能与From子句引用同一个表。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步