• 首  页
  • 最新公告
  • 域名帮助
  • 空间帮助
  • 主机帮助
  • 邮局帮助
  • 数据库帮助
  • 网站建设帮助
  • 财务帮助
  • CDN加速
  • 最新公告
  • 域名帮助
  • 空间帮助
    • VPS主机
    • 虚拟主机
  • 主机帮助
    • win服务器应用及安全
    • linux服务器应用及安全
  • 邮局帮助
  • 数据库帮助
    • MSSQL数据库
    • ORACLE数据库
    • ACCESS数据库
    • MYSQL数据库
    • 数据库基础与原理
  • 网站建设帮助
    • Html语言教程
    • ASP语言程序
    • PHP语言程序
    • DIV+CSS语言程序
    • SEO优化教程
    • JAVA语言程序
  • 财务帮助
  • CDN加速
千喜网络 ---数据库帮助 ---MSSQL数据库
SQL Server中truncate、delete和drop的异同点
发布时间:2012-12-2 14:26:43   阅读次数:

相同点:

truncate和不带where子句的delete,以及drop都会删除表内的数据

不同点:

1. truncate和delete只删除数据不删除表的结构(定义)

drop语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index);依赖于该表的存储过程/函数将保留,但是变为 invalid 状态。

2. delete语句是数据库操作语言(dml),这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发。

truncate、drop是数据库定义语言(ddl),操作立即生效,原数据不放到rollback segment中,不能回滚,操作不触发trigger。

3.delete语句不影响表所占用的extent,高水线(high watermark)保持原位置不动。

显然drop语句将表所占用的空间全部释放。

truncate语句缺省情况下见空间释放到minextents个extent,除非使用reuse storage;truncate 会将高水线复位(回到最开始)。

4.速度,一般来说: drop> truncate > delete

5.安全性:小心使用 drop和truncate,尤其没有备份的时候.否则哭都来不及。

使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.

想删除表,当然用drop

想保留表而将所有数据删除,如果和事务无关,用truncate即可。如果和事务有关,或者想触发trigger,还是用delete。

如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。

网站关键词:千喜网络 云主机租用 服务器托管 CDN加速 虚拟主机 网站空间 域名注册 企业邮局 数据库
上一章:利用索引提高SQL Server数据处理的效率   下一章:SQL语句导入导出大全   
中华人民共和国增值电信业务经营许可证:陕B2-20100043
地址:西安市莲湖路37号省外贸大楼623室 全国统一服务热线:400-600-7112
CopyRight@2009-2012 Qianxinet.com 版权所有 西安千喜网络科技有限公司