关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » SQL语言 »SQL数据库中的临时表详解

    SQL数据库中的临时表详解

    2010-09-08 16:03:00 出处:ITJS
    分享

    临时表在SQL数据库中,是非常重要的,接下来的SQL server内容就将为您详细介绍SQL数据库中临时表的特点及其使用,供您参考,希望对您学习SQL Server 能够有所帮助。

    临时表与永久表相似,但临时表存储在tempdb中,当不再使用时会自动删除。临时表有两种类型:本地和全局。它们在名称、可见性以及可用性上有区别。本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 SQL Server 实例断开连接时被删除。全局临时表的名称以两个数字符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server 断开连接时被删除。

    例如,假如创建了employees表,则任何在数据库中有使用该表的安全权限的用户都可以使用该表,除非已将其删除。假如数据库会话创建了本地临时表 #employees,则仅会话可以使用该表,会话断开连接后就将该表删除。假如创建了 ##employees 全局临时表,则数据库中的任何用户均可使用该表。假如该表在您创建后没有其他用户使用,则当您断开连接时该表删除。假如您创建该表后另一个用户在使用该表,则 SQL Server 将在您断开连接并且所有其他会话不再使用该表时将其删除。

    conn.Execute("SELECT newscomment_user_id AS user_id, COUNT(*) AS counter INTO #userNewsComment1 " _

             Set rs = conn.Execute("SELECT TOP 10 a.user_id AS trueId, * FROM userInfo AS a INNER JOIN userPoint AS b " _

              & " ON a.user_id = b.user_id INNER JOIN View_Company AS c ON a.user_id = c.user_id " _

              & " LEFT OUTER JOIN     #userNewsComment1 AS d ON d.user_id = a.user_id " _

              & " WHERE user_isProvinceNewsShow = 1 " _

              & placeCondition & " ORDER BY d.counter DESC ")

    conn.execute("drop table #userNewsComment1")

            '使用完记住删除临时表,这里是删除临时表对象

    这里是把临时表运用上

    1、临时表就是用户在创建表的时候添加了“#”前缀的表,其特点是根据进程独立。只有进程的拥有者有表的访问权限,其它用户不能访问该表;

    2、不同的用户进程,创建的临时表虽然“名字”相同,但是这些表之间相互并不存在任何关系;在SQLSERVER中,通过特别的命名机制保证临时表的进程独立性。

    3、定单和购买意向一般不会保存在真正的“临时表”中,而是实际的普通表,之所以称之为“临时表”,只是一种叫法而已。因为随着一个用户进程的结束,真正的临时表会自动清除,而定单和购买意向数据一般是定时清除,所以一定是保存在普通表中,具备数据的持久性特征(临时表最缺乏的就是数据的持久性)。

    4、真正的临时表利用了数据库临时表空间,由数据库系统自动进行维护,因此节省了表空间。并且由于临时表空间一般利用虚拟内存,大大减少了硬盘的I/O次数,因此也提高了系统效率。

    事务完毕或会话完毕数据自动清空,不必记得用完后删除数据。

          数据当前会话期可见,其它的会话只能看到其结构,只能看到自己的数据,各会话的数据互不干扰。 如静态创建临时表t_tmp(a number primary key,b number)

        用户A可以有数据                 用户B可以有数据

           1 2                          1 2

           2 3                          3 4

           3 4                          6 7

           4 5

    A)select count(*) from t_emp; 结果为4(B的数据它看不到)

    B)select count(*) from t_emp; 结果为3(A的数据它看不到)

    它们有相同的两条记录,但由于数据只作用于当前会话期,所以primary key不会限制它们,只限制当前用户下的A唯一主键。

    上述互不干扰特性可以用于处理中间计算过程,假如是常规表在同一时间仅能被一个会话操作,锁定资源拒绝被其它会话访问。

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    帝国CMS7.5编辑器上传图片取消宽高的三种方法

    帝国cms如何自动生成缩略图的实现方法

    Windows 12即将到来,将彻底改变人机交互

    帝国CMS 7.5忘记登陆账号密码怎么办?可以phpmyadmin中重置管理员密码

    帝国CMS 7.5 后台编辑器换行,修改回车键br换行为p标签

    Windows 11 版本与 Windows 10比较,新功能一览

    Windows 11激活产品密钥收集及专业版激活方法

    如何从 Windows 11 中完全删除/卸载 OneNote?无解!

    抖音安全与信任开放日:揭秘推荐算法,告别单一标签依赖

    ultraedit编辑器打开文件时,总是提示是否转换为DOS格式,如何关闭?

    IT头条

    华为Pura80系列新机预热,余承东力赞其复杂光线下的视频拍摄实力

    01:28

    阿里千问3开源首战告捷:全球下载破千万,国产AI模型崛起新高度!

    01:22

    DeepSeek R1小版本试升级:网友实测编程能力已达到国际一线水平

    23:15

    NVIDIA 与 Dell 合作,大规模交付 Blackwell AI 系统

    20:52

    Cerebras 以最快的 Llama 4 Maverick 性能引领 LLM 推理竞赛

    20:51

    技术热点

    PHP中的随机性——你觉得自己幸运吗?

    搞定Ubuntu Linux下WPA无线上网

    Java使用内存映射实现大文件的上传

    MySQL安全性指南

    MySQL两项性能的基本测试浅谈

    教您使用UniqueIdentifier选取SQL Server主键

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。