mysql表结构复制

来源:互联网 发布:武汉mac专柜在哪里 编辑:程序博客网 时间:2024/05/07 08:57

方式1:

create table `表名` like `表名`;--包含了所有的结构。如主键。索引。但是不包含外键等

方式2:

create table `表名` select * from `表名` where 1=2;--不拷贝数据到新表。只创建表。创建的表不包括主键索引等

方式3:

使用 show create table `表名`;将创建语句复制出来执行。创建的表结构与原始表一模一样。

举个例子

首先创建一个表。包括一个主键。1个索引

CREATE TABLE `tb` (
`id`  int NOT NULL AUTO_INCREMENT ,
`name`  varchar(255) NULL ,
`sex`  int(11) NULL ,
PRIMARY KEY (`id`),
INDEX `name` (`name`) 
)
;

显示表的创建语句

show create table `tb`\G;



使用方式1创建表 tb_create_1;

 create table `tb_create_1` like `tb`;



显示新建表的创建语句

show create table `tb_create_1` \G ;


创建语句一样。但是注意。如果有外键或者其他约束条件的话。这个地方的创建语句就会不一样。当然创建出来的表结构。也不和原始表相同

第2种方式创建表`tb_create_2`

create table `tb_create_2` select * from `tb` where 1=2;


显示新建表的创建语句

show create table `tb_create_2` \G ;



创建语句和我们的原表差距很大。主键和索引全部都未创建出来

第3种方式创建表

show create table `tb` \G;



复制出创建语句。修改表名为`tb_create_3`

最终语句为

 CREATE TABLE `tb_create_3` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `sex` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

执行这个语句



显示新建表的创建语句

show create table tb_create_3 \G;




最终我建议大家在复制表结构时候。如果表结构简单。那么使用第1种方式。如过表结构很复杂我对剑使用show create table 的ddl来复制创建表结构

0 0
原创粉丝点击