❶ 如何一次插入多条记录的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;
--------------------------------------------------------------------------------------------------------
❷ Access多条SQL语句可不可以同时执行
使用ACCESS查询对象是无法一次运行多个SQL语句的,但是通过ACCESS VBA代码可以实现一次运行多个SQL语句。下面是具体实现方案;
1)新建一个ACCESS窗体,窗体添加一个命令按钮;
2)编写按钮单击事件过程
PrivateSubCommand1_Click()
DimstrSqlasstring
strSQL="UpdatePolicySETLatestDueDate=Year(Date())&'-'&Format(PolicyDate,'mm-dd')"
DoCmd.RunSqlstrSQL'运行第一个更新语句
strSQL="UPDATEPolicySETLatestDueDate=DateAdd('yyyy',1,LatestDueDate)WHERE(((Month(Date())-Month(LatestDueDate))>6)and(PaymentMode='H'))"
DoCmd.RunSqlstrSQL'运行第二个更新语句
EndSub
跟着点击该命令按钮就可以一次执行两条语句了。
*******不过这里必须指出楼主这种通过UPDATE更新来获取缴费提醒的办法绝对是一种非常糟糕的解决方案,其坏处除了你说的,我可以指出N多条!具体就不说了。******
其实要获取你要获取保单续期提醒日期,无需分两步只要一句SELECT语句就能搞定,完全没必要去更新数据表。
将下列SQL语句保存为一个名为“RenewAlertPolicies的选择查询
selectPolicyNo,PolicyDate,DateAdd('yyyy',1,PolicyDueDate)asLatestDueDate
fromPolicywhereDateDiff('m',PolicyDate,Date())>6orderbyPolicyDatedesc;
注意:上面“保单号”字段名是我虚构的,请替换为实际的保单号字段名。如果不想看太旧的保单,筛选可以用时间段来限制,例如...whereDateDiff('m',PolicyDate,Date()) between 7 and 12 ....
当你要查看需要提示续保的保单列表时,简单地双击该查询就好了,你可以随要随查,非常方便,查询结果将会展示最新的情况,完全没必要去考虑如何更新LatestDueDate的问题。
❸ 数据库高手,请帮忙!很多条sql 语句,如何批处理
写成一个存储过程就ok了,定义一个参数。
CREATE PROC TEST
@IDD INT
AS
BEGIN
.........(操作语句即可)
END
❹ 如何多条SQL语句执行
1、启动visual studio 2017,点击【文件】-》【新建】-》【项目】-》创建名为【ExecuteSql】的Web项目。
❺ sql存储过程中有多sql语句怎么写
1、查询表A 中是存在列名为id的列
1
2
3
4
IF COL_LENGTH('A', 'id') IS NOT NULL
PRINT N'存在'
ELSE
PRINT N'不存在'
2、当前连接的数据库中是否存在表名为A 的表
1
2
3
4
IF object_id(N'A',N'U') IS NOT NULL
PRINT N'存在'
ELSE
PRINT N'不存在'
3、你要用存储过程,直接在外层代码加个套就OK了。比如判断列的:
1
2
3
4
5
6
7
CREATE PROC SP_NAME
BEGIN
IF COL_LENGTH('A', 'id') IS NOT NULL
PRINT N'存在'
ELSE
PRINT N'不存在'
END
❻ 如何将几条sql语句一起执行
ORACLE中有个叫包的,其实就跟一个函数一样,把多条SQL语句写进去然后执行那个包中函数.MSSQL应该也用同样的功能,你可以找一下
❼ 用SQL Plus打开一个包含多条SQL语句的.sql文件,执行总出错
如果没有语法错误的话,在编号为10的行后边应该加上一个斜杠/,同样编号为15的行后边也应该再加上一个斜杠。
❽ 多条sql语句如何拼接
SQL语句拼接一般使用【union all】和【union】
两者的区别是:
【union all】:显示多条语句里的全部记录;
【union】:显示多条语句里的不重复的记录,也就是有DIstinct的功效;
【union all】示例:
select'2016-02-06'date_timeunionall
select'2016-02-14'unionall
select'2016-06-12'unionall
select'2016-09-18'unionall
select'2016-10-09'unionall
select'2016-10-09'
结果为6行
【union】示例:
select'2016-02-06'date_timeunionall
select'2016-02-14'unionall
select'2016-06-12'unionall
select'2016-09-18'unionall
select'2016-10-09'unionall
select'2016-10-09'
结果为5行
❾ 一个sql文件里能不能放多个select,update等语句
可以的。每个语句必须是完整的sql语句,并且update insert 和delete 的语句后一定要有 commit;
比如:
select * from table_name ;
update table_name
set name = 'a'
where id = 1 ;
commit ;
insert into table_name(id,name)
values(2,'b');
commit ;
alter table table_name
add age number(5) ;
delete table_name
where id = 1 ;
commit;
这些语句都可以在一个.sql文件中
❿ 如何在一个bat文件中执行多个sql语句
使用批处理bat文件执行多个sql语句的方法:
一、示例表格tt结构如图: