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

局部临时表
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排序后的结果
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值