MySQL中复制数据表中的数据到新表中的操作教程
MySQL是不支持SELECT…INTO语法的,使用INSERTINTO…SELECT替代相同用法,下面我们我们这里简答分一下新表存在和不存在两种情况,具体使用不同的语句。
1.新表不存在
复制表结构即数据到新表
createtablenew_table select*fromold_talbe;
这种方法会将old_table中所有的内容都拷贝过来,用这种方法需要注意,new_table中没有了old_table中的primarykey,Extra,auto_increment等属性,需要自己手动加,具体参看后面的修改表即字段属性.
只复制表结构到新表
#第一种方法,和上面类似,只是数据记录为空,即给一个false条件 createtablenew_table select*fromold_tablewhere1=2; #第二种方法 createtablenew_tablelikeold_table;
2.新表存在
复制旧表数据到新表(假设两个表结构一样)
insertintonew_table select*fromold_table;
复制旧表数据到新表(假设两个表结构不一样)
insertintonew_table(field1,field2,.....) selectfield1,field2,field3fromold_table;
复制全部数据
select*intonew_tablefromold_table;
只复制表结构到新表
select*intonew_talblefromold_tablewhere1=2;
3.实例
(1)表不存在复制
mysql>showtables; +-----------------+ |Tables_in_test1| +-----------------+ |cpu_stat| |test1| |test2| |test3| +-----------------+ 4rowsinset(0.02sec) mysql>createtabletest4asselect*fromtest1where1=0; //仅复制表结构 QueryOK,0rowsaffected(0.06sec) Records:0Duplicates:0Warnings:0 mysql>createtabletest5asselect*fromtest1; //把表test1所有内容复制为test5 QueryOK,7rowsaffected(0.11sec) Records:7Duplicates:0Warnings:0
(2)表已经存在复制
mysql>createtabletest6(idintnotnullauto_incrementprimarykey,namevarchar(20)); QueryOK,0rowsaffected(0.13sec) mysql>insertintotest6(name)selectnamefromtest1; //只复制name列 QueryOK,7rowsaffected(0.06sec) Records:7Duplicates:0Warnings:0 mysql>select*fromtest6; +----+-------+ |id|name| +----+-------+ |1|wu| |2|terry| |3|tang| …… 7rowsinset(0.00sec)