MySQL:如何复制表的部分或全部数据到其他表里?

article/2025/8/26 14:48:25

文章目录

  • 复制表分三种情况:
    • 1、复制原有表t_test的结构到另一张表t_testx(x=1,2,......),
    • 2、复制原有表t_test的数据到表t_testx(x=1,2,......),有两种情况,
    • 3、复制原有表t_test的结构及数据到另一张表t_testx(x=1,2,......),
  • 数据库中,表与表的数据转移分以下几种情况:
    • 1、相同服务器相同数据库下表与表的数据转移
    • 2、相同服务器不同数据库下表与表的数据转移
    • 3、不同服务器不同数据库下表与表的数据转移

------------------------------------------------------分割线------------------------------------------------------
---------------------------------------------------以下是正文------------------------------------------------------

复制表分三种情况:

1、复制表的结构
2、复制表的数据
3、复制表的结构及数据

       以下用实际的例子展示这三种情况该如何复制?

       准备工作:在Navicat Premium 12软件里新建一个连接,叫localserver_test(服务器别名,自己可随意命名),在该连接下新建一个数据库,叫test,效果图如下,
在这里插入图片描述
       在test数据库下新建一张t_test表,效果图和SQL命令如下,
在这里插入图片描述

CREATE TABLE t_test
(id BIGINT(20) NOT NULL COMMENT '主键',name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',age INT(11) NULL DEFAULT NULL COMMENT '年龄',email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',PRIMARY KEY (id)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO t_test (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

       准备工作就到这里,接着进入主题!

1、复制原有表t_test的结构到另一张表t_testx(x=1,2,…),

       第一种情况:此时表t_test1是不存在的,用以下语句,

CREATE TABLE t_test1 SELECT * FROM t_test WHERE 1=2;

       或

CREATE TABLE t_test1 LIKE t_test;

       上面两条SQL语句都可以复制结构,会自动新建一张新表t_test1,但新表t_test1没有原有表t_test的数据,效果图如下,
在这里插入图片描述
== 温馨提示:虽说两条SQL语句都可以复制结构,但还是存在一些差异的,第一条SQL语句仅仅只复制了结构,而第二条SQL语句除了复制了结构以外,还复制了原有表(t_test)的主键、索引、Extra(auto_increment,字符集编码及排序)、注释、分区等属性,但是不包含触发器、外键等。 ==
       第二种情况:由于不管是sqlserver ,oracle ,mysql,access等都不可以创建空表,表中至少得有一个字段,表才能创建成功!所以没有原有表t_test复制结构到已存在的空表(无字段表)的情况。那么,如果复制原有表t_test的结构到已存在的非空表(有字段表)t_test2,该如何实现?以及效果如何呢?我们来演示一下!
       已存在的非空表t_test2情况图如下,
在这里插入图片描述
       接着,运行以下SQL语句,

SELECT * INTO t_test2 FROM t_test WHERE 1=2;

       由于本人演示用的是mysql,而mysql不支持将原有表(t_test)结构复制到另一张已存在的表里,所以效果图暂时省略,以后有时间再补充,偷个懒,略略略!

2、复制原有表t_test的数据到表t_testx(x=1,2,…),有两种情况,

       第一种情况:两表结构一样情况下
       已存在的表t_test3的情况图如下,
在这里插入图片描述
       与原有表t_test的结构完全相同,接着,运行以下SQL语句,

INSERT INTO t_test3 SELECT * FROM t_test;

       运行后效果图如下,
在这里插入图片描述
       第二种情况:两表结构不一样情况下
       已存在的表t_test4的情况图如下,
在这里插入图片描述
       与原有表t_test的结构不相同(多了一个originalfield字段),接着,运行以下SQL语句,

INSERT INTO t_test4(id,name,age,email) SELECT id,name,age,email FROM t_test;

       运行后效果图如下,
在这里插入图片描述

3、复制原有表t_test的结构及数据到另一张表t_testx(x=1,2,…),

       此时表t_test5是不存在的,用以下语句,

CREATE TABLE t_test5 SELECT * FROM t_test;

       或

CREATE TABLE t_test5 AS SELECT * FROM t_test;

       上面两条SQL语句效果相同,会自动新建一张新表t_test5,且结构及数据与原有表t_test一模一样,效果图如下,
在这里插入图片描述
       以上方式有一个不好的地方就是仅仅只复制了结构和数据,新表(t_test5)中没有了原有表(t_test)的主键、索引、Extra(auto_increment,字符集编码及排序)、注释、分区等属性,以及触发器、外键等。
       那么,如果也想把原有表(t_test)的主键、索引等一并复制过来,该如何操作呢?
       先运行以下代码,

CREATE TABLE t_test6 LIKE t_test;

       接着运行这段代码,

INSERT INTO t_test6 SELECT * FROM t_test;

== 温馨提示:推荐一个好用的SQL命令,“show create table 原有表”,运行该命令之后可以将旧表的创建命令列出,我们只需要将列出来的命令拷贝出来,更改table的名字,就可以建立一个完全一样的表 ==



-------------------------------------------------------分割线---------------------------------------------------------
---------------------------------------------下面演示单纯数据转移---------------------------------------------

数据库中,表与表的数据转移分以下几种情况:

1、相同服务器相同数据库下表与表的数据转移
2、相同服务器不同数据库下表与表的数据转移
3、不同服务器不同数据库下表与表的数据转移

       以下用实际的例子展示这三种情况该如何复制?

       准备工作:沿用上面所创建的连接(localserver_test)以及数据库(test)表(t_testx),接着继续在该连接下创建另一个空的数据库test2,另外,再新建一个远程连接,叫remoteserver_test,在该远程连接下新建一个空的数据库,叫remotetest,效果图如下,
在这里插入图片描述
在这里插入图片描述

1、相同服务器相同数据库下表与表的数据转移

       此种情况的数据转移上面已有介绍,这里总结一下,分两种情况:
       第一种情况:两表结构一样情况下

INSERT INTO t_test3 SELECT * FROM t_test;

       第二种情况:两表结构不一样情况下

INSERT INTO t_test4(id,name,age,email) SELECT id,name,age,email FROM t_test;

2、相同服务器不同数据库下表与表的数据转移

       在localserver_test连接下,将数据库test下的表t_test的数据转移至同一服务器下另一数据库test2下的表tcopy_testx(x=1,2,…)里,有两种情况,
第一种情况:目标表不存在的情况

INSERT INTO test2.tcopy_test2 SELECT * FROM test.t_test;

       运行完上面SQL语句后的效果图如下,
在这里插入图片描述
== 温馨提醒:以上SQL语句仅复制了结构和数据,并未复制原有表(t_test)的主键、索引、Extra(auto_increment,字符集编码及排序)、注释、分区等属性,以及触发器、外键等 ==
       那么,如果想把原有表(t_test)的主键、索引等一并复制过来,这个跟前面所说复制相同数据库下表跟表的结构和数据是类似的,具体代码如下,
       先运行以下代码,

CREATE TABLE test2.tcopy_test2 LIKE test.t_test;

       接着运行这段代码,

INSERT INTO test2.tcopy_test2 SELECT * FROM test.t_test;

第二种情况:目标表存在的情况
       目标表存在的情况下,又分目标表的结构与原有表相同和不相同的情况,可参考前面的代码,这里就不赘述了。


----------------------------------------------前面的都是开胃小菜----------------------------------------------
-----------------------------------------真正又难又麻烦的是下面这个-----------------------------------------

3、不同服务器不同数据库下表与表的数据转移

抱歉,突然事多起来,这个也还没理解透,后面有时间再补充了


http://chatgpt.dhexx.cn/article/E0h4VR5p.shtml

相关文章

mysql 复制表的几种方式

1. 下面这个语句会拷贝表结构到新表newadmin中。 (不会拷贝表中的数据) CREATE TABLE newadmin LIKE admin 2. 下面这个语句会拷贝数据到新表中。 注意:这个语句其实只是把select语句的结果建一个表。所以newadmin这个表不会有主键,索引。 CREATE TAB…

MySQL中复制表的方式你知道几种

mysql 想必大家比较熟悉了, 我们常见的crud sql 想必大家也是手到拈来。 但是我在今儿上数据库课的时候,我好像连mysql中复制表的基础写法 都不会。 可能工作中不常用,但作为基础 还是想写出来分享给大家。 这里 我介绍四种常用的复制表的方…

mysql复制表的几种方式

mysql复制表的几种方式 所描述的方法还请实际测试一下再使用. 1、复制表结构及数据到新表 CREATE TABLE 新表SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删除。 新表中没有了旧表的primary key、Ex…

无线WiFi怎样实现实名认证?

不管是企业内网的私有WiFi,还是公共WiFi网络;出于安全性需要以及相关政策法规的要求,都要对WiFi无线上网的用户进行实名认证。本文中,我将结合WSG上网行为管理网关介绍如何实现无线WiFi的实名认证。 1. 微信连WiFi 腾讯从2014年退…

无线技术—安全认证技术

1、为什么要保护WLAN网络? 1)防止信息窃取: 通过软件侦听无线信息 通信内容反向解密 2)防止未经过授权的访问: 非法用户接入 越权访问资源 3)提供稳定高效的无线接入: 非法AP等信息干扰导致信号…

论校园网如何实现免认证

一般学校都有校园网(尤其是大学):就是认证类的WiFi,没有密码就可以连接的那种,但是连上不能上网,需要账号密码认证。 一般都几个不同的校园网,这些校园网的来源一般都是学校安装的,或者校园网运…

WLAN认证技术

WLAN安全的发展历程 WLAN认证方式 开放系统认证 开放系统认证 Open system authentication 是缺省使用的认证机制,是最简单的认证算法,即不认证。 认证过程: 客户端发送一个认证请求给选定的AP 该AP发送一个认证成功响应报文给客户端确认该认…

校园网免认证登录连接

嫌校园卡套餐贵,就用GaoYun云,不需要认证登陆也可以使用校园网先用流量安装路线,连上校园网之后不要认证,连接软件。成功的话就是可以破解校园网。蓝奏云:https://wwa.lanzouy.com/iJvbP01erpng

wifi网络接入原理(中)——认证Authentication

转载请注明出处:http://blog.csdn.net/Righthek 谢谢! 还是用手机来举例,扫描完成后,我们会选择想要加入的WIFI热点。此时,大部分都会弹出一个输入密码的窗口,当然也有不用输入密码的。这个过程叫做…

无线网络 EAP 认证

本文作者 98,擅长无线安全,过往文章:《wifi渗透-狸猫换太子》、《无线渗透--‘钓鱼’wifi》,完成 3 篇文章,欢迎加入我们的作者大军,争取为大家带来更多更好的关于无线攻防的文章。最后欢迎不同研究安全不同…

如何配置无线WiFi短信认证登录?

公共场所提供wifi上网服务,需要对用户进行实名认证,那如何配置无线WiFi短信认证登录? 本文将详细介绍无线wifi短信认证登录的流程及方法。 一、 短信验证码连接WiFi的功能怎么使用 要实现访客无线上网短信认证功能,需要借助上网…

iOS 系统校园无线WIFI认证上网指南

无为WiFi介绍一下IOS手机怎么连接校园网,本介绍为普通途径连接使用校园网,想了解绕过校园网请看其他贴文。 1. 打开无线网络(WLAN)开关 2. 连接校园无线WiFi网络 进入“设置”->“无线局域网”->在无线WiFi信号列表中选择“…

学校wifi需要认证登录怎么解决

一般学校都有校园网,就是认证类的WiFi,没有密码就可以连接的那种,但是连上不能上网,需要账号密码认证,一般都有几个或者10几个不同的校园网,这些校园网的来源一般都是学校安装的,或者校园网运营…

信锐(SUNDRAY)无线控制器wifi无线上网短信认证设置流程

信锐网科(SUNDRAY)的无线控制器及网管中心设备,基本都适配互亿无线wifi上网短信认证平台,用户只需要进行简单的配置,就可实现访客wifi上网短信认证功能。 本文就信锐无线上网设备配置wifi短信认证功能作详细的说明。 …

无线认证解决方案

1、认证方式 目前平台有支持手机短信认证,微信公众号认证,钉钉账号认证,账号密码认证(支持关联LDAP、AD域,API接口认证),员工授权认证,二维码识别认证,其他第三方数据源…

WLAN认证详解

今天继续给大家介绍WLAN,本文主要内容是WLAN的认证。 一、开放系统认证 开放系统认证,即Open System Authentication,是缺省使用的认证机制,简单来说,就是不进行认证,当STA向AP发送认证请求帧时&#xff…

WiFi 的认证方法

认证方法 认证方法有两种:Open system authentication 与 Shared key authentication。 Open system authentication: 开放系统认证是缺省使用的认证机制,即不认证。如果认证类型设置为开放系统认证,则所有请求认证的客户端都会通过认证。开…

WiFi认证—分析从连接WiFi到上网的全过程(一)

WiFi认证—分析从连接WiFi到上网的全过程(一) - 墨天轮 1 聊一聊网络分析那些事 在我们的业务当中,RPC为各个节点之间的交互提供了通信保障。节点间通信作为整个体系中至关重要的一环,对整体的业务具有不可忽视的影响;通信速率是影响业务直…

金蝶K3开发-工业单据显示物料图片

金蝶K3工业单据单据体实现当鼠标移动到物料代码字段区域时,自动显示对应分录的物料图片,鼠标移动到其他区域时,窗体会自动消失。

金蝶K3开发-基础资料插件开发

金蝶K3的基础资料是支持二次开发的,修改一下界面显示或者控制录入的数据是没有问题,调用官方接口即可轻松实现。 但如果你想扩展一些个性功能,如在客户基础资料上维护客户的联系人或者客户的收货信息等等,增加自定义字段显然不是个…