博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1112第十一章视图第十二章游标(转载)
阅读量:5366 次
发布时间:2019-06-15

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

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 使用可更新游标进行数据更新。。。

转载于:https://www.cnblogs.com/Frank99/p/5400001.html

你可能感兴趣的文章
Socket常见错误
查看>>
百度地图2.0API和3.0API。你想要的百度地图的这都有
查看>>
专业词汇
查看>>
星期五的收获
查看>>
proxmox 去除订阅提示
查看>>
使用Html.EditorFor()为文本框加上maxlength,placeholder等属性
查看>>
[转]后缀数组求最长重复子串
查看>>
设计模式——外观模式详解
查看>>
MVC3 控件
查看>>
mysql (一)
查看>>
photoshop图层样式初识1
查看>>
【.NET】使用HtmlAgilityPack抓取网页数据
查看>>
typedef的使用
查看>>
基于位置的本地商铺个性化推荐
查看>>
职场上一个人情商高的十种表现
查看>>
【底层原理】深入理解Cache (下)
查看>>
Elasticsearch安装中文分词插件IK
查看>>
进阶4:常见函数-单行函数
查看>>
简述企业信息化与企业架构关系
查看>>
npoi List 泛型导出
查看>>