create table table_name as

建表时可以同时复制表结构和数据,也可以只复制表结构

复制表结构和数据

create table table_name_new as 
    select * from table_name_old;

 

只复制表结构

create table table_name_new as
    select * from table_name_old where 1=2;    --加上一个不可能成立的条件

复制表结构也可以这样

create table table_name_new like table_name_old;

 

insert into table_name select

写入时只能复制数据,但要区分表结构是否一致;

注意:这种方式需要新表事先存在

表结构一致

insert into table_name_new 
    select * from table_name_old;

 

表结构不一致

此时需要指定对应列

insert into table_name_new (columnX, columnY)
    select (columnM, columnN) from table_name_old;

 

select into table_name

查询时只能复制表数据,且不区分表结构是否一致,因为新表事先不能存在

select * into table_name_new from table_name_old where...;

自动创建表并将查到的数据写入新表

 

 

参考资料:

https://www.runoob.com/sql/sql-insert-into-select.html