今天我们说说MySQL中的复制表功能。

需要完全的复制MySQL的数据表,就需要包括表的结构、索引、默认值等。

步骤如下:

1.使用 show create table 命令获取创建数据表(create table)语句,该语句包含了原数据库表的结构、索引等

2.复制以下命令显示的SQL语句,修改数据表名,并执行SQL语句.通过以上命令将完全的复制数据表结构

3.需要复制表的内容,可以使用 insert into ... select 语句来实现


让我们来看下实例:

mysql> show databases;

+--------------------+

| Database  |

+--------------------+

| information_schema |

| Hello |

| World |

| mysql |

| performance_schema |

| sys |

+--------------------+

mysql> use Hello;

mysql> show tables;

+-----------------+

| Tables_in_hello |

+-----------------+

| cool |

+-----------------+

mysql> select * from cool;

+----+-----------+------------+-------+-----------+

| id | name | time  | score | country  |

+----+-----------+------------+-------+-----------+

| 2 | QQ | NULL  | 78 | 中国 |

| 4 | 李大志 | NULL  | 88 | 俄罗斯 |

| 5 | 葫芦 | NULL  | 77 | 英国 |

| 6 | 王五子 | NULL  | 77 | 挪威 |

| 7 | 11 | NULL  | 66 | NULL |

| 8 | 100  | 2020-07-06 |  100 | 阿根廷 |


我们来看下数据库表的结构:

mysql> show create table cool;

| Table | Create Table  

| cool | CREATE TABLE `cool` (

 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,

 `name` varchar(100) NOT NULL,

 `time` date DEFAULT NULL,

 `score` int(11) NOT NULL DEFAULT '1000',

 `country` varchar(30) DEFAULT NULL,

 PRIMARY KEY (`id`),

 UNIQUE KEY `indexName` (`id`),

 KEY `id_1` (`id`),

 FULLTEXT KEY `id_2` (`name`)

) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 |


步骤二:


修改SQL语句的数据表名,并执行SQL语句。

mysql> create table `cool_2`(

 -> `id` int(10) unsigned NOT NULL AUTO_INCREMENT,

 ->  `name` varchar(100) NOT NULL,

 ->  `time` date DEFAULT NULL,

 ->  `score` int(11) NOT NULL DEFAULT '1000',

 ->  `country` varchar(30) DEFAULT NULL,

 ->  PRIMARY KEY (`id`),

 ->  UNIQUE KEY `indexName` (`id`),

 ->  KEY `id_1` (`id`),

 ->  FULLTEXT KEY `id_2` (`name`)

 -> ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

Query OK, 0 rows affected (0.06 sec)

新建了一个cool_2的数据库表,字段、配置等都是一样的,但是没有内容

mysql> select * from cool_2;

Empty set (0.01 sec)


步骤三:


执行完第二步骤后,将在数据库中创建新的克隆表 cool_2 。如果需要拷贝数据表的数据,可以使用 INSERT INTO... SELECT 语句来实现。

mysql> insert into cool_2 (id,name,time,score,country) select id,name,time,score,country from cool;

Query OK, 6 rows affected (0.02 sec)

Records: 6 Duplicates: 0 Warnings: 0

让我们看下结果:

mysql> select * from cool_2; +----+-----------+------------+-------+-----------+

| id | name | time  | score | country  |

+----+-----------+------------+-------+-----------+

| 2 | QQ | NULL  | 78 | 中国 |

| 4 | 李大志 | NULL  | 88 | 俄罗斯 |

| 5 | 葫芦 | NULL  | 77 | 英国 |

| 6 | 王五子 | NULL  | 77 | 挪威 |

| 7 | 11 | NULL  | 66 | NULL |

| 8 | 100  | 2020-07-06 |  100 | 阿根廷 |

+----+-----------+------------+-------+-----------+

6 rows in set (0.00 sec)


和之前的cool表是一样的

今天就先到这里吧

MySQL基础---> 复制表_测试开发