TRUNCATE TABLE和DELETE FROM

TRUNCATE TABLE和DELETE FROM都是用于删除表中数据的SQL语句,但它们之间存在一些明显的区别:

  1. 操作方式:TRUNCATE TABLE是通过一次性清空整个表的内容来删除数据,相当于删除并重新创建一个空表。而DELETE FROM则是逐行删除表中的数据,可以带有条件进行过滤。
  2. 效率:TRUNCATE TABLE操作通常比DELETE FROM更高效。这是因为TRUNCATE TABLE直接释放表的存储空间,并且不记录日志,不触发触发器和外键约束。而DELETE FROM操作是逐行删除,每次删除都需要记录事务日志以支持回滚操作,同时还需要触发相关的触发器和外键约束。
  3. 释放空间:TRUNCATE TABLE删除数据后会释放表所占用的内存空间,而DELETE FROM则不会。
  4. 可撤销性:DELETE FROM操作删除数据后可以撤销,而TRUNCATE TABLE操作删除数据后不可撤销。
  5. 语句格式:TRUNCATE TABLE的语句格式为:TRUNCATE TABLE 表名;而DELETE FROM的语句格式为:DELETE FROM 表名 [WHERE 条件]。

总的来说,TRUNCATE TABLE和DELETE FROM都是用于删除表中数据的SQL语句,但TRUNCATE TABLE通常更高效,并且会释放表所占用的内存空间,不过删除后不可撤销。而DELETE FROM则是逐行删除数据,可以带有条件进行过滤,删除后可撤销,但效率相对较低。选择哪种方式取决于具体的需求和场景。

MySql语句

  $sql .= "delete from " . $db->table('columns') . " where is_system=0;";
        $sql .= "delete from " . $db->table('news') . " where c_toid <>" . cat_system . ";"; //系统分类的文章不删除
        $sql .= "TRUNCATE TABLE " . $db->table('order_service') . ";";
        $sql .= "TRUNCATE TABLE " . $db->table('order_goods') . ";";

        $db->query($sql);

连续执行删除操作

     //删除相关图片
        del_dir(upload_brand);
        del_dir(upload_cat);
        del_dir(upload_goods);
        del_dir(upload_news);
        del_dir(upload_comment);
        del_dir(upload_common);
        del_dir(upload_service);

@漏刻有时

10-02 01:59