文章目录

  • 一、复制表结构及数据到新表
  • 二、只复制表结构到新表
  • (一)使用关键字 like
  • (二)使用 select 语句
  • 三、真正完整复制表
  • 四、复制表,同时重新定义字段名(拷贝旧表中部分的字段)
  • 五、复制表,同时定义字段信息
  • 六、复制旧表的数据到新表(整表复制数据)
  • 七、复制旧表的数据到新表(按字段复制数据)


一、复制表结构及数据到新表

将数据表 tf_notice 的结构和数据复制到新表 t_notice 中

mysql> create table t_notice select * from tf_notice;
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0

注意:该语句只是按 select 语句执行的结果新建表,并不会复制表的主键、索引等信息。说白了就是将 select 语句查询的结果存储为一张表,新表取名为 t_notice。

二、只复制表结构到新表

(一)使用关键字 like

mysql> create table t_notice like tf_notice;
Query OK, 0 rows affected (0.00 sec)

注意:

  1. 此种方法会将主键、索引等信息一起复制
  2. MySQL 4.0.25 之前的版本不支持此种方法

(二)使用 select 语句

mysql> create table t_notice select * from tf_notice where 1=2;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

注意:该语句只是按 select 语句执行的结果新建表,并不会复制表的主键、索引等信息。

三、真正完整复制表

mysql> create table t_notice like tf_notice;
mysql> insert into t_notice select * from tf_notice;

四、复制表,同时重新定义字段名(拷贝旧表中部分的字段)

mysql> create table t_notice select notice_id id,title bt,content nr,sex xb from tf_notice;
CREATE TABLE t_notice AS (SELECT notice_id AS id,title AS bt,content AS nr,sex AS xb FROM tf_notice);
mysql> CREATE TABLE t_notice AS (SELECT notice_id,title,content FROM tf_notice);

五、复制表,同时定义字段信息

create table t_notice
(
notice_id INTEGER not null auto_increment PRIMARY KEY
)
select * from tf_notice;

说明:字段 notice_id 必须存在于 select 语句的结果中才行。

六、复制旧表的数据到新表(整表复制数据)

mysql> insert into t_notice select * from tf_notice;

说明:

  1. 新表 t_notice 必须先创建
  2. 复制旧表整表的数据,新表的字段结构必须和旧表 tf_notice 相同,主要是指字段数量要相同,字段类型和字段长度只要存值不报错就行,字段名可以不同

七、复制旧表的数据到新表(按字段复制数据)

INSERT INTO t_notie(id,bt,nr) SELECT notice_id,title,content FROM tf_notice;