sqlserver中drop、truncate和delete语句的⽤法虽然⼩编不建议⼤家去⽤命令删除数据库表中的东西,但是这些删除命令总有⽤的着的地⽅。
说到删除表数据的关键字,⼤家记得最多的可能就是delete了
然⽽我们做数据库开发,读取数据库数据.对另外的两兄弟⽤得就⽐较少了
现在来介绍另外两个兄弟,都是删除表数据的,其实也是很容易理解的
⽼⼤------drop
出没场合:drop table tb --tb表⽰数据表的名字,下同
绝招:删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除⾮新增⼀个表,例如:⼀个班就是⼀个表,学⽣就是表中的数据,学⽣的职务就是定义
drop table class,就是把整个班移除.学⽣和职务都消失
⽐如下⾯TestSchool数据库中有两张表[Classes]表和[Teacher]表
当执⾏下⾯代码之后
Classes表就被清楚,⼀⼲⼆净! 删除得⾮常暴⼒,作为⽼⼤实⾄名归
⽼⼆-----truncate
出没场合:truncate table tb
绝招:删除内容、释放空间但不删除定义。与drop不同的是,他只是清空表数据⽽已,他⽐较温柔.
同样也是⼀个班,他只去除所有的学⽣.班还在,职务还在,如果有新增的学⽣可以进去,也可以分配上职务
删除内容很容易理解,不删除定义也很容易理解,就是保留表的数据结构
上图就表现了:删除内容
执⾏语句之后,发现数据表的结构还在,也就是不删除定义
⾄于释放空间,看下下⾯两幅图.你们就会明⽩的
右图:Id列标识列,因之前delete过⾏数据,所以会出现标识列不连续(体现了delete删除是不释放空间的)
经过truncate table Teacher 之后再新增三条数据
右图:同样Id是标识列,发现插⼊数据的时候,标识列连续了(体现了truncate删除是释放空间)
sql中delete用法注意:truncate 不能删除⾏数据,要删就要把表清空
⽼三-----delete
出没场合:delete table tb --虽然也是删除整个表的数据,但是过程是痛苦的(系统⼀⾏⼀⾏地删,效率较truncate低)
或
delete table tb where 条件
绝招:删除内容不删除定义,不释放空间。三兄弟之中最容易欺负的⼀个
然后关于delete的就不详细说明了,⼤家都懂的
关于truncate的⼩⼩总结:
truncate table 在功能上与不带 WHERE ⼦句的 delete语句相同:⼆者均删除表中的全部⾏。
但 truncate ⽐ delete速度快,且使⽤的系统和事务⽇志资源少。
delete 语句每次删除⼀⾏,并在事务⽇志中为所删除的每⾏记录⼀项。所以可以对delete操作进⾏roll back
1、truncate 在各种表上⽆论是⼤的还是⼩的都⾮常快。如果有ROLLBACK命令Delete将被撤销,⽽ truncate 则不会被撤销。
2、truncate 是⼀个DDL语⾔,向其他所有的DDL语⾔⼀样,他将被隐式提交,不能对 truncate 使⽤ROLLBACK命令。
3、truncate 将重新设置⾼⽔平线和所有的索引。在对整个表和索引进⾏完全浏览时,经过 truncate 操作后的表⽐Delete操作后的表要快得多。
4、truncate 不能触发任何Delete触发器。
5、当表被清空后表和表的索引讲重新设置成初始⼤⼩,⽽delete则不能。
6、不能清空⽗表
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论