加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLserver--临时表、表变量、视图

发布时间:2020-12-12 14:23:52 所属栏目:MsSql教程 来源:网络整理
导读:局部临时表 create table #tbName(列信息); 表名前缀 # 只在当前会话中有效,不能跨连接访问 作用域范围类似 C# : 如果直接在连接会话中创建的,则当前连接断开后删除,如果是在存储过程中创建的则当前存储过程执行完毕后删除 全局临时表 create table ##tb
局部临时表 create table #tbName(列信息); 表名前缀# 只在当前会话中有效,不能跨连接访问 作用域范围类似C# 如果直接在连接会话中创建的,则当前连接断开后删除,如果是在存储过程中创建的则当前存储过程执行完毕后删除 全局临时表 create table ##tbName(列信息); 表名前缀## 多个会话可共享全局临时表 当创建全局临时表的会话断开,并且没有用户正在访问全局临时表时删除 ? 表变量declare @varT1 table(col1 int,col2 char(2));//存储更小量的数据,比临时表有更多的限制。 临时数据都存储在tempdb,当服务重新启动的时候,会重建tempdb. 临时表的应用:在对大数据量的表做复杂子查询的时候为了提高执行效率,降低内存消耗可以使用临时表。 ? 视图 ? 视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上 视图在操作上和数据表没有什么区别,但两者的差异是其本质是不同:数据表是实际存储记录的地方,然而视图并不保存任何记录。 相同的数据表,根据不同用户的不同需求,可以创建不同的视图(不同的查询语句) 视图的目的是方便查询,所以一般情况下不能对视图进行增删改 优点: 筛选表中的行降低数据库的复杂程度 防止未经许可的用户访问敏感数据 ? ? ? 普通视图 并不存储数据(虚拟表),访问的是真实表中的数据 使用视图注意事项: 1.视图中的查询不能使用order by ,除非指定了top语句。 视图被认为是一个虚拟表,表是一个集合,是不能有顺序的。而order by 则返回的是一个有顺序的,是一个游标。 在视图中使用select top percent + order by 问题。 所有查询的列,必须有列名,且列名必须唯一 create view vw_name as 后不能跟begin end. (*)索引视图 在视图上创建唯一聚集索引 数据会保存在数据库中而不是引用表中的数据。 ? create view vw_tab as select top 100 percent * from tab order by col1 desc—以上语句执行完毕以后查询select * from vw_tab也不会排序,与select * from vw_tab order by col1 desc不一样。top已经取得了上次order by 的结果前几个结果,并且top输出的结果没有再次排序,所以无法保证输出的结果是desc排序后的结果

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读