当前位置:  数据库>sqlserver

sql中的truncate、delete及drop的区别

    来源: 互联网  发布时间:2014-08-29

    本文导语:  这里跟大家说说truncate、delete及drop的区别。 注意:这里说的delete是指不带where子句的delete语句 1)、相同点 truncate和不带where子句的delete, 以及drop都会删除表内的数据 2)、不同点 1、truncate和 delete只删除数据不删除表的结构(定...

这里跟大家说说truncate、delete及drop的区别。
注意:这里说的delete是指不带where子句的delete语句

1)、相同点
truncate和不带where子句的delete, 以及drop都会删除表内的数据

2)、不同点
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,再重新导入/插入数据。


    
 
 

您可能感兴趣的文章:

  • java命名空间javax.sql.rowset.serial类serialblob的类成员方法: truncate定义及介绍
  • t-sql清空表数据的两种方式示例(truncate and delete)
  • java命名空间javax.sql.rowset.serial类serialclob的类成员方法: truncate定义及介绍
  • 怎样解决出现java.sql.SQLException: [Microsoft][SQLServer JDBC Driver][erver]String or binary data would be truncated.问题?
  • java命名空间java.sql接口clob的类成员方法: truncate定义及介绍
  • 一次 sql server 日志恢复的记录(搞定drop和truncate)
  • java命名空间java.sql接口blob的类成员方法: truncate定义及介绍
  • 网络技术 iis7站长之家
  • java命名空间java.sql枚举clientinfostatus的类成员方法: reason_value_truncated定义及介绍
  • java命名空间javax.sql.rowset.spi接口syncresolver的类成员方法: delete_row_conflict定义及介绍
  • 如何判断一条sql(update,delete)语句是否执行成功
  • sql语言中delete删除命令语句详解
  • ORACLE SQL-UPDATE、DELETE、INSERT优化和使用技巧分享
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL Server统计SQL语句执行时间的脚本
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口databasemetadata的类成员方法: getsqlkeywords定义及介绍
  • SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)
  • java命名空间java.sql接口rowid的类成员方法: tostring定义及介绍
  • SQL客户端管理工具 SQuirreL SQL Client
  • java命名空间javax.sql.rowset接口joinrowset的类成员方法: getwhereclause定义及介绍
  • 如何处理此错误:java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]没有执行可选特性
  • java命名空间java.sql接口statement的类成员方法: execute定义及介绍
  • sql2005 大数据量检索分页的sql代码
  • java命名空间java.sql接口resultset的类成员方法: getcursorname定义及介绍
  • 如何实现连接一次数据库,提交多个sql语句。(sql的批处理)
  • java命名空间java.sql接口resultsetmetadata的类成员方法: getcolumntype定义及介绍
  • 微软网站下载的Ms SQL Server2000 JDBC Driver,必须用英文版的SQL server2000吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3