博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sql视图
阅读量:4953 次
发布时间:2019-06-12

本文共 1121 字,大约阅读时间需要 3 分钟。

视图可看作一个虚拟表。常规视图本身并不存储实际的数据,而仅仅存储一个Select语句和所涉及表的数据集合。

视图的优点:

1.视图隐藏了底层的表结构,简化了数据访问操作

2.因为隐藏了底层的表结构,所以大大加强了安全性,用户只能看到视图提供的数据
3.使用视图,方便了权限管理,让用户对视图有权限而不是对底层表有权限进一步加强了安全性
4.视图提供了一个用户访问的接口,当底层表改变后,改变视图的语句来进行适应,使已经建立在这个视图上客户端程序不受影响

视图的分类:

普通视图(Regular View)

索引视图(Indexed View)
分割视图(Partitioned View)

 

注意事项:

在View中,除非有TOP关键字,否则不能用Order By子句,将会大大降低效率

View在每个Schema中命名必须独一无二
View嵌套不能超过32层,一般最多嵌套2层,否则会降低效率
Compute,compute by,INTO关键字不允许出现在View中
View不能建立在临时表上
View不能对全文索引进行查询

 

索引视图:

索引视图涉及的基本表必须ANSI_NULLS设置为ON

索引视图必须设置ANSI_NULLS和QUOTED_INDETIFIER为ON
索引视图只能引用基本表
SCHEMABINDING必须设置
定义索引视图时必须使用Schema.ViewName这样的全名
索引视图中不能有子查询
avg,max,min,stdev,stdevp,var,varp这些聚合函数不能用

--建立视图CREATE VIEW v_Test_IndexedViewWITH SCHEMABINDINGASSELECT p.Name,s.OrderQty,s.SalesOrderDetailIDFROM Production.Product pinner join Sales.SalesOrderDetail sON p.ProductID=s.ProductIDGO--在视图上建立索引CREATE UNIQUE CLUSTERED INDEX indexedview_test1ON v_Test_IndexedView(SalesOrderDetailID) go

--执行sql查询

SELECT p.Name,s.OrderQty

FROM Production.Product p
inner join Sales.SalesOrderDetail s
ON p.ProductID=s.ProductID

 

转载于:https://www.cnblogs.com/xsj1989/p/5488719.html

你可能感兴趣的文章
【设计模式】工厂模式
查看>>
两个表格中数据不用是一一对应关系--来筛选不同数据,或者相同数据
查看>>
javascript 继承
查看>>
String类型转int类型方法
查看>>
客户数据库出现大量cache buffer chains latch
查看>>
機械の総合病院 [MISSION LEVEL: C]
查看>>
实战练习细节(分行/拼接字符串/字符串转int/weak和copy)
查看>>
Strict Standards: Only variables should be passed by reference
查看>>
hiho_offer收割18_题解报告_差第四题
查看>>
AngularJs表单验证
查看>>
静态方法是否属于线程安全
查看>>
fegin 调用源码分析
查看>>
Linux的基本命令
查看>>
02号团队-团队任务3:每日立会(2018-12-05)
查看>>
SQLite移植手记1
查看>>
C# windows程序应用与JavaScript 程序交互实现例子
查看>>
HashMap详解
查看>>
js05-DOM对象二
查看>>
mariadb BINLOG_FORMAT = STATEMENT 异常
查看>>
C3P0 WARN: Establishing SSL connection without server's identity verification is not recommended
查看>>