mysql 使用as或like复制表结构创建新表

-- 只复制表的结构,并不复制索引
create table tb_log_copy_as as select * from tb_log limit 0;

-- 显示表的创建语句
show create table tb_log;

CREATE TABLE `tb_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `platform` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '平台',
  `version` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '版本',
  `type` varchar(1) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户类型',
  `user_id` bigint(20) DEFAULT NULL COMMENT '用户编号',
  `ip` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'IP',
  `url` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '地址',
  `request_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '请求编号',
  `start_time` datetime DEFAULT NULL COMMENT '开始时间',
  `end_time` datetime DEFAULT NULL COMMENT '结束时间',
  `duration` int(11) DEFAULT NULL COMMENT '执行时长',
  `status` varchar(1) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '状态(0:正常 1:无效)',
  `modify_time` datetime NOT NULL COMMENT '修改时间',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`),
  KEY `idx_log_01` (`user_id`),
  KEY `idx_log_02` (`url`),
  KEY `idx_log_03` (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1100012 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统用户日志表'

show create table tb_log_copy_as;

-- 可以看出复制不包括索引
CREATE TABLE `tb_log_copy_as` (
  `id` bigint(20) NOT NULL DEFAULT '0' COMMENT '主键',
  `platform` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '平台',
  `version` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '版本',
  `type` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户类型',
  `user_id` bigint(20) DEFAULT NULL COMMENT '用户编号',
  `ip` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'IP',
  `url` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '地址',
  `request_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '请求编号',
  `start_time` datetime DEFAULT NULL COMMENT '开始时间',
  `end_time` datetime DEFAULT NULL COMMENT '结束时间',
  `duration` int(11) DEFAULT NULL COMMENT '执行时长',
  `status` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '状态(0:正常 1:无效)',
  `modify_time` datetime NOT NULL COMMENT '修改时间',
  `create_time` datetime NOT NULL COMMENT '创建时间'
) ENGINE=InnoDB DEFAULT CHARSET=latin1


-- 删除表
drop table tb_log_copy_as;

-- 复制表的同时复制数据
create table tb_log_copy_as as select * from tb_log limit 1,10;

-- 使用like

-- 复制表的完整数据结构,包括索引
create table tb_log_copy_like like tb_log;

-- 显示表的创建语句
show create table tb_log_copy_like;

-- 可以看出,使用like可以复制表的完整数据结构,包括索引
CREATE TABLE `tb_log_copy_like` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `platform` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '平台',
  `version` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '版本',
  `type` varchar(1) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户类型',
  `user_id` bigint(20) DEFAULT NULL COMMENT '用户编号',
  `ip` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'IP',
  `url` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '地址',
  `request_id` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '请求编号',
  `start_time` datetime DEFAULT NULL COMMENT '开始时间',
  `end_time` datetime DEFAULT NULL COMMENT '结束时间',
  `duration` int(11) DEFAULT NULL COMMENT '执行时长',
  `status` varchar(1) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '状态(0:正常 1:无效)',
  `modify_time` datetime NOT NULL COMMENT '修改时间',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`),
  KEY `idx_log_01` (`user_id`),
  KEY `idx_log_02` (`url`),
  KEY `idx_log_03` (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统用户日志表'


-- 复制表的数据    使用需谨慎-错用两行泪
insert into tb_name select * from other_table;     

-- 指定字段复制表的数据    使用需谨慎-错用两行泪
insert into tb_name(field,...) select field,... from other_table;

备注:此次试验仅在mysql中进行,如果使用的是oracle自行测试。

waring:insert into tb_name select * from other_table;
慎用慎用,这条语句很有可能把你送走,如有兴趣,请自查。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值