复制表数据

在本教程中,您将学习如何使用CREATE TABLESELECT语句在同一数据库或从一个数据库复制表。

MySQL将表复制到新表

将数据从现有表复制到新的数据,在某些情况下非常有用,例如备份数据和复制生产数据进行测试。

要将数据从表复制到新表,请使用CREATE TABLESELECT语句,如下所示:

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

首先,MySQL使用CREATE TABLE语句中指定的名称创建一个新表。新表的结构由SELECT语句的结果集定义。 然后,MySQL将来自SELECT语句的数据填充到新表中。

要将部分数据从现有表复制到新表中,请在SELECT语句中使用WHERE子句,如下所示:

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

在创建之前,检查您要创建的表是否已存在是非常重要的。 为此,您可以在CREATE TABLE语句中使用IF NOT EXIST子句。 将数据从现有表复制到新的表的完整命令如下:

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

请注意,上面的声明只是复制表及其数据。它不会复制与表关联的其他数据库对象,如索引主键约束外键约束触发器等。

要从表中复制数据以及表的所有依赖对象,请使用以下语句:

上面查询中,需要执行两个语句。第一个语句通过复制existing_table表来创建一个新表new_table。 第二个语句将现有existing_table表中的数据插入new_table中。

MySQL拷贝表示例

以下语句将数据从office表复制到示例数据(yiibaidb)库中指定名为offices_bk的新表。

可以通过查询office_bk表中的数据来验证副本,如下所示:

执行上面查询,得到以下结果 -

如果我们想仅复制在美国(USA)办公室,可以将WHERE子句添加到SELECT语句中,如下所示:

验证上面查询执行,得到以下结果 -

假设不仅要复制数据,还要复制与offices表相关联的所有数据库对象,我们使用以下语句:

MySQL复制表到另一个数据库

有时,您要将表复制到其他数据库。 在这种情况下,可使用以下语句:

第一个语句通过从源数据库(source_db)复制现有表(existing_table)到目标数据库(destination_db)中创建一个新表new_table

第二个语句将数据从源数据库中的现有(existing_table)表复制到目标数据库中的新表。

下面来看看看下面的例子。

首先,我们使用以下语句创建一个名为testdb的数据库:

其次,通过将其结构从示例数据库(yiibaidb)中的offices表复制出来,在testdb中创建了offices表。

第三,我们将数据从yiibaidb.offices表复制到testdb.offices表中。

我们来验证testdb.offices表中的数据。

执行上面查询语句,得到以下结果 -

在本教程中,我们向您展示了将数据库中的表和从一个数据库复制到另一个数据库的各种技术。

Last updated

Was this helpful?