【数据库】临时表——基本知识

    临时表,大家肯定听说过吧,接下来的几篇博客,就和大家分享一下临时表。

    如下,是存储过程中使用的sql语句: 

基本概念:

    我们在创建一个基本实表(用户表)的时候,一般都是如下的写法:

    create table table(

         字段一  约束条件,

         字段二  约束条件,

         ......

     )

     而临时表,就是将我们要创建的字段随机的组合在一起,在查询的时候提高查询效率,当然了,创建的临时表也是在硬盘中的,不是在内存中,我们在使用完临时表会,直接可以释放临时表。比如,我们写sql语句为在数据库中的数据量很大很大的几个表中进行关联查询,但是实际中我们在这个查询中要用到的几个表查询字段很少很少,用用户表进行关联词查询比较耗时,这时候临时表就起到了很大的作用了。这样说来,临时表其实很视图很像很像的。它的查询、删除等语句和我们对用户表的操作的sql语句一样,唯一不同的是表名不一样而已,不一一列举。


    临时表有俩种类型,一种是局部临时表,用单个#表示,另一种是全局临时表,用##表示,例如:

    局部临时表:

    create table #table(

         字段一  约束条件,

         字段二  约束条件,

         ......

     )

    全局临时表:

    create table ##table(

         字段一  约束条件,

         字段二  约束条件,

         ......

     )

 

俩者区别:


      1、局部的临时表以#打头,而全局临时表以##打头。

      2、局部临时表是在一个事务中创建的,也就是这个事务完成之后,我们这个表也就随着要释放掉,

       一般来说,我们直接用sql语句的drop table #temp来释放,或者是在我们关掉数据库连接的时候,他就已经释放掉了,这个表仅仅是可以供创建的用户可见和使用,其他的用户是不可见的。

       相反,全局临时表是没有用户限制的,如果该表在创建后,没有其他用户使用,当你断开数据库链接时候,该表自动删除,释放资源,但是当你断开链接后,该表被其他人在使用,那么该表会依然存在,直到所有使用它的用户都断开链接,然后他才会将这个临时表删除。


事例分析:


       那么,临时表存在哪里了?

       我们现在就建立一个临时表:

       create table #test(
         id varchar(30) primary key,
         name varchar(30))

        看看他在那里?他在我们系统表中的临时表tempdb中,而且他创建的这个表名后面还跟着好多的数字。我们接下来就可以直接查询等操作来看这个表的信息啦。


      

       为什么创建的临时表,后面会有数字呢?


       比如在我的这个项目,已经被很多家医院使用了,假如很多医院同时调用这个方法,执行这个存储过程,那么就需要创建很多同样的名字,但是后面是不同的数字的临时表,这样也就不会重复了,也就是sql server会自动的根据临时表的名字(名字+数字)来分区有不同的用户创建。

       

       在项目的存储过程中,经常用到临时表,拿来了解一下。

   



  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值