MySql教程
MySql用户管理
MySQL数据库
MySql表格和视图
MySQL查询
MySQL索引
MySQL子句
MySQL授权
MySql控制流
MySQL条件
MySQL连接
MySQL键
MySQL触发器
MySQL聚合函数
MySQL常用
MySQL正则表达式
MySql差异性

MySQL 复制/克隆/重复表

MySQL复制或克隆表是一项功能,可让我们创建现有表的 重复表 ,包括表结构,索引,约束,默认值等。将现有表的数据复制到新表中对于在表故障时备份数据的情况非常有用。当我们需要在不影响原始表的情况下进行测试或执行某些操作(例如,复制生产数据以进行测试)时,这也是有利的。
我们可以使用 将现有表复制到新表中CREATE TABLE SELECT 语句,如下所示:
CREATE TABLE new_table_name
SELECT column1, column2, column3 
FROM existing_table_name;
首先,它从CREATE TABLE语句创建一个新表。其次, SELECT语句的结果集定义了新表的结构。最后, MySQL 将从SELECT语句获取的数据填充到新创建的表中。
如果存在如果只需要将部分数据从现有表复制到新表,请使用 WHERE子句和SELECT语句,如下所示:
CREATE TABLE new_table_name
SELECT column1, column2, column3 
FROM existing_table_name
WHERE condition;
我们必须确保要创建的表不存在于数据库中。 MySQL中的 IF NOT EXISTS 子句允许我们在创建新表之前检查数据库中是否存在表。因此,以下声明可以更清楚地说明这一点:
CREATE TABLE if NOT EXISTS new_table_name
SELECT column1, column2, column3 
FROM existing_table_name
WHERE condition;
要注意的是,该语句仅复制表及其数据。它不会复制表的所有相关对象,例如索引,触发器,主键约束,外键约束等。因此,将 命令连同其相关对象复制数据从现有对象复制到新表可以写成以下语句:
CREATE TABLE if NOT EXISTS new_table_name LIKE existing_table_name;
INSERT new_table_name SELECT * FROM existing_table_name;
在上面,我们可以看到需要执行两个语句来复制数据以及结构和约束。第一条命令创建一个新表 new_table_name ,该表复制 existing_table_name ,第二条命令将现有表中的数据添加到new_table_name中。

MySQL复制/克隆表示例

让我们演示如何在示例的帮助下创建重复表。首先,我们将使用以下语句创建一个名为" original_table "的表:
CREATE TABLE original_table (
    Id int PRIMARY KEY NOT null, 
    Name varchar(45) NOT null, 
    Product varchar(45) default NULL, 
    Country varchar(25) default NULL, 
    Year int NOT null
);
接下来,需要向该表中添加值。执行以下语句:
INSERT INTO original_table( Id, Name, Product, Country, Year) 
VALUES (1, 'Stephen', 'Computer', 'USA', 2015), 
(2, 'Joseph', 'Laptop', 'India', 2016), 
(3, 'John', 'TV', 'USA', 2016),
(4, 'Donald', 'Laptop', 'England', 2015),
(5, 'Joseph', 'Mobile', 'India', 2015),
(6, 'Peter', 'Mouse', 'England', 2016);
接下来,执行SELECT语句以显示记录:
mysql> SELECT * FROM original_table;
我们将获得输出,如下所示:
MySQL复制表
现在,执行以下语句,将数据从现有表" original_table"复制到所选数据库中名为" duplicate_table "的新表中。
CREATE TABLE if NOT EXISTS duplicate_table 
SELECT * FROM original_table;
成功执行后,我们可以使用SELECT语句验证表数据。参见下面的输出:
MySQL复制表
有时只需要复制 将部分数据从现有表迁移到新表。在这种情况下,我们可以将WHERE子句与SELECT语句一起使用,如下所示:
CREATE TABLE if NOT EXISTS duplicate_table 
SELECT * FROM original_table WHERE Year = '2016';
此语句创建一个重复表,该表仅包含 2016年年的数据。我们可以使用SELECT语句来验证该表,如下所示:
MySQL复制表
假设需要复制现有表以及与该表关联的所有从属对象,然后执行下面给出的两条语句:
mysql> CREATE TABLE duplicate_table LIKE original_table;
AND,
mysql> INSERT duplicate_table SELECT * FROM original_table;

MySQL复制表
让我们看看如何将表复制到另一个
假设存在从其他数据库复制表的情况。在这种情况下,我们需要执行以下语句:
CREATE TABLE destination_db.new_table_name 
LIKE source_db.existing_table_name;
INSERT destination_db.new_table_name 
SELECT * FROM source_db.existing_table_name;
在上面,第一个命令通过从源数据库克隆现有表在选定(目标)数据库中创建一个新表。第二个命令将数据从现有表复制到选定数据库中的新表。
以下演示更加清楚地说明了这一点。
假设我们有MySQL服务器上的两个名为" mysqltestdb "和" mystudentdb "的数据库。 mytestdb数据库包含一个名为" original_table"的表,该表具有以下数据:
MySQL复制表
现在,我们将使用以下语句将此表复制到另一个名为mystudentdb的数据库中:
CREATE TABLE mystudentdb.duplicate_table 
LIKE mysqltestdb.original_table;
INSERT mystudentdb.duplicate_table 
SELECT * FROM mysqltestdb.original_table;
成功执行后,我们可以使用以下命令验证mystudentdb数据库中的表:
mysql> SELECT * FROM mystudentdb.duplicate_table;
在下面的输出中,我们可以看到该表已成功复制到一个数据库中并复制到另一个数据库。
MySQL复制表
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4