求sql怎么一次用insert 添加多条数据

作者&投稿:野阅 (若有异议请与网页底部的电邮联系)
如何一次插入多条记录的SQL语句?~

在使用SQL数据库的时候,我们也许会需要一次像数据库中添加多条记录,那么我们可以使用SQL语句来实现,该语句具体如下:
--添加一条记录
INSERT INTO tableName(col1,col2,col3) VALUES (1,2,3)

--添加多条记录
INSERT INTO tableName(col1,col2,col3)
SELECT 3,4,5
UNION ALL
SELECT 6,7,8

--从另外的一张表中读取多条数据添加到新表中
INSERT INTO tableName(col1,col2,col3)
SELECT a,b,c FROM tableA

--从其他的多张表中读取数据添加到新表中
INSERT INTO tableName(col1,col2,col3)
SELECT a,b,c FROM tableA WHERE a=1
UNION ALL
SELECT a,b,c FROM tableB WHERE a=2
上边代码中的into都可以省略!
上边代码中的union all如果换成union,则相同记录只插入一次,不会重复插入。
另外一种方法是SQL Server2008特有的,所以,如果你不是SQL Server2008,就不能使用这种方法了。
INSERT INTO MyTable(ID,NAME)VALUES(7,'003'),(8,'004'),(9,'005')
create table [TEST]
(
[NUM_ID] int primary key
)
go
declare @temp int
set @temp=1;
while @temp<=1000000
begin
insert into [TEST]([NUM_ID]) values(@temp)
set @temp=@temp+1;
end
go
----------------------------------------------------------
--试试下面的方法
--2005
DECLARE @n AS BIGINT;
SET @n = 1000000;
WITH Base AS
(
SELECT 1 AS n
UNION ALL
SELECT n + 1 FROM Base WHERE n < CEILING(SQRT(@n))
),
Expand AS
(
SELECT 1 AS c
FROM Base AS B1, Base AS B2
),
Nums AS
(
SELECT ROW_NUMBER() OVER(ORDER BY c) AS n
FROM Expand
)
SELECT n FROM Nums WHERE n <= @n
OPTION(MAXRECURSION 0);
--2
CREATE FUNCTION dbo.fn_nums(@n AS BIGINT) RETURNS TABLE
AS
RETURN
WITH
L0 AS(SELECT 1 AS c UNION ALL SELECT 1),
L1 AS(SELECT 1 AS c FROM L0 AS A, L0 AS B),
L2 AS(SELECT 1 AS c FROM L1 AS A, L1 AS B),
L3 AS(SELECT 1 AS c FROM L2 AS A, L2 AS B),
L4 AS(SELECT 1 AS c FROM L3 AS A, L3 AS B),
L5 AS(SELECT 1 AS c FROM L4 AS A, L4 AS B),
Nums AS(SELECT ROW_NUMBER() OVER(ORDER BY c) AS n FROM L5)
SELECT n FROM Nums WHERE n <= @n;
GO
--2000 这个会比前两个慢,但是前两个2000不能用
CREATE TABLE dbo.Nums(n INT NOT NULL PRIMARY KEY);
DECLARE @max AS INT, @rc AS INT;
SET @max = 1000000;
SET @rc = 1;
INSERT INTO Nums VALUES(1);
WHILE @rc * 2 <= @max
BEGIN
INSERT INTO dbo.Nums SELECT n + @rc FROM dbo.Nums;
SET @rc = @rc * 2;
END
INSERT INTO dbo.Nums
SELECT n + @rc FROM dbo.Nums WHERE n + @rc <= @max;
--------------------------------------------------------------------------------------------------------

使用 INSERT 添加行
INSERT 语句可给表添加一个或多个新行。INSERT 语句在简单的情况下有如下形式:

INSERT [INTO] table_or_view [(column_list)] data_values

此语句将使 data_values 作为一行或者多行插入已命名的表或视图中。column_list 是由逗号分隔的列名列表,用来指定为其提供数据的列。如果没有指定 column_list,表或者视图中的所有列都将接收数据。

如果 column_list 没有为表或视图中的所有列命名,将在列表中没有命名的任何列中插入一个 NULL 值(或者在默认情况下为这些列定义的默认值)。在列的列表中没有指定的所有列都必须允许 null 值或者指定的默认值。

由于 Microsoft® SQL Server™ 为以下类型的列生成值,INSERT 语句将不为这些类型的列指定值:

具有 IDENTITY 属性的列,该属性为列生成值。


有默认值的列,该列用 NEWID 函数生成一个唯一的 GUID 值。


计算列。
这些是虚拟列,被定义为 CREATE TABLE 语句中从另外一列或多列计算的表达式,例如:

CREATE TABLE TestTable
(ColA INT PRIMARY KEY,
ColB INT NOT NULL,
ColC AS (ColA + ColB) * 2)

所提供的数据值必须与列的列表匹配。数据值的数目必须与列数相同,每个数据值的数据类型、精度和小数位数也必须与相应的列匹配。有两种方法指定数据值:

用 VALUES 子句为一行指定数据值:
INSERT INTO MyTable (PriKey, Description)
VALUES (123, 'A description of part 123.')

用 SELECT 子查询为一行或多行指定数据值。
INSERT INTO MyTable (PriKey, Description)
SELECT ForeignKey, Description
FROM SomeView

--一条insert只能插入一行数据,除非你有一个相同数据类型的表需要复制表数据批量插入可以使用
Insert into Table2(field1,field2,...) select value1,value2,... from Table1
--要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。


用遍历可以呀  下面的owners就是你传进去的List 遍历每一条就是一个对象的数据

<insert id="insertOrUpdateOwners" parameterType="java.util.List">
       INSERT INTO OWNER (
village_id,
building_id,
house_id,
owner_name,
dwell_time,
owner_phone,
id_number,
sex,
is_owner,
owners_reserve3
)
VALUES
<foreach collection="owners" item="owner" index="index" separator=",">
   (
       #{owner.villageId},
       #{owner.building_id},
       #{owner.house_id},
       #{owner.ownerName},
       #{owner.dwellTime},
       #{owner.ownerPhone},
       #{owner.idNumber},
       #{owner.sex},
       #{owner.isOwner},
       #{owner.ownersReserve3}
       )
   </foreach>


使用insert into select 格式
前提是 你要添加的数据是可以通过select 查询出来的

写循环或insert table values(..)select ..from table2

例如
insert into table(col1,col2,col3)
select 3,4,5
union all
select 6,7,8


sql数据库一字段内容被批量加入<i id=$*><\/i>,提交时已过滤 < > 等符...
要把&后的空格去掉..我这不加上空格的话..显示的就和你的一样了..

如何使用sqlcmd在批处理脚本中执行SQL?
[ -i input_file ] [ -o output_file ] sql存在文件里的话用-i,输出到文件用-o;[ -q "cmdline query" ] [ -Q "cmdline query" and exit ] 输入是简单的sql,不用文件,推荐用-Q,如果你执行完sqlcmd还需要执行别的动作的话;[ -W remove trailing spaces ] 删除多余的空格,结果会...

sql 语句查询 第一条件为I05-I09,I11-I13,第二条件I50。SQL怎样写...
where a in ('I05','I06','I07','I08','I09') or a='I50'

SQL一个字段多个数值怎么用update语句在每个数值上都加1
1、定义表,把这个字段里面的值全放在这个表里面 table 2、定义一个变量a,a=该字段值的个数 3、用for循环,定义变量i=0,i就<a 4、for循环里面,table里面的值每循环一次就+1

我有多条sql的更新语句,怎么用一个循环语句执行一次更新整一张数据表...
1、首先,使用Navicat for MySQL连接数据库并创建一个数据库。2、接着点击查询,这里有两个查询,随便点击一个都可以。3、既然是要执行SQL语句,所以我们要先新建一个查询窗体才得。4、写一句SQL语句来演示啦。5、写完练习的SQL语句,再点击运行按钮,左上方的绿色图标就是。6、然后记得刷新一下表,...

SQL Server 2000 的查询,我写的只能根据一个输入ID来查询。用户每次会输...
1. 写一个存储过程,输入参数为用户填写的id串;存储过程负责此id串拆分插入一张临时表,比如t_ta(临时表有2个字段,比如:serid(序号,表示一次处理,每调用一次此存储过程,新生成一个序号),inputid(拆分后的id),2者联合主键 2. 在查询时,使用临时表就可以了 select * from table where ...

sql server 循环语句里可不可以让i小于一个变量?
update table set d1 = case when 1<= a then 1 else null end,d2 = case when 2<= a then 1 else null end,d3 = case when 3<= a then 1 else null end,d4 = case when 4<= a then 1 else null end

SQL server 的IDENTITY i
在SQL Server中,IDENTITY列的使用方式需要特别注意。当创建一个具有自增长ID的表,如表ta,其id列被定义为IDENTITY,插入数据时,有一些关键点需要掌握。首先,与常规字段不同,IDENTITY列并不需要在INSERT语句的字段列表中明确指定。例如,当你创建表ta,其结构如下:sqlCREATE TABLE ta ( id INT I...

sql的network I\/O是什么意思
程序发送请求到数据库取数据,sql把数据查出来之后发给程序,是通过网络传输的,所以就是网络io。如果是等在网络io,要么是取数太多,要么是程序取数是一条条的,而不是一次把数据都取走在处理

int i = (int)sqlselect.ExecuteScalar();中i是什么意思 if(i==1...
ExecuteScalar();这是SqlCommand的方法。用于执行返回当个结果值的SQL语句。比如:select sname from users where id=1这样的话只返回id为1的人的姓名。只可以返回单个结果值,至于是返回数值,还是字符串,均可。只是返回的结果需要数据类型转换。看你的代码应该是返回一个数值,if(i==1)就是判断你...

嵊州市18013011386: 求sql怎么一次用insert 添加多条数据 -
冷响咪唑: 用insert 添加多条数据:insert into 表1(列名) select 列名 from 表2 --主键要自增 对于主键不自增的也可以处理,如:建一张临时表,主键ID自增,然后取出要插入有的最大值,把最大值加到临时表ID上再用:insert into 表1(ID,列名) select ID...

嵊州市18013011386: 求sql怎么一次用insert 添加多条数据 -
冷响咪唑: 开启事务啊!把要添加的数据放到一个list中,然后循环insert最后提交事务就可以了

嵊州市18013011386: 求sql怎么一次用insert 添加多条数据 -
冷响咪唑: insert into table select * from tableB* 这里可是和table结构相同的tableB列

嵊州市18013011386: 求sql怎么一次用insert 添加多条数据 -
冷响咪唑: 2008开始支持:INSERT ...VALUES(...) --行1 (...) --行2

嵊州市18013011386: 求sql怎么一次用insert 添加多条数据 -
冷响咪唑: INSERT INTO `user` VALUES('1', 'Jack', '123456', '13800000000', '2017-05-27', b'1'),('2', 'Lucy', '123456', '15088888888', '2017-05-26', b'0'),...('10', 'Lucy', '123456', '15088888888', '2017-05-26', b'0');

嵊州市18013011386: 求sql怎么一次用insert 添加多条数据 -
冷响咪唑: insert into table select * from tableB* 这里可是和table结构相同的tableB列

嵊州市18013011386: 求sql怎么一次用insert 添加多条数据 -
冷响咪唑: 您好:以下两种写法,您可以选择适合的方式使用.INSERT INTO 目标表名(字段名) SELECT 字段名 FROM 源表名 WHERE 条件 INSERT INTO 表名(字段名) VALUES (值),(值),(值)

嵊州市18013011386: sql server 里sql语句一次插入两条数据 -
冷响咪唑: sql server:INSERT table_1(ID,Name) SELECT '1111','john' UNION SELECT '1112','kitty';

嵊州市18013011386: sql 的insert 语句怎样一次插入多行 -
冷响咪唑: insert into select value() union .... 插入多行!

嵊州市18013011386: 如何一次插入多条记录的SQL语句? -
冷响咪唑: 在使用SQL数据库的时候,我们也许会需要一次像数据库中添加多条记录,那么我们可以使用SQL语句来实现,该语句具体如下: --添加一条记录 INSERT INTO tableName(col1,col2,col3) VALUES (1,2,3)--添加多条记录 INSERT INTO ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网