zoukankan      html  css  js  c++  java
  • Sql视图

    视图可看作一个虚拟表。常规视图本身并不存储实际的数据,而仅仅存储一个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_IndexedView
    WITH SCHEMABINDING
    AS
    SELECT p.Name,s.OrderQty,s.SalesOrderDetailID
    FROM Production.Product p
    inner join Sales.SalesOrderDetail s
    ON p.ProductID=s.ProductID
    GO
    --在视图上建立索引
    CREATE UNIQUE CLUSTERED INDEX indexedview_test1
    ON 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

  • 相关阅读:
    beta版本冲刺七
    beta版本冲刺六
    beta版本冲刺五
    beta版本冲刺四
    beta版本冲刺三
    Beta版本冲刺(二)
    项目评测
    beta版本冲刺(一)
    福大软工 · 最终作业
    福大软工 · 第十二次作业
  • 原文地址:https://www.cnblogs.com/xsj1989/p/5488719.html
Copyright © 2011-2022 走看看