【SQL Server】三种基本表的删除方式(drop,delete,truncate)辨析 |
您所在的位置:网站首页 › sj粉丝名含义 › 【SQL Server】三种基本表的删除方式(drop,delete,truncate)辨析 |
【SQL Server】三种基本表的删除方式(drop,delete,truncate)辨析
一、drop
SQL语句 drop table 表名含义:删除内容和定义,释放空间。简单来说就是把整个表从数据库去掉。如果想再添加数据,只能再新建一个表。 例如:一个班就是一个表,学生就是表中的数据,,学生的职务就是定义。 drop table class 就是把整个班移除,学生和职务都消失。 二、truncateSQL语句 truncate table 表名含义:删除内容、释放空间但不删除定义。不删除定义也很容易理解就是保留表的数据结构。与drop不同的是,他只是达到清空表数据的效果而已。如果想再添加数据,可以直接添加。 例如:同样也是一个班,他只去除所有的学生。班还在,职务还在,如果有新增的学生可以进去,也可以分配上职务。 注意:truncate 不能删除行数据,要删就要把表清空 三、deleteSQL语句 1)delete table 表名 2)delete table 表名 where 条件含义:删除内容、不删除定义、不释放空间。虽然是删除整个表的数据,但是其是一行一行地删的,所以会比truncate的效率低。 补充:1、truncate在功能上与不带where 子句的 delete语句相同:均删除表中的全部行。 2、truncate 比 delete速度快,且使用的系统和事务日志资源少。 3、delete 语句每次删除一行,并在事务日志中为所删除的每行记录一项。所以可以对delete操作进行rollback。 4、truncate 在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令Delete将被撤销,而 truncate 则不会被撤销。 5、truncate 是一个DDL语言,像其他所有的DDL语言一样,他将被隐式提交,不能对 truncate 使用rollback命令。 6、truncate 将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过 truncate 操作后的表比delete操作后的表要快得多。 7、truncate 不能触发任何Delete触发器。 8、当使用truncate将表清空后,表和表的索引将重新设置成初始大小,而delete则不能,delete只能继续按删除前索引大小重新开始。 9、truncate不能清空父表。 参考博客:https://www.cnblogs.com/accumulater/p/6077558.html |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |