MySQL:如何复制表的部分或全部数据到其他表里?
------------------------------------------------------分割线------------------------------------------------------
---------------------------------------------------
文章目录 ------------------------------------------------------分割线------------------------------------------------------ ---------------------------------------------------以下是正文------------------------------------------------------ 复制表分三种情况: 1、复制表的结构 2、复制表的数据 3、复制表的结构及数据 以下用实际的例子展示这三种情况该如何复制? 准备工作:在Navicat Premium 12软件里新建一个连接,叫localserver_test(服务器别名,自己可随意命名),在该连接下新建一个数据库,叫test,效果图如下, 在test数据库下新建一张t_test表,效果图和SQL命令如下,
准备工作就到这里,接着进入主题! 1、复制原有表t_test的结构到另一张表t_testx(x=1,2,…), 第一种情况:此时表t_test1是不存在的,用以下语句,
或
上面两条SQL语句都可以复制结构,会自动新建一张新表t_test1,但新表t_test1没有原有表t_test的数据,效果图如下, == 温馨提示:虽说两条SQL语句都可以复制结构mssql复制表,但还是存在一些差异的,第一条SQL语句仅仅只复制了结构,而第二条SQL语句除了复制了结构以外,还复制了原有表(t_test)的主键、索引、Extra(auto_increment,字符集编码及排序)、注释、分区等属性,但是不包含触发器、外键等。 == 第二种情况:由于不管是sqlserver ,oracle ,mysql,access等都不可以创建空表,表中至少得有一个字段,表才能创建成功!所以没有原有表t_test复制结构到已存在的空表(无字段表)的情况。那么,如果复制原有表t_test的结构到已存在的非空表(有字段表)t_test2,该如何实现?以及效果如何呢?我们来演示一下! 已存在的非空表t_test2情况图如下, 接着,运行以下SQL语句,
由于本人演示用的是mysql,而mysql不支持将原有表(t_test)结构复制到另一张已存在的表里,所以效果图暂时省略,以后有时间再补充,偷个懒,略略略! 2、复制原有表t_test的数据到表t_testx(x=1,2,…),有两种情况, 第一种情况:两表结构一样情况下 已存在的表t_test3的情况图如下, 与原有表t_test的结构完全相同,接着,运行以下SQL语句,
运行后效果图如下, 第二种情况:两表结构不一样情况下 已存在的表t_test4的情况图如下, 与原有表t_test的结构不相同(多了一个originalfield字段),接着,运行以下SQL语句,
运行后效果图如下, 3、复制原有表t_test的结构及数据到另一张表t_testx(x=1,2,…), 此时表t_test5是不存在的,用以下语句,
或
上面两条SQL语句效果相同,会自动新建一张新表t_test5,且结构及数据与原有表t_test一模一样,效果图如下, 以上方式有一个不好的地方就是仅仅只复制了结构和数据,新表(t_test5)中没有了原有表(t_test)的主键、索引、Extra(auto_increment,字符集编码及排序)、注释、分区等属性,以及触发器、外键等。 那么,如果也想把原有表(t_test)的主键、索引等一并复制过来,该如何操作呢? 先运行以下代码,
接着运行这段代码,
== 温馨提示:推荐一个好用的SQL命令,“show create table 原有表”,运行该命令之后可以将旧表的创建命令列出,我们只需要将列出来的命令拷贝出来,更改table的名字,就可以建立一个完全一样的表 == -------------------------------------------------------分割线--------------------------------------------------------- ---------------------------------------------下面演示单纯数据转移--------------------------------------------- 数据库中,表与表的数据转移分以下几种情况: 1、相同服务器相同数据库下表与表的数据转移 2、相同服务器不同数据库下表与表的数据转移 3、不同服务器不同数据库下表与表的数据转移 以下用实际的例子展示这三种情况该如何复制? 准备工作:沿用上面所创建的连接(localserver_test)以及数据库(test)表(t_testx),接着继续在该连接下创建另一个空的数据库test2,另外,再新建一个远程连接,叫remoteserver_test,在该远程连接下新建一个空的数据库,叫remotetest,效果图如下, 1、相同服务器相同数据库下表与表的数据转移 此种情况的数据转移上面已有介绍,这里总结一下,分两种情况: 第一种情况:两表结构一样情况下
第二种情况:两表结构不一样情况下
2、相同服务器不同数据库下表与表的数据转移 在localserver_test连接下,将数据库test下的表t_test的数据转移至同一服务器下另一数据库test2下的表tcopy_testx(x=1,2,…)里,有两种情况, 第一种情况:目标表不存在的情况
运行完上面SQL语句后的效果图如下, == 温馨提醒:以上SQL语句仅复制了结构和数据,并未复制原有表(t_test)的主键、索引、Extra(auto_increment,字符集编码及排序)、注释、分区等属性,以及触发器、外键等 == 那么,如果想把原有表(t_test)的主键、索引等一并复制过来,这个跟前面所说复制相同数据库下表跟表的结构和数据是类似的,具体代码如下, 先运行以下代码,
接着运行这段代码,
第二种情况:目标表存在的情况 目标表存在的情况下,又分目标表的结构与原有表相同和不相同的情况,可参考前面的代码,这里就不赘述了。 ----------------------------------------------前面的都是开胃小菜---------------------------------------------- -----------------------------------------真正又难又麻烦的是下面这个----------------------------------------- 3、不同服务器不同数据库下表与表的数据转移 抱歉,突然事多起来,这个也还没理解透,后面有时间再补充了 (编辑:92站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |