insert table 和create table as 区别

作者:iamlaosong

首先,最大的区别是二者属于不同类型的语句,前者是DML语句(数据操作语言,SQL中处理数据等操作统称为数据操纵语言),完成后需要提交才能生效,后者是DDL语句(数据定义语言,用于定义和管理 SQL 数据库中的所有对象的语言 ),执行完直接生效,不提供回滚,效率比较高。其次,功能不同,前者只是插入数据,必须先建表;后者则建表和插入数据一块完成。

insert  into  table1(columns1,columns2) select  columns1,columns2  from  table2;
从table2中查询的结果插入到table1中,前提是table1和table2已经存在;
 
 create.  as..select一般有以下三种方式:
1. create table table1 as select  * from table2  where 1=2;
创建一个表结构与table2一模一样的表,只复制结构不复制数据;
2.create  table table1  as  select *   from table2  ;
  创建一个表结构与table2一模一样的表,复制结构同时也复制数据;
3.create  table table1(columns_a,columns_b) as select  columns1,columns2  from table2; 
创建一个表结构与table2一模一样的表,复制结构同时也复制数据,但是指定新表的列名,这种格式也用于复制table2部分字段;

后面两种格式,如果后面跟上合适的查询条件,可以只复制符合条件的数据到新的表中,例如:

create  table table1  as  select *   from table2  where columns1>=1;

可能的情况下,建议用第二种方式,这种方式不仅能一次完成建表和插入数据,而且效率高,特别是当复制的数据量比较大时,可以避免大量数据存在回滚空间中等待提交。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值