MySQL复制表结果及数据

02/09/2023

1、复制表结构及数据到新表

create table table_name_new select * from table_name_old;

注:此命令使用方便,唯一不好的就是新表中没有了旧表的primary key、Extra(auto_increment)等属性,需要再手动添加主键等。

2、仅复制表结构到新表

create table table_name_new select * from table_name_old where 1=2;

create table table_name_new like table_name_old;

3、复制旧表的数据到新表(假设两个表结构一样)

insert into table_name_new select * from table_name_old;

4、复制旧表的数据到新表(假设两个表结构不一样)

insert into table_name_new(字段1,字段2) select (字段1,字段2) from table_name_old;

5、表不在同一数据库中(如:db1 table_name1,db2 table_name2)

完全复制 insert into db1.table_name1 select * from db2.table_name2;

不复制重复记录 insert into db1.table_name1 select distinct * from db2.table_name2;

6、查看表的创建SQL

show create table table_name;

7、清除表数据

delete from table_name;

truncate table_name

注:两都都能达到清除数据的目的,但有一点区别,delete删除时,新的记录主键如id以原删除点开始增加,比如原来有5条记录,id=5,现新增id从6开始;truncate则相当于删除表再创建表,id从1开始,执行效率来说truncate要高,truncate删除后不记录mysql日志,不可以恢复数据