SQL删除语句DROP、TRUNCATE、 DELETE 的区别_MsSql

来源:脚本之家  责任编辑:小易  

--删除表结构2113,并删除里边的数据及在这5261个表上的索引等等drop table 表名4102--清空数据1653,只是数据truncate table 表名--按条件删除数据delete from 表名 where 条件--删除全部数据,但不释放空间delete from 表名 这么看,delete from 表名和truncate table 表名似乎是一样的,但是truncate 执行后会释放数据库的空间,而delete不会释放空间drop table 表名 的话,也是可以释放空间的执行truncate 和drop后,会导致触发器,存储过程,函数等等的失效,truncate的话,可以重新编译一下,即可,但是drop后,可能就会永久失效了,您好,drop的意思是2113删除表或者库。例如drop database 图书5261:删除4102图书库,是库删除了,库的所有的东西都没了。delete是删除表1653里的数据,是一行数据,不是删除某个数据,是一行,比如说是删除一个人的整条读者数据。 TRUNCATE是删除某个数据,具体到某个,列仍然保留,只是数据没了。希望能解决你的问题,SQL中使用delete删除2113数据后,是可以进行回5261滚恢复的,具体方法如下1 连接到被删4102除数据库的Db 打开log explorer 选择 "file "-> "attach log file "-> 选择服务器1653和登陆方式-> "connect "-> 选择 "数据库 "-> "attach " 2 查看日志 在左面操作项目的对话框中选择 "browse "项目-> "view log "-> 就可以看到当前的Log记录了 3 恢复数据 右键某一条log记录,选择 "undo transation "-> "选择保存文件名和路径 "-> 然后打开该文件到查询分析器里执行 T-sql代码就可以了 需要注意的是:truncate和drop删除数据后,无法恢复,所以使用删除命令时,一定要谨慎,做好备份,drop 是把表和 数据 都删掉了 delete是把表里的某个元组 及里面的某个 数据 删掉了 truncate是把表里的数据全部 删掉 但表的结果 没删掉 只是 数据全删掉了,--删除表结构,2113并删除里边的数据及在5261这个表上的索引等等drop table 表名--清空数据,只是数4102据truncate table 表名--按条件1653删除数据delete from 表名 where 条件--删除全部数据,但不释放空间delete from 表名--你自己建张表都试一下就知道,效果很明显www.zgxue.com防采集请勿采集本网。

DROP:

(1) DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并

DROP TABLE test;

简单来说,如果是对于 TableA 来说 1、drop table TableA ,删除表,然后你用 select * from TableA 已经提示查询出错了,表不存在 2、truncate table TableA 清空表中的数据,不能加条件,记住是全清。这个速度会比较快, 而且并不产生任何日志

删除表test,并释放空间,将test删除的一干二净。

drop table emp 把整个emp表从数据库中删除了,你查询select * from emp时会报错,提示表名为emp的表不存在 delete from emp where empno=257 delete删除的是表里某条数据,删除的是内容 truncate table emp 同样删除的也是内容,跟delete的区别

TRUNCATE:

drop table xx --xx是数据表的名字 作用:删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表。 drop table test,就是把整个表 移除.里面的数据都消失 比如下面有一个[FusionChartsDB]数据库中的test

TRUNCATE test;

..网上不是有很多吗,, 给你转个, 转: 1. truncate和 delete只删除数据不删除表的结构(定义) drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的 存储过程/函数将保留,但是变为invalid状态. 2.delet

删除表test里的内容,并释放空间,但不删除表的定义,表的结构还在。

DELETE:

1、删除指定数据

删除表test中年龄等于30的且国家为US的数据

DELETE FROM test WHERE age=30 AND country='US';

2、删除整个表

仅删除表test内的所有内容,保留表的定义,不释放空间。

DELETE FROM test 或者 TRUNCATE test;

truncate table 命令将快速删除数据表中的所有记录,但保留数据表结构。这种快速删除与 delete from 数据表的删除全部数据表记录不一样,delete 命令删除的数据将存储在系统回滚段中,需要的时候,数据可以回滚恢复,而truncate 命令删除的数据是不可以恢复的。

相同点

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, 再重新导入/插入数据。

以上就是SQL删除语句DROP、TRUNCATE、 DELETE 的区别的详细内容,更多关于sql删除语句的资料请关注真格学网其它相关文章! 您可能感兴趣的文章:MySQL 如何查找并删除重复记录的实现MySQL 快速删除大量数据(千万级别)的几种实践方案详解MySQL 处理重复数据的方法(防止、删除)SQL 创建、更新和删除视图的方法MySQL触发器基本用法详解【创建、查看、删除等】mysql数据库常见基本操作实例分析【创建、查看、修改及删除数据库】Window下如何恢复被删除的Mysql8.0.17 Root账户及密码Linux下彻底删除Mysql 8.0服务的方法Linux实现定时备份MySQL数据库并删除30天前的备份文件linux定时备份MySQL数据库并删除以前的备份文件(推荐)

三者的区别是:delete from 表名5261执行delete后,表结构依4102然存在,只删除表中全部数据。drop from 表名 执行delete后,表结构和数据全部被删1653除。并且delete执行后还有个提交的过程,drop就一步操作完成。删除速度一般来说drop快于truncate 快于 delete,小心使用 drop 和 truncate,尤其没有备份的时候,否则数据找不回来。相同点:truncate和不带where子句的delete,以及drop 都会删除表内的数据内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • 合并sql脚本文件的方法分享
  • 动态sql语句使用心得
  • 配置sql server数据库恢复模式(2种方法)
  • sql语句优化之sql server(详细整理)
  • sql注入全过程深入分析
  • 何谓sqlserver参数嗅探问题
  • sql中的开窗函数详解可代替聚合函数使用
  • sql 复合查询条件(and,or,not)对null值的处理方法
  • sql2005开启xp_cmdshell
  • mssql中得到当天数据的语句
  • SQL删除语句中Drop、DELETE、TRUNCATE三者有什么区...
  • 谁能告诉我SQL server里,删除语句 Drop、DELETE、...
  • 详解SQL中drop,delete和truncate的异同
  • delete,truncate,drop,这三者的详细区别是什么,请...
  • sql中drop,truncate和delete的区别
  • 在sql server中truncate、delete、drop删除表的区...
  • drop,truncate和delete的区别
  • sql语句中删除表数据drop,truncate和delete的区别
  • 详解MySQL中DROP,TRUNCATE 和DELETE的区别
  • oracle中delete,truncate 和 drop的区别
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页mysql 如何查找并删除重复记录的实现mysql 快速删除大量数据(千万级别)的几种实践方案详解mysql 处理重复数据的方法(防止、删除)sql 创建、更新和删除视图的方法mysql触发器基本用法详解【创建、查看、删除等】mysql数据库常见基本操作实例分析【创建、查看、修改及删除数据库】window下如何恢复被删除的mysql8.0.17 root账户及密码linux下彻底删除mysql 8.0服务的方法linux实现定时备份mysql数据库并删除30天前的备份文件linux定时备份mysql数据库并删除以前的备份文件(推荐)合并sql脚本文件的方法分享动态sql语句使用心得配置sql server数据库恢复模式(2种方法)sql语句优化之sql server(详细整理)sql注入全过程深入分析何谓sqlserver参数嗅探问题sql中的开窗函数详解可代替聚合函数使用sql 复合查询条件(and,or,not)对null值的处理方法sql2005开启xp_cmdshellmssql中得到当天数据的语句sql server 2012 安装图解教程(附sql server数据库入门学习总结microsoft sql server 2012 数据sql重复记录查询的几种方法win7系统安装sqlserver2000的详细sqlserver中distinct的用法(不重sql server错误代码大全及解释(sql-order by 多字段排序(升序、sql将一个表中的数据插入到另一个用sql语句添加删除修改字段、一些sql substring提取部分字符串sqlserver 优化sql语句 in 和not in的替代sqlserver 导出插入脚本代码sql查询表中根据某列排序的任意行语句深入浅析sql中的group by 和 having 用法浅谈sqlserver的负载均衡问题sql server索引的原理深入解析sqlserver语句的执行时间显示的统计结果是详细分析sqlserver中的小数类型(float和sql 自定义百分比转换小数函数代码
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved