使用SQL语句的子查询批量复制表数据

批量复制表数据这里有两种方法,下面分别来介绍这两种方法:

一、手动创建新表,然后复制数据

如果是要复制整个表的话,可以使用SQL SERVER自动生成CREATE脚本:

QQ截图20130809154431

然后在脚本中改改表名就可以了,这样就有了一张和原来一模一样的新表。

· INSERT INTO SELECT

语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1

说明:要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。

QQ截图20130809155215

图中是本例使用的源表的结构(当然目标表和它是一模一样的),因为目前复制的这张表含有主键,并且设为标识自动增长,所以在向新表插入数据时会发生不允许向标识列插入数据的错误,请参考文章:http://www.cnblogs.com/xwgli/p/3210928.html

本例的SQL语句即为:
insert into Categories2([CategoryID],[CategoryName],[Description],[Picture])
select * from Categories 
 
 
二、直接复制数据,在复制过程中自动创建新表
 
· SELECT INTO FROM

语句形式为:SELECT vale1, value2,… into Table2 from Table1
说明:要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。

同样还是上一张表为例,SQL语句:

select * into Categories3 from Categories

但此时新表Categories3的设计就只有字段名、字段类型、是否为空与源表保持一致,主键外键等约束会消失,需要自行手动添加。

QQ截图20130809155857

以上就是两种批量复制数据的SQL语句。

原文地址:https://www.cnblogs.com/xwgli/p/3248470.html