本文共 1626 字,大约阅读时间需要 5 分钟。
在 MySQL 中,复制表结构和数据是常见的操作,可以通过 AS 和 LIKE 语句实现。以下是详细的操作步骤和区别说明。
AS 语句用于创建与源表结构相同的新表,但不复制数据。以下是使用 AS 的示例:
CREATE TABLE table_name AS SELECT * FROM other_table WHERE 1=2;
说明:
WHERE 1=2 用于跳过数据插入,仅创建表结构。LIMIT 0 也可以用于同样的目的。示例:
CREATE TABLE table_name AS SELECT * FROM book;
复制后的表 table_name 结构与 book 表相同,但没有数据。
LIKE 语句用于创建与源表结构和索引完全一致的新表,适用于需要同时复制数据的场景。以下是使用 LIKE 的示例:
CREATE TABLE table_name LIKE book;
说明:
CREATE TABLE table_name LIKE book 会创建与 book 表完全相同的结构,包括索引和约束。示例:
CREATE TABLE table_name LIKE book;
复制后的表 table_name 结构和索引与 book 表一致。
使用 INSERT INTO 语句可以将源表的数据复制到目标表中。以下是两种常见方式:
复制全部数据:
INSERT INTO table_name SELECT * FROM other_table;
复制指定列:
INSERT INTO table_name (column1, column2, ...)SELECT column1, column2, ...FROM other_table;
示例:
INSERT INTO table_name SELECT * FROM book;
| 特性 | AS | LIKE |
|---|---|---|
| 表结构 | 只创建表结构,不复制数据 | 创建表结构和索引,复制数据 |
| 数据复制 | 可选(通过 WHERE 或 LIMIT 控制) | 弹性复制数据(可选择是否复制) |
| 索引 | 不复制索引信息 | 复制源表的全部索引信息 |
| 兼容性 | Oracle 支持 AS | Oracle 不支持 LIKE |
使用 SHOW CREATE TABLE 语句可以查看表的创建语句。
SHOW CREATE TABLE book;
输出示例:
CREATE TABLE `book` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `author` varchar(20) NOT NULL, `info` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), KEY `author` (`author`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
使用 AS 复制表结构:
CREATE TABLE table_name AS SELECT * FROM book;
使用 LIKE 复制表结构和数据:
CREATE TABLE table_name LIKE book;INSERT INTO table_name SELECT * FROM book;
注意事项:
通过以上方法,您可以根据具体需求选择适合的复制方式。
转载地址:http://kxqfk.baihongyu.com/