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的数据表,包括表的结构,索引,默认值等。仅仅使用CREATE TABLE … SELECT 命令,是无法实现的。我们可以参考以下两种方式实现表和数据的完全复制。
完全复制表方法一
步骤一:根据现有表直接创建复制表。
CREATE TABLE IF NOT EXISTS new_table_name LIKE existing_table_name;
步骤一:从现有表中选择数据插入复制表。
INSERT new_table_name SELECT * FROM existing_table_name;
完全复制表方法二
使用 SHOW CREATE TABLE 命令获取创建数据表(CREATE TABLE) 语句,该语句包含了原数据表的结构,索引等。
复制以下命令显示的SQL语句,修改数据表名,并执行SQL语句,通过以上命令 将完全的复制数据表结构。
如果你想复制表的内容,你就可以使用 INSERT INTO … SELECT 语句来实现。
步骤一:获取数据表的完整结构。
步骤二:修改SQL语句的数据表名,并执行SQL语句。
步骤三:执行完第二步骤后,你将在数据库中创建新的克隆表 clone_tbl。 如果你想拷贝数据表的数据你可以使用 INSERT INTO… SELECT 语句来实现。
执行以上步骤后,会完整的复制表的内容,包括表结构及表数据。
领取专属 10元无门槛券
私享最新 技术干货