SQL插入语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL插入语句相关的知识,希望对你有一定的参考价值。

语句是insert into User(UserId,Name,LoginName,Pwd)values(5,123,31321,1);
关键字 'User' 附近有语法错误。请问是怎么回事啊

insert into [User] (UserId,Name,LoginName,Pwd)values(5,123,31321,1);

user是sqlserver里的关键字,要中括号括起来
参考技术A union合集用在select中的
不能union
values用在insert中
select
*
from
表a
union
select
*
from
表b
--要求表a中字段个数和类型与表b中一样,或把*换成一样个数和类型的字段也行
如果你一定要写在insert中,就得加select
如:
insert
into
stuInfo(stuName,stuNo,stuSex,stuAge,stuSeat,stuAddress)
select
'张秋丽','s25301','男',18,1,'北京海淀'
from
dual
union
select
'李斯文','s25303','女',22,2,'河南洛阳'
from
dual
union
select
'李文才','s25302','男',31,3
from
dual
union
select
'欧阳骏雄','s25304','男',28,4,'新疆威武哈'
from
dual
参考技术B 第一user在数据库中是用户的意思
不能直接使用dbo.[User]
第二看你的类型应该是
insert into User(UserId,Name,LoginName,Pwd)values(5,'123','31321','1')追问

还是不行,

追答

什么错误呢

参考技术C 整形不需要单引号,字符需要单引号
insert into User(UserId,name,LoginName,Pwd) values (5,'123','31321','1');
参考技术D Insert
建议还是一条一条来
如果非要的话
的确可以按照
insert
into
table
select
方式
insert
into
stuInfo(stuName,stuNo,stuSex,stuAge,stuSeat,stuAddress)
select
'张秋丽','s25301','男',18,1,'北京海淀'
from
dual
union
select
'李斯文','s25303','女',22,2,'河南洛阳'
from
dual
union
select
'李文才','s25302','男',31,3
from
dual
union
select
'欧阳骏雄','s25304','男',28,4,'新疆威武哈'
from
dual
但是平心而论,还是不方便。写一个
insert
..;
insert
..;

.sql
文件
直接导入可能比较正统

求一条插入并返回的SQL语句

面试的时候面试官跟我提了这样一个问题,就是插入一条记录了之后将这条记录的ID返回出来,注意,可能同一时间提交了很多条,不可能insert了之后还select ,这样可能不准确。

将 OUTPUT INTO 用于简单 INSERT 语句
下例向 ScrapReason 表插入一行,并使用 OUTPUT 子句将语句的结果返回给 @MyTableVartable 变量。由于 ScrapReasonID 列使用 IDENTITY 属性定义,因此未在 INSERT 语句中为该列指定一个值。但请注意,将在列 INSERTED.ScrapReasonID 内的 OUTPUT 子句中返回由数据库引擎为该列生成的值。

--创建测试表
Create table Test
(
ID int identity primary key,
Name nvarchar(100),
datet datetime
)
--返回结果集
Create table #Test
(
ID int primary key,
Name nvarchar(100)
)
--插入数据,并使用OUTPUT 子句返回结果集
insert into Test
OUTPUT INSERTED.ID, INSERTED.Name
INTO #Test
select N'Test1',GETDATE()
union all select N'Test2',GETDATE()+1
union all select N'Test3',GETDATE()+2
union all select N'Test4',GETDATE()+3
--验证返回的数据

SELECT * FROM #Test

--实例2

USE AdventureWorks;
GO
DECLARE @MyTableVar table( ScrapReasonID smallint,
Name varchar(50),
ModifiedDate datetime);
INSERT Production.ScrapReason
OUTPUT INSERTED.ScrapReasonID, INSERTED.Name, INSERTED.ModifiedDate
INTO @MyTableVar
VALUES (N'Operator error', GETDATE());

--Display the result set of the table variable.
SELECT ScrapReasonID, Name, ModifiedDate FROM @MyTableVar;
--Display the result set of the table.
SELECT ScrapReasonID, Name, ModifiedDate
FROM Production.ScrapReason;
GO
参考技术A 以SQL Server2005以上版本为例,SQL2008可直接定义表类型接收,返回可用XML或表结果集

USE tempdb
GO
IF OBJECT_ID('Tempdb..#') IS NOT NULL
DROP TABLE #
CREATE TABLE #(ID INT IDENTITY,NAME nvarchar(100))
GO
DECLARE @T TABLE(ID INT)
INSERT #(Name) OUTPUT INSERTED.ID INTO @T SELECT TOP 10 Name FROM sysobjects
SELECT * FROM @T
参考技术B insert ... returning ...

具体语法请参考帮助:

insert into Dumbbells (firstname, lastname, iq)
select fname, lname, iq from Friends order by iq rows 1
returning id, firstname, iq into :id, :fname, :iq;

以上是关于SQL插入语句的主要内容,如果未能解决你的问题,请参考以下文章

oracle用sql 语句如何向表中插入时间?

使用sql语句插入随机时间

用一条sql语句实现:存在则啥都不干,不存在,则插入

sql 语句如何插入全年日期?

如何从 SQL *PLUS 中的批量插入中查找失败的插入语句

怎么样向数据库中插入SQL语句啊