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;
使用两条语句即可执行表的复制。
就是这么简单,你学废了吗?感觉有用的话,给笔者点个赞吧 !
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· 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基础