MySQL中复制表/结构的写法

本文详细介绍MySQL中复制表结构和数据的多种方法,包括只复制结构、只复制数据及完全复制的SQL语句,并对比分析使用mysqldump和Navicat工具的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL中复制表/结构的sql数据写法

1.需求来源

我们都知道我们经常需要对表进行导出,导入操作,我们对于sql中的用法有时候会需要我们自己来写。我们需要写复制表结构及其数据 的sql,下边我们来说一下这些sql的使用用法。

2.复制表结构及其数据

语法:

create table table_name_new as select * from table_name_old ;

说明:这种复制表结构及其数据使用中需要注意,数据是能够完全导出来的,但是如果表中存在主键,使用这种写法导出新表是不会有主键的。如果要完全导出数据和表结构这种sql写法不建议【主键不会创建出来】。

3.只复制表结构

语法:

create table table_name_new as select * from table_name_old where 1=2 ;

这种写法复制表结构需要注意,新表是不会有主键的。

或者:

create table table_name_new like table_name_old ;

说明:这种复制表结构新表是有主键的。

4.只复制表数据

语法:

  • 如果两个表结构一样:

insert into table_name_new select * from table_name_old ;

这种写法能够将表数据完全复制。

  • 如果两个表结构不一样:

insert into table_name_new(column1,column2…) select column1,column2… from table_name_old ;

说明:这种写法能够将Old表指定字段的数据复制到New表中,需要注意Old表在写sql时候字段数量要保持一样多。

5.终极复制表结构及其数据【建议使用】

通过上边的介绍,我们可以使用组合sql的形式来导出复制表结构及其数据。

步骤1:

create table card_type_2 like card_type ;

说明:先把表的正确结构复制。

步骤2:

insert into card_type_2 select * from card_type ;

说明:先把表的数据完全复制。

MySQL 数据库不支持 SELECT … INTO 语句,但支持 INSERT INTO … SELECT 。

6.为什么不使用工具呢?

我自己使用mysqldump和navicat 的右键方式都用过,但是效果不佳。

6.1 使用mysqldump
  • mysqldump -h127.0.0.1 -uroot -p密码 -P端口 --add-drop-database=true --lock-tables=false --skip-triggers -t database -w “1=1” table1 table2 >> D:\123.sql

  • C:**\MySQL5\bin>mysqldump -h127.0.0.1 -uroot -p密码 -P端口 --databases nn
    m5 --tables table1 table2 >>C:*\test_en.sql

批量导出指定的表,这种mysqldump 导出的数据格式太乱。至少mysqldump 其他使用方法可自行探索。

6.2 navicat工具使用

比如需要导出某一张数据表的表结构和数据,可以按照下面的步骤:
根据自己需求进行导出数据或者结构。使用工具本地导出速度还可以。
在这里插入图片描述

但是当你使用这个工具,连接别人数据库导出表结构和表数据的时候,真的太慢:
不想说啥了,使用这个工具就导出8874条数据,给我搞了23小时,不过这23小时,我尝试上边的方法来代替了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值