一、将旧表复制到新表

(1)CREATE TABLE 新表 SELECT * FROM 旧表; 该语句只是复制表结构以及数据,它不会复制与表关联的其他数据库对象,如索引,主键约束,外键约束,触发器等

CREATE TABLE if not exists new_table
SELECT col1, col2, col3
FROM
existing_table
WHERE
conditions;

(2)MySQL数据库不支持SELECT … INTO 语句,但支持 INSERT INTO … SELECT

  • INSERT INTO 新表 SELECT * FROM 旧表;(复制全部)
  • INSERT INTO 新表 (column_name(s)) SELECT column_name(s) FROM 旧表;(只复制某一或某几列)

⚠️:在使用select into 语句与insert into select 语句时,新表要提前建立,并且新表与旧表的字段属性要一样才可以(create table 新表 like 旧表;

二、复制相同表结构

两种方式:create table as和create table like

create table 新表 like 旧表;create table 新表 as select * from 旧表 limit 0;

二者的区别:

  • as用来创建相同表结构并复制源表数据
  • like用来创建完整表结构和全部索引
  • oracle支持as,也是只有表结构没有索引;oracle不支持like