mysql复制表的数据和结构(可跨越数据库)

原创 同时被 2 个专栏收录
828 篇文章 2 订阅

    将数据从现有表复制到新的数据,在某些情况下非常有用,例如备份数据和复制生产数据进行测试。我们要想将数据从旧表复制到新表,那我们需要使用的sql案例如下:

CREATE TABLE new_table 
SELECT col, col2, col3 
FROM
    existing_table;
 

    上面的sql大致的意思就是,首先使用create table语句中指定的名称创建一个新表,完事嘞,新表的结构由SELECT语句的结果集定义,再来就是,MySQL会自动将来自SELECT语句的数据填充到新表中。大致的意思和流程就是这样了。就这个案例的sql来说,对于大多数情况是满足的,但是,我们有时候需要的仅仅是部分满足需要的数据,那么,我们要将部分数据从现有表复制到新表中,就需要在SELECT语句中使用where子句来完成操作了。大家来看个案例:

CREATE TABLE new_table 
SELECT col1, col2, col3 
FROM
    existing_table
WHERE
    conditions;

    完事,大概就差不多了。但是我们在创建之前,检查我们要创建的表是否已存在是非常重要的。 为此,我们可以在CREATE TABLE语句中使用IF NOT EXIST子句。 所以我们来看将数据从现有表复制到新的表的完整命令:

CREATE TABLE IF NOT EXISTS new_table 
SELECT col1, col2, col3 
FROM
    existing_table
WHERE
    conditions;

    还有一点我需要说明的就是,上面的声明只是复制表及其数据,它不会复制与表关联的其他的诸如索引、主键约束、外键约束触发器等数据库对象。如果需要复制这些东西的话,嘿嘿,也不是没有办法,请看如下sql:

CREATE TABLE IF NOT EXISTS new_table LIKE existing_table;

INSERT new_table
SELECT * FROM existing_table;

    上面是两个sql,第一个是创建和旧表一样的一个新表,完事第二条sql就是来插入我们需要的数据的。完事大概的就记录的差不多了。因为思路比较简单哈,咱也没有弄什么实例,完事咱们再来看下跨库复制表就算是完事了哈。先来看个sql的例子:

CREATE TABLE destination_db.new_table 
LIKE source_db.existing_table;

INSERT destination_db.new_table 
SELECT *
FROM source_db.existing_table;

    上面共有两个sql,第一个sql通过从源数据库(source_db)复制现有表(existing_table)到目标数据库(destination_db)中创建一个新表new_table。完事第二个sql将数据从源数据库中的现有(existing_table)表复制到目标数据库中的新表。大致就是这么回事了。嘿嘿,今天就到这里了。

    如果感觉不错的话,请多多点赞支持哦。。。



  • 7
    点赞
  • 0
    评论
  • 11
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值