在MySQL中操作克隆表的教程
程序员文章站
2024-02-29 13:22:58
可能有一种情况,当需要一个完全相同的副本表create table ... select不适合需要,因为副本必须包含相同的索引,默认值,依此类推。
按下面的步骤,可以处理...
可能有一种情况,当需要一个完全相同的副本表create table ... select不适合需要,因为副本必须包含相同的索引,默认值,依此类推。
按下面的步骤,可以处理这种情况。
- 使用show create table得到一个create table语句中指定源表的结构,索引等。
- 修改语句更改表名称的克隆表,并执行该语句。通过这种方式将有确切的克隆表。
- 或者,如果需要进行表的内容复制,使用insert into ... select语句也可以搞定。
实例:
试试下面的例子来创建一个克隆表tutorials_tbl
步骤 1:
有关表获取完整的结构
mysql> show create table tutorials_tbl \g; *************************** 1. row *************************** table: tutorials_tbl create table: create table `tutorials_tbl` ( `tutorial_id` int(11) not null auto_increment, `tutorial_title` varchar(100) not null default '', `tutorial_author` varchar(40) not null default '', `submission_date` date default null, primary key (`tutorial_id`), unique key `author_index` (`tutorial_author`) ) type=innodb 1 row in set (0.00 sec) error: no query specified
步骤 2:
重命名此表,并创建另一个表
mysql> create table `clone_tbl` ( -> `tutorial_id` int(11) not null auto_increment, -> `tutorial_title` varchar(100) not null default '', -> `tutorial_author` varchar(40) not null default '', -> `submission_date` date default null, -> primary key (`tutorial_id`), -> unique key `author_index` (`tutorial_author`) -> ) type=innodb; query ok, 0 rows affected (1.80 sec)
步骤 3:
在执行步骤2的克隆数据库的表中。如果想从旧表中的数据复制,那么可以通过使用insert into... select语句。
mysql> insert into clone_tbl (tutorial_id, -> tutorial_title, -> tutorial_author, -> submission_date) -> select tutorial_id,tutorial_title, -> tutorial_author,submission_date, -> from tutorials_tbl; query ok, 3 rows affected (0.07 sec) records: 3 duplicates: 0 warnings: 0
最后,将有确切的克隆表。