当前位置:   article > 正文

SQL几种删除方式区别 drop、delete、truncate_delete中sql删除,主键还是会存在

delete中sql删除,主键还是会存在
  • drop
    drop table table_name : 删除表全部数据和表结构,立刻释放磁盘空间,不管是 Innodb 和 MyISAM;
  • truncate 和 delete
    • truncate table table_name : 删除表全部数据,保留表结构,立刻释放磁盘空间 ,不管是 Innodb 和 MyISAM(truncate之后的自增字段从头开始计数);
    • delete from table_name :
      1>删除表全部数据,保留表结构,对于 MyISAM 会立刻释放磁盘空间,InnoDB 不会释放磁盘空间(delete后仍保留原来的数值的位置);
      2>若想实现带条件的删除,只有用delete
      delete from table_name where xxx : 带条件的删除,表结构不变,不管是 innodb 还是 MyISAM 都不会释放磁盘空间(delete后仍保留原来的数值的位置);

复制表

先创建一个表c_p作为原表

CREATE TABLE `c_p` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `country` varchar(20) DEFAULT NULL,
  `population` int(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `country` (`country`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

方法1:复制表为c_p_copy1
step1:复制表结构

CREATE TABLE `c_p_copy1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `country` varchar(20) DEFAULT NULL,
  `population` int(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `country` (`country`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

或者是用

create table c_p_copy1 like c_p
  • 1

step2:插入数据

insert into c_p_copy1(id,country,population)
select * from c_p 
  • 1
  • 2

方法二:复制表为c_p_copy2

这种比较简洁,但是没有复制索引,主键等结构,只复制了数据,所以不推荐

create table c_p_copy2 select * from c_p
  • 1

拓展:复制一部分数据的方法

1>拷贝一个表中其中的一些字段:

CREATE TABLE c_p_copy3  AS
(SELECT id, population FROM c_p)

2>拷贝一部分数据:

CREATE TABLE c_p_copy4  AS
( SELECT * FROM c_p  WHERE id = 1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

删除表

drop table c_p_copy1;
完全删除,表不存在了

TRUNCATE c_p_copy1
数据删除,表结构存在,再次插入数据,第一行id为1

DELETE from c_p_copy1
数据删除,表结构存在,再次插入数据,第一行id不为1,即delete后 仍保留原来数值的位置(假如原来表中有7行,delete后id从8开始)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/409476
推荐阅读
相关标签
  

闽ICP备14008679号