SQL中一次插入多条数据

摘要:
SQL中insert一次可以插入一条数据,我们有三种方法可以一次性插入多条数据。在此处还有一些有趣的问题,当我使用以下代码来插入多条数据时:selecttop0*intonewstudentfromstudentinsertintonewstudentselect*fromstudent这里会发生这样的报错:因为NewClass表中ClassId为标识列,所以我们不能插入值。我们的解决办法如下:selecttop0*intonewstudentfromstudentsetidentity_insertnewstudentoninsertintonewstudentselect*fromstudent我们把newstudent的标识列插入写为显示的,并且添加了列名字段便可以插入了。

SQL中insert一次可以插入一条数据,我们有三种方法可以一次性插入多条数据。

1.

语法:select 字段列表 into 新表 from 源表

注意事项:此种方法新表是系统自动创建,语句执行前不可以存在新表,并且新表只能保留源表的标识列特性,其他约束不能保留。

若只需要源表的数据结构,我们可以在语句中添加(top 0)

2.

语法:insert into 目的表select 字段列表 from 源表

注意事项:此种方法目的表必须在语句执行前存在,并且每一列要与源表对应。

在此处还有一些有趣的问题,当我使用以下代码来插入多条数据时:

select top 0 * into newstudent fromstudent
insert into newstudent select * from student

这里会发生这样的报错:

SQL中一次插入多条数据第1张

因为NewClass表中ClassId为标识列,所以我们不能插入值。

我们的解决办法如下:

select top 0 * into newstudent fromstudent
set identity_insert newstudent on
insert into newstudent (classid,classname) select * from student

我们把newstudent 的标识列插入写为显示的,并且添加了列名字段便可以插入了。

之后我们再创建一个新的NewClass2:

select top 0 *into NewClass2 fromMyClass
set identity_insert NewClass2 on
insert into NewClass2(ClassId,ClassName) select* from MyClass

此时还会报错,这是因为我们之前设置了newclass的标识列插入为on,我们必须先关闭后才可以往newclass2插入值,代码如下:

select top 0 *into NewClass2 fromMyClass
set identity_insert newclass off
set identity_insert NewClass2 on
insert into NewClass2(ClassId,ClassName) select* from MyClass

至此我们解决了使用第二种方法一次插入多条数据。

3.

语法:insert into 表(字段列名) select 值 union select值

免责声明:文章转载自《SQL中一次插入多条数据》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇AnimationROS学习之日志消息下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

EXEC用法总结

一、使用EXEC执行存储过程 例如存储过名为:myprocedure useAdventureWorks createproceduremyprocedure@cityvarchar(20) as begin select*fromPerson.Address end execmyprocedure@city='Bothell' --或...

sql xml操作

T-Sql操作Xml数据 一、前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型。用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列;此外,还允许带有变量和参数。为了更好地支持 XML 模型特征(例如文档顺序和递归结构),XML 值以内部格式存储为大型二进制对象 (BLOB)。 用户将一个XML数据存入数据库的时...

oracle dblink使用

一、dblink介绍 dblink是一个单向的数据库连接,通过设置可以访问其他数据库中的数据跟使用本地数据库中数据一样的感觉,但注意是单向的dblink。例如:A建连B的dblink,A可以访问B的表,插入数据到B的表等,但反过来B不可以。 创建dblink一般有两种方式,不过在创建dblink之前用户必须有创建dblink的权限。想知道有关dblink的...

.Net程序员学用Oracle系列(13):合并语句(MERGE)

1、语法说明 1.1、UPDATE 和 INSERT 可以只出现一个 1.2、UPDATE 后面还可以再跟 WHERE 1.3、UPDATE 和 INSERT 同时出现 1.4、UPDATE 之后还可以再删除行 1.5、将两个列的部分行值互换 2、常见雷区 2.1、ORA-30926: 无法在源表中获得一组稳定的行 2.2、USING 了...

Sql 本周当天本期日期转换

--查询当天: select * from info where DateDiff(dd,datetime,getdate())=0 --查询24小时内的: select * from info where DateDiff(hh,datetime,getDate())<=24 --info为表名,da...

学习笔记之SQL 教程

SQL 教程 | 菜鸟教程 http://www.runoob.com/sql/sql-tutorial.html SQL,指结构化查询语言,全称是 Structured Query Language。 SELECT TOP 子句用于规定要返回的记录的数目。SELECT TOP 子句对于拥有数千条记录的大型表来说,是非常有用的。注释:并非所有的数据库系统...