需求:现在有一张旧表tb2,要复制一张新表tb1。
当然我们可以使用:show create table 旧表; 查看旧表的创建语句,然后把语句copy一下,改个表名就可以了。同时我们也可以使用以下命令更方便的复制表。
一、复制表
create table 创建表
命令 | 复制表结构 | 复制主键、索引 | 复制数据 |
---|---|---|---|
create table tb1 like tb2; | √ | √ | |
create table tb1 select * from tb2 where 1=2 | √ | ||
create table tb1 select * from tb2; | √ | √ |
insert into 复制数据
INSERT INTO tb1 SELECT * FROM tb2 ; #表结构一样,全部复制
INSERT INTO tb1 (字段1,字段2,…….) SELECT 字段1,字段2,…… FROM tb2; #表结构不一样,复制部分字段
看上面可知,一般复制表的操作可以分两步走,根据需求来先复制表结构,再插入数据。下面操作就是复制了一个跟tb2一模一样的tb1表。
create table tb1 like tb2;
insert into tb1 select * from tb2;
二、复制旧数据库到新数据库
复制全部表结构并且复制全部表数据
#mysql -u root -ppassword
>CREATE DATABASE new_db;
#mysqldump old_db -u root -ppassword–skip-extended-insert –add-drop-table | mysql new_db -u root -ppassword
三、表不在同一数据库中
加上数据库名。db1.tb1 db2.tb2
insert into db1.tb1 select * from db2.tb2 (完全复制)
insert into db1.tb1 select distinct * from db2.tb2(不复制重复纪录)
insert into tdb1.tb1 select top 5 * from db2.tb2 (前五条纪录)
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END