Ⅰ 如何一次插入多条记录的sql语句
在使用SQL数据库的时候,我们也许会需要一次像数据库中添加多条记录,那么我们可以使用SQL语句来实现,该语句具体如下:x0dx0a--添加一条记录 x0dx0aINSERT INTO tableName(col1,col2,col3) VALUES (1,2,3) x0dx0a x0dx0a--添加多条记录 x0dx0aINSERT INTO tableName(col1,col2,col3) x0dx0aSELECT 3,4,5 x0dx0aUNION ALL x0dx0aSELECT 6,7,8 x0dx0a x0dx0a--从另外的一张表中读取多条数据添加到新表中 x0dx0aINSERT INTO tableName(col1,col2,col3) x0dx0aSELECT a,b,c FROM tableA x0dx0a x0dx0a--从其他的多张表中读取数据添加到新表中 x0dx0aINSERT INTO tableName(col1,col2,col3) x0dx0aSELECT a,b,c FROM tableA WHERE a=1 x0dx0aUNION ALL x0dx0aSELECT a,b,c FROM tableB WHERE a=2 x0dx0a上边代码中的into都可以省略!x0dx0a上边代码中的union all如果换成union,则相同记录只插入一次,不会重复插入。x0dx0a另外一种方法是SQL Server2008特有的,所以,如果你不是SQL Server2008,就不能使用这种方法了。 x0dx0aINSERT INTO MyTable(ID,NAME)VALUES(7,顛'),(8,顜'),(9,顝')x0dx0acreate table [TEST]x0dx0a(x0dx0a [NUM_ID] int primary keyx0dx0a)x0dx0agox0dx0adeclare @temp intx0dx0aset @temp=1;x0dx0awhile @temp<=1000000 x0dx0abeginx0dx0ainsert into [TEST]([NUM_ID]) values(@temp)x0dx0aset @temp=@temp+1;x0dx0aendx0dx0agox0dx0a----------------------------------------------------------x0dx0a--试试下面的方法x0dx0a--2005x0dx0aDECLARE @n AS BIGINT;x0dx0aSET @n = 1000000;x0dx0aWITH Base ASx0dx0a(x0dx0a SELECT 1 AS nx0dx0a UNION ALLx0dx0a SELECT n + 1 FROM Base WHERE n < CEILING(SQRT(@n))x0dx0a),x0dx0aExpand ASx0dx0a(x0dx0a SELECT 1 AS cx0dx0a FROM Base AS B1, Base AS B2x0dx0a),x0dx0aNums ASx0dx0a(x0dx0a SELECT ROW_NUMBER() OVER(ORDER BY c) AS nx0dx0a FROM Expandx0dx0a)x0dx0aSELECT n FROM Nums WHERE n <= @nx0dx0aOPTION(MAXRECURSION 0);x0dx0a--2x0dx0aCREATE FUNCTION dbo.fn_nums(@n AS BIGINT) RETURNS WITHx0dx0a L0 AS(SELECT 1 AS c UNION ALL SELECT 1),x0dx0a L1 AS(SELECT 1 AS c FROM L0 AS A, L0 AS B),x0dx0a L2 AS(SELECT 1 AS c FROM L1 AS A, L1 AS B),x0dx0a L3 AS(SELECT 1 AS c FROM L2 AS A, L2 AS B),x0dx0a L4 AS(SELECT 1 AS c FROM L3 AS A, L3 AS B),x0dx0a L5 AS(SELECT 1 AS c FROM L4 AS A, L4 AS B),x0dx0a Nums AS(SELECT ROW_NUMBER() OVER(ORDER BY c) AS n FROM L5)x0dx0a SELECT n FROM Nums WHERE n <= @n;x0dx0aGOx0dx0a--2000 这个会比前两个慢,但是前两个2000不能用x0dx0aCREATE TABLE dbo.Nums(n INT NOT NULL PRIMARY KEY);x0dx0aDECLARE @max AS INT, @rc AS INT;x0dx0aSET @max = 1000000;x0dx0aSET @rc = 1;x0dx0aINSERT INTO Nums VALUES(1);x0dx0aWHILE @rc * 2 <= @maxx0dx0aBEGINx0dx0a INSERT INTO dbo.Nums SELECT n + @rc FROM dbo.Nums;x0dx0a SET @rc = @rc * 2;x0dx0aENDx0dx0aINSERT INTO dbo.Numsx0dx0a SELECT n + @rc FROM dbo.Nums WHERE n + @rc <= @max; x0dx0a--------------------------------------------------------------------------------------------------------
Ⅱ 求sql怎么一次用insert 添加多条数据
数据库是没有真正的批量新增记录。因为每新增一个条记录数据库系统要进行校验,比如触发器。
可以用多条insert语句,类似批量添加多条记录。
比如 :
insert into table values(var1...);
insert into table values(var2...);
...
insert into table values(varN...);
不过,实质上数据库还是逐条添加的,并不是同时添加所以尽量。
Ⅲ sql 向数据库中增加多条数据,用sql命令怎么写急!急!急!
insert语句必须一条一条写,这个是没什么办法的,除非你要插入的数据已经在其他表中有了告诉你一个办法,我们工作中都是这样的,几十万条数据插入都是这样做。先把数据整理到一个excel里,然后根据excel生成sql语句,遇过你不会用程序做,可以直接用excel的功能,把不同列的数据拼起来就可以了
Ⅳ access数据库sql插入语句,插入多条怎么写
基本不用想了,access不支持在sql视图里一次执行多个插入,用这个方法好了:
开始事务
try
{
执磨带行第一条...
执行第2条...
.
.
.
执行第n条
提交事务
}
catch{rollback();}
string[]SQLStringList={sql1,sql2,sql3};
for(intn=0;n<SQLStringList.Length;n++)
{
stringstrsql=SQLStringList[n].ToString();
if(strsql.Trim().Length>1)
{
cmd.CommandText=strsql;
cmd.ExecuteNonQuery();
}
敏游则}
cmd.Transaction.Commit();//提交事务
还有,桥棚你库存量的字段应该是个数字型的,为什么要加引号呢?序号字段如果也是数字类型,也改了吧
Ⅳ 求sql怎么一次用insert 添加多条数据
--一条insert只能插入一行数据,除非你有一个相同数据类型的表需要复制表数据批量插入可以使用
InsertintoTable2(field1,field2,...)selectvalue1,value2,...fromTable1
--要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。
Ⅵ 如何用SQL语句向一个表中插入多行记录
insert一般是用来给表插入一条指定的列值的,但是,insert还存在另一种形式,可以利用它将一条select语句的结果插入表中。
这就是所谓的insert select,顾名思义,它是由一条insert语句和一条select语句组成的。假如你从另一张表中合并客户列表到你的Custumers表,不需要每次读取一行,然后再将它用insert插入,可以如下进行:
insert into Custumer(cust_id,
cust_cintact,
cust_name,
cust_email,
cust_address,
cust_country)
select cust_id,
cust_cintact,
cust_name,
cust_email,
cust_address,
cust_country
from CustNew;
(6)sql插入多条数据的语句扩展阅读
insert select中的列名为简单起见,这个例子在insert和select语句中使用了相同的列名,但是,不一定要求列名匹配。事实上,DBMS甚至不关心select返回的列名,它使用的是列的位置。
因此,select中的第一列(不管其列名)将用来填充表列中的指定的第一个列,第二列将用来填充表列中指定的第二个列,如此等等。
Ⅶ 求sql怎么一次用insert 添加多条数据
可以一次加入多条记录。
在SQL
SERVER里边,多个INSERT
语句之间,用分号(;)或者空格,隔开,这样数据库就认为你是在进行多条SQL语句的插入操作。就可以插入多条了。
Ⅷ 求sql怎么一次用insert 添加多条数据
如果是sqlserver支持多sql语句,你可以将所有的insert拼接成字符串,一起发送到服务器
或者你可以批量插入另一个数据集的数据
insert xxx(id,name) select id,name from xxx