• sql:建表删表语句,其中delete,truncate,drop区别


    前言:建表用create table; 删表时:delete table,truncate table,drop table啥区别呢?
    下面举例说明

    一、语句举例

    1、创建数据表

    CREATE TABLE `third_stock_sync_log` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
      `out_in_type` tinyint(2) NOT NULL DEFAULT '1' COMMENT 'oms出()库类型 1-出库 2-入库',
      `out_in_platform` tinyint(2) NOT NULL DEFAULT '1' COMMENT '出()货方: 1-2-3-4-丁',
      `platform_stock_order_no` varchar(100) NOT NULL COMMENT '三方平台出()库单号',
      `platform_stock_batch_no` varchar(100) DEFAULT '' COMMENT '三方平台出()库单批次号',
      `save_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '解析保存状态:0-失败,1-成功',
      `sync_upper_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '同步上游状态:0-失败,1-成功',
      `sync_lower_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '同步下游状态:0-失败,1-成功',
      `message_json` longtext NOT NULL COMMENT 'json报文信息',
      `job_batch_no` varchar(20) NOT NULL DEFAULT '' COMMENT 'job拉取批次号',
      `retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '重试次数',
      `remark` varchar(1024) NOT NULL DEFAULT '' COMMENT '备注',
      `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
      `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',
      `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除:0-未删除,1-已删除',
      PRIMARY KEY (`id`),
      KEY `idx_platform_stock_order_no` (`platform_stock_order_no`),
      KEY `idx_platform_stock_batch_no` (`platform_stock_batch_no`),
      KEY `idx_job_batch_no` (`job_batch_no`) USING BTREE
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='出()库单-同步日志表';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    2.1、删除表数据(delete)

    • 删除表的全部数据
    delete from third_stock_sync_log; //不加条件,删除全部数据
    delete from third_stock_sync_log where 1=1; //加恒成立的条件,删除全部数据
    
    • 1
    • 2
    • 删除表的部分数据
    delete from third_stock_sync_log where platform_stock_order_no = '123'; //根据条件,删除部分数据
    
    • 1

    2.2、清空表数据(truncate )

    truncate table third_stock_sync_log;
    
    • 1

    3、删除表

    drop table third_stock_sync_log;
    
    • 1

    二、delete 、truncate 、drop 之间区别

    1、功能

    delete 和 truncate,只删除表中数据不删除表的结构;
    ( delete删除表中数据,不删除行;
    truncate删除表中数据,会清空行;

    drop删除表的结构和被依赖的约束、触发器、索引等,存储过程/函数将被保留,但是变为invalid状态;

    2、日志

    delete 删除数据,会写日志、有备份可以回滚;
    truncate 删除数据,不会写日志、不能回滚,因此慎用(生产上基本不让程序员用,用了DBA后期找不到日志,因此生产上会禁了此命令使用权限);

    3、空间

    delete删除表中数据不释放空间;
    truncate 和 drop删除数据、释放空间;

    4、触发器

    delete会触发 相应的触发器;
    truncate不触发任何触发器;

    5、删除速度

    drop > truncate > delete

    三、学习内容

    https://www.manongdao.com/article-1068167.html

  • 相关阅读:
    C++之构造函数、析构函数、拷贝构造函数终极指南:玩转对象的诞生、生命周期与复制
    Java中使用定时器监听数据变化,当满足某个条件时(例如没有数据更新)自动执行某项任务
    【校招VIP】java开源框架之nginx
    【Java开发工具】下载安装eclipse并汉化配置教程(所以操作系统通用)
    Map,List,Set 等集合以及底层数据结构
    基于Transformer的目标检测:原理、应用与未来展望
    让d用户定义效果系统
    Web安全——信息收集上篇
    新冠疫情数据采集
    模型微调迁移学习Finetune方法大全
  • 原文地址:https://blog.csdn.net/SeniorShen/article/details/126526221