zoukankan      html  css  js  c++  java
  • 1112第十一章视图第十二章游标(转载)

    1112第十一章视图第十二章游标


    第十一章 视图
    视图最多可以包含1024 列,创建视图时SELECT 查询中不能包含 COMPUTE 子句,COMPUTE BY 子句或INTO 关键字;除非SELECT 中包含TOP 或 FOR XML 子句,否则不能使用 ORDER BY 子句;定义视图的查询不能包含指定查询提示的OPTION子句,也不能包含TABLESAMPLE 子句。
    1.
    索引视图(物化视图) 必须创建一个唯一聚集索引 P296 
    创建索引视图时,不能引用其它视图,只能引用基表,并且基表必须要与创建视图位于同一个数据库中,二者的所有者也要一样,创建该视图时必须指定 SCHEMABINDING ,还要求 ANSI_NULLS 和 QUOTED_IDENTIFER 连接选项应当为ON,为视图创建的第一个 所以in必须是唯一聚集索引,随后创建的索引可以是飞聚集索引,也不要求唯一。
    CREATE VIEW vw_IndexDemo WITH SCHEMABINDING AS--必须加上架构绑定
    SELECT a,b,c
    FROM dbo.tab1
    WHERE A BETWEEN 0 AND 100
    CREATE UNIQUE CLUSTERED INDEX Index_vw ON vw_IndexDemo(a) --创建唯一聚集索引

    b.为了防止 基表的修改影响到视图的结构,可以使用 SCHEMABINDING 子句将视图绑定到基础表的架构。指定了SCHEMABINDING 后,要对影响视图结构的基表列或其它对象进行修改时,必须首先修改或删除视图定义本身,接触这种依赖关系。使用SCHEMABINDING 时,查询语句必须使用两部分名称,所有引用的对象必须在同一个数据库内,并且不允许在 SELECT 列表中使用 *.
    CREATE VIEW dbo.vwAvoidModi WITH SHEMABINDING --加上架构名,并带上 架构绑定。
    AS
        SELECT col1, col2, col3 FROM dbo.Tab  ----不能用 * ,要加上 架构名
    这之后,去修改 该视图的 基表时候,会报错误!可以有效防止基表被修改。

    c. P 299 更新视图中的数据
    重点: 通过视图去修改基表,如果 该视图是 多张基表关联生成,那么 更新的时候是通过 关联的 ON 后面的 那个 条件去到基表里找能匹配上的数据去更新,很可能因此而多更新了列,因为关联时候不止关联出一条数据的话。
    更为严重的是,很可能会因为这样更新后而丢掉应有的行。 P301 -302  为了防止出现丢失行,确保
    在数据经过修改后仍可通过视图看到数据,那么应在视图中使用 CHECK OPTION 选项,例子:
    CREATE VIEW dbo.vcs
    AS
    SELECT C.ClassID, c.ClassName...
    FROM dbo.Student AS S
    ON c.ClassID = s.ClassID
    WITH CHECK OPTION;
    重命名:
    sp_rename '','','';

    第十二章 游标
    Declare cursor 时候并不生成结果集,当执行 open cursor 时候才生成
    @@FETCH_STATUS -- 0  有fetch 成功
                                     -- 1 fetch 失败或者行不在结果集中
                                     -- 2 表示提取的行不存在。
    快速 只进游标,可滚动游标

    FOR READ ONLY  --- 只读游标
    FOR UPDATE -- 可更新游标
    SCROLL 或者 for update 时候就不能指定 Fast_forward 了
    P306  FETCH 语句定位关键字
    静态游标、动态游标、由键集驱动的游标
    默认情况下 游标是 动态的,在滚动游标提取行时,游标能够反映结果集中所做的最新更改,
    要建立一个静态游标, 可以在 游标名称后面添加 INSENSITIVE 关键字。然而,及时没有使用这个关键字,
    当某个游标的 SELECT 语句有DISTINCT ,UNION,GROUP BY 或者 HAVING 关键字时候,处理游标的方式与指定INSENSITIVE 关键字一样,这时候结果集都是被聚合了。。。
    P309 - 310 使用可更新游标进行数据更新。。。
    第十一章 视图
    视图最多可以包含1024 列,创建视图时SELECT 查询中不能包含 COMPUTE 子句,COMPUTE BY 子句或INTO 关键字;除非SELECT 中包含TOP 或 FOR XML 子句,否则不能使用 ORDER BY 子句;定义视图的查询不能包含指定查询提示的OPTION子句,也不能包含TABLESAMPLE 子句。
    1.
    索引视图(物化视图) 必须创建一个唯一聚集索引 P296 
    创建索引视图时,不能引用其它视图,只能引用基表,并且基表必须要与创建视图位于同一个数据库中,二者的所有者也要一样,创建该视图时必须指定 SCHEMABINDING ,还要求 ANSI_NULLS 和 QUOTED_IDENTIFER 连接选项应当为ON,为视图创建的第一个 所以in必须是唯一聚集索引,随后创建的索引可以是飞聚集索引,也不要求唯一。
    CREATE VIEW vw_IndexDemo WITH SCHEMABINDING AS--必须加上架构绑定
    SELECT a,b,c
    FROM dbo.tab1
    WHERE A BETWEEN 0 AND 100
    CREATE UNIQUE CLUSTERED INDEX Index_vw ON vw_IndexDemo(a) --创建唯一聚集索引

    b.为了防止 基表的修改影响到视图的结构,可以使用 SCHEMABINDING 子句将视图绑定到基础表的架构。指定了SCHEMABINDING 后,要对影响视图结构的基表列或其它对象进行修改时,必须首先修改或删除视图定义本身,接触这种依赖关系。使用SCHEMABINDING 时,查询语句必须使用两部分名称,所有引用的对象必须在同一个数据库内,并且不允许在 SELECT 列表中使用 *.
    CREATE VIEW dbo.vwAvoidModi WITH SHEMABINDING --加上架构名,并带上 架构绑定。
    AS
        SELECT col1, col2, col3 FROM dbo.Tab  ----不能用 * ,要加上 架构名
    这之后,去修改 该视图的 基表时候,会报错误!可以有效防止基表被修改。

    c. P 299 更新视图中的数据
    重点: 通过视图去修改基表,如果 该视图是 多张基表关联生成,那么 更新的时候是通过 关联的 ON 后面的 那个 条件去到基表里找能匹配上的数据去更新,很可能因此而多更新了列,因为关联时候不止关联出一条数据的话。
    更为严重的是,很可能会因为这样更新后而丢掉应有的行。 P301 -302  为了防止出现丢失行,确保
    在数据经过修改后仍可通过视图看到数据,那么应在视图中使用 CHECK OPTION 选项,例子:
    CREATE VIEW dbo.vcs
    AS
    SELECT C.ClassID, c.ClassName...
    FROM dbo.Student AS S
    ON c.ClassID = s.ClassID
    WITH CHECK OPTION;
    重命名:
    sp_rename '','','';

    第十二章 游标
    Declare cursor 时候并不生成结果集,当执行 open cursor 时候才生成
    @@FETCH_STATUS -- 0  有fetch 成功
                                     -- 1 fetch 失败或者行不在结果集中
                                     -- 2 表示提取的行不存在。
    快速 只进游标,可滚动游标

    FOR READ ONLY  --- 只读游标
    FOR UPDATE -- 可更新游标
    SCROLL 或者 for update 时候就不能指定 Fast_forward 了
    P306  FETCH 语句定位关键字
    静态游标、动态游标、由键集驱动的游标
    默认情况下 游标是 动态的,在滚动游标提取行时,游标能够反映结果集中所做的最新更改,
    要建立一个静态游标, 可以在 游标名称后面添加 INSENSITIVE 关键字。然而,及时没有使用这个关键字,
    当某个游标的 SELECT 语句有DISTINCT ,UNION,GROUP BY 或者 HAVING 关键字时候,处理游标的方式与指定INSENSITIVE 关键字一样,这时候结果集都是被聚合了。。。
    P309 - 310 使用可更新游标进行数据更新。。。
    如果有来生,一个人去远行,看不同的风景,感受生命的活力。。。
  • 相关阅读:
    发现对各类项目有用的不同JavaScript的Web UI
    PowerDesigner 15.1 安装步骤详细图解及破解
    数据库设计工具PowerDesigner基础普及
    Vistual Studio 2010(VS2010)安装 MVC3.0具体方法
    pb的网络资源【转】
    powerbuider11 C/S 转换为B/S
    转:将可执行文件注册成系统windows服务
    WCF绑定类型选择(转)
    (转)找增强方法总结
    ALV简单模板1
  • 原文地址:https://www.cnblogs.com/Frank99/p/5400001.html
Copyright © 2011-2022 走看看