如何一次向SQL Server Insert多条记录

如何一次向SQL Server Insert多条记录,第1张

楼主好,首先要看你插入的是什么数据,是枚举型的还是结果集。枚举类型插入多条的语法如下:

insert into 目标表

(列名1,列名2,···,列名n)

values

(A内容1,A内容2,···,A内容n),

(B内容1,B内容2,···,B内容n),

····,

(N内容1,N内容2,···,N内容n)

如果你插入的是查询的结果集

insert into 目标表

(列名1,列名2,···,列名n)

select 列1,列2,···,列n from 表

当然,插入的结果集可以是各种查询,比如关联查询,复杂查询等等,也可以是派生列。

sqlserver修改第二行数据参考以下方法

INSERT 语句向表中添加新行 (单条插入),以下是 INSERT 语句的最基本形式:

INSERT INTO table_name (column_name_1,column_name_2)

VALUES (value_list_1,value_list_2);

SQL Server自动对表中可用的列使用以下值,但不会出现在 INSERT 语句的列列表中:

- 如果列具有[IDENTITY]属性,则为下一个增量值。

- 如果列具有指定的默认值,则为默认值。

- 如果列的数据类型是时间戳数据类型(timestamp),则默认为当前时间戳值。

- 如果列可以为 NULL 值,则使用 NULL。

Insert多行。

要一次向表中添加多行,请使用以下形式的 INSERT 。

按照你现有的表创建历史数据:

create table khqfbd_1

(khn int,

khqxh int,

khmc varchar2(20),

qsrq varchar2(8),

jsrq varchar2(8),

bz varchar2(100));

insert into khqfbd_1 values (2024,1,'第一季度','20240101','20240331','1');

insert into khqfbd_1 values (2024,2,'第二季度','20240401','20240630','1');

insert into khqfbd_1 values (2024,3,'第三季度','20240701','20240930','1');

insert into khqfbd_1 values (2024,4,'第四季度','20241001','20241231','1');

commit;

执行:

declare

  v_year int;

begin

  select max(khn) into v_year from khqfbd_1;

  insert into khqfbd_1

  values

    (v_year+1, 1, '第一季度', v_year+1 || '0101', v_year+1 || '0331', '1');

  insert into khqfbd_1

  values

    (v_year+1, 2, '第二季度', v_year+1 || '0401', v_year+1 || '0630', '1');

  insert into khqfbd_1

  values

    (v_year+1, 3, '第三季度', v_year+1 || '0701', v_year+1 || '0930', '1');

  insert into khqfbd_1

  values

    (v_year+1, 4, '第四季度', v_year+1 || '1001', v_year+1 || '1231', '1');

  commit;

end;

执行后结果:

第一步,你先找个有足够多记录的表,比如我这里有个表temp,里面有很多记录。

第二步,insert into 要插入记录的表 select rownum,1,0,0,9 from temp where rownum <= 要生成的行数。

执行以上两步即可。

针对于Oracle数据库,其他类型的数据库原理一样。另外,表temp中行数要比你要生成的行数多。

你可以直接写在ADOquery1裏面,(不要在delphi前台) 用存储过程或者直接写都可以

语句如下:

insert into(免除评定,试验评定,编制者,编制日期)

values(:mc,:sy,:bzhzh,:bzhrq,)

delphi前台的语句是

with adoquery1 do

begin

adoquery1close;

adoquery1Parameters[0]Value:=mc_edtext;

adoquery1Parameters[1]Value:=sy_edtext;

adoquery1Parameters[2]Value:=bzhzh_edText;

adoquery1Parameters[3]Value:=bzhrq_edtext;

adoquery1Parameters[4]Value:=

--有多少写多少

ADOQuery1execsql;

end

mysql的项目,需要设计一个快速上载的机制

最后的解决办法是利用了mysql的预处理语句的特性实现的

mysql的预处理语句支持多行数据的预处理,即insertinto(columnName,columnName,)values(,,)(,,)

这样你在绑定输入参数的时候可以在程序里将整张表的数据都绑定好然后调用一次执行就能将整张表的数据插入,比用mysql_query一行一行插入省的几倍的时间

不过你一次发到mysql服务器端的数据多的情况下,要设置my

ini文件下的一个配置项,把服务器允许一次发送的数据包的大小调大就行

如果只是想插入几百行的话就这么写

INSERT INTO A(F_ID,F_NAME)

SELECT TOP 100 1,'AAA'

FROM masterdbosyscolumns

INSERT INTO A(F_ID,F_NAME)

SELECT TOP 200 2,'BBB'

FROM masterdbosyscolumns

能插入的最大行数取决于系统表syscolumns的记录数

以上就是关于如何一次向SQL Server Insert多条记录全部的内容,包括:如何一次向SQL Server Insert多条记录、sqlserver修改第二行数据、Oracle数据库,一条SQL语句插入多行数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10199492.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存