一:在新表已经建立好的情况下

0、复制表结构及数据到新表
CREATE TABLE 新表 SELECT * FROM 旧表
这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from
newtable;来删除。
不过这种方法的一个最不好的地方就是新表中没有了旧表的primary
key、Extra(auto_increment)等属性。需要自己用"alter"添加,而且容易搞错。

本文将着重介绍两个MySQL命令的组合,它将以原有数据表为基础,创建相同结构和数据的新数据表。

1,拷贝所有的字段

 

 

insert into new_table select * from old_table

 

这可以帮助你在开发过程中快速的复制表格作为测试数据,而不必冒险直接操作正在运行
的数据表。

2,拷贝部分字段表


 

insert into new_table(id,name,sex) select id,name,sex from old_table

 

示例如下:

3,拷贝部分的行

 

 

insert into new_table select  *  from old_table where id=”1″

 

将 production 数据库中的 mytbl 表快速复制为 mytbl_new,2个命令如下:

4,拷贝部分的行和字段

1、只复制表结构到新表
CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2
或CREATE TABLE 新表  LIKE 旧表

 

insert into new_table(id,name,sex) select id,name,sex form old_table
where id=’1′

create table score_youxiu select * from score where grade >90;

CREATE TABLE mytbl_new LIKE production.mytbl;

二:在新表还没有建的情况下

//复制表的部分内容

INSERT mytbl_new SELECT * FROM production.mytbl;

方案一:

create table score_youxiu select * from score where id%4=0;

 

create table new_table (select * from old_table)

//应用:分表办法(按业务需要,取模(id%4),取偏移量)

第一个命令是创建新的数据表 mytbl_new ,并复制 mytbl 的数据表结构。

这种方案建的话,只是拷贝的查询的结果,新表不会有主键和索引

 

第二个命令是讲数据表 mytbl 中的数据复制到新表 mytbl_new 。

方案二:


 

create table new_table LIKE old_table

 

注:production.mytbl是指定要复制表的数据库名称为 production
。它是可选的。

该方案只能拷贝表结构到新表中,不会拷贝数据

 

假如没有production. ,MySQL数据库将会假设mytbl在当前操作的数据库。

方案三:

 

其它方法:
方案1:
复制整个表  
CREATE TABLE   new_table   SELECT   *   FROM   old_table;  

如果要真正的复制一个数据到新表,我们可以直接执行下面的语句

2、复制旧表的数据到新表(假设两个表结构一样)
INSERT INTO 新表 SELECT * FROM 旧表

复制,不复制数据  
CREATE TABLE   new_table   SELECT   *   FROM   old_table   where  
0;

create table new_table LIKE old_table;

 

注意:本方案其实只是把select语句的结果建一个表。所以new_table这个表不会有主键、索引。

insert into new_table select * from old_table;

 

方案2:
假如我们有以下这样一个表:

发表评论

电子邮件地址不会被公开。 必填项已用*标注