zoukankan      html  css  js  c++  java
  • drop、truncate、delete的区别

    1、区别

    drop (删除表):删除内容和定义,释放空间

    把整个表去掉,以后要 新增数据是不可能的,除⾮新增⼀个表。 drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger)索引 (index),依赖于该表的存储过程/函数将被保留,但其状态会变为:invalid。 如果要删除表定义及其数据,请使⽤ drop table 语句。 

    truncate (清空表中的数据):删除内容、释放空间但不删除定义(保留表的数据结构)

    与drop不同的是,只是清空表数据⽽已。 注意:truncate不能删除具体⾏数据,要删就要把整个表清空了。 

    truncate与不带where的delete是一样的

    delete (删除表中的数据):delete 语句⽤于删除表中的⾏

    delete语句执⾏删除的过程是每次从表中删除⼀⾏,并且同时将该⾏的删除操作作为事务记录在⽇志中保存,以便进⾏进⾏回滚操作。

    2、其它

    • 对于由foreign key约束引⽤的表,不能使⽤truncate table ,⽽应使⽤不带where⼦句 的delete语句。
    • delete属于SQL的DML,事务提交的时候生效;truncate、drop 是数据库定义语⾔(ddl),操作⽴即⽣效。
    • 如果有⾃增列,truncate⽅式删除之后,⾃增列的值会被初始化,delete⽅式要分情 况(如果数据库被重启了,⾃增列值也会被初始化,数据库未被重启,则不变)
  • 相关阅读:
    on duplicate key update之多列唯一索引
    js 判断 微信浏览器 安卓/苹果 pc/移动
    history 和 hash (转)
    路由vue-router
    添加图标ico
    vue项目结构
    vue2.0项目的构建
    echarts使用 图例改变和默认不选中
    微信自定义菜单设置 及 emoji表情更换
    复制/设置剪切板内容 (浏览器/nativejs)
  • 原文地址:https://www.cnblogs.com/zhai1997/p/14101742.html
Copyright © 2011-2022 走看看