MySQL create table as与create table like对比

本文共 2,134 字,预计阅读时间 7 分钟

 


MySQL中表的克隆有多种,常用的是create table as和create table like,两者有所差别。

① reate table as  只能部分克隆表结构,但完整保留数据

② create table like会完整地克隆表结构,但不会插入数据,需要单独使用insert into或load data方式加载数据

1.准备工作

先准备一些测试数据:

复制代码
CREATE TABLE `user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `user_name` varchar(200) DEFAULT '',
  `phone` varchar(200) DEFAULT '',
  `b_code` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
INSERT INTO `db2020`.`user`(`id`, `user_name`, `phone`, `b_code`) VALUES (1, '李明', '101', '2021001');
INSERT INTO `db2020`.`user`(`id`, `user_name`, `phone`, `b_code`) VALUES (2, '赵慧', '456', '2020001');
INSERT INTO `db2020`.`user`(`id`, `user_name`, `phone`, `b_code`) VALUES (3, '李凯', '123', '2021002');
INSERT INTO `db2020`.`user`(`id`, `user_name`, `phone`, `b_code`) VALUES (6, '张三1', '123', '2022001');
INSERT INTO `db2020`.`user`(`id`, `user_name`, `phone`, `b_code`) VALUES (7, '张三2', '123', '2021003');
复制代码

查询表说明如下:

desc user;

查询的结果如下:

select * from user

2.create table as

使用create table as复制表:

create table user_bk as select * from user;

1)查询表数据:

select * from user_bk

2)查询表说明:

desc user_bk

 会发现数据可完整的复制过来,但主键、自动递增和索引丢失了。

上述复制的全部的数据,当然也可以只复制部分数据,在后面添加where条件即可

create table user_bk as select * from user where b_code like '2021%';

对于5.6及以上的版本内,MySQL默认开启了 enforce_gtid_consistency=true 功能,若不关闭,则会出现下面的错误:

Statement violates GTID consistency

关闭的命令:

SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = off;

3.create table like

使用create table like复制表:

create table user_bk2 like user;

1)查询表数据:

select * from user_bk2

2)查询表说明:

desc user_bk

 会发现数据结构可完整的复制过来,但没有数据。

3)解决方案

若想完整的复制表结构和数据,只能使用like这种方式。先复制表结构,然后使用insert into复制数据过来。

create table user_bk3 like user;
insert into user_bk3  select * from user;

使用两条语句即可执行表的复制。

posted @   钟小嘿  阅读(3993)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2019-10-14 SpringBoot基础
点击右上角即可分享
微信分享提示