INSERT选择和插入选择之间的差异?

时间:2009-08-27 13:28:15

标签: sql sql-server sql-server-2008

我经常看到两种样式,INSERT select和insert into select,有什么区别?它们是一样的吗?

我正在使用SQL Server 2008 Enterprise。

以下是两个样本。

INSERT california_authors (au_id, au_lname, au_fname)
SELECT au_id, au_lname, au_fname
FROM authors
WHERE State = 'CA'

http://www.sqlteam.com/article/using-select-to-insert-records

INSERT INTO Store_Information (store_name, Sales, Date)
SELECT store_name, Sales, Date
FROM Sales_Information

http://www.1keydata.com/sql/sqlinsert.html

提前谢谢, 乔治

4 个答案:

答案 0 :(得分:25)

SQL ServerMySQL中,INTO是纯语法糖。

没有区别。

OraclePostgreSQL要求此关键字出现,AFAIRANSI SQL标准也是如此。

答案 1 :(得分:6)

他们是一样的; INTO只是可选的。

答案 2 :(得分:2)

我相信你列出的两个陈述实际上是一样的。第一批中缺少“INTO”语句,但它隐含在INSERT语句中。

为了便于说明,以下是使用INSERT语句的一些不同形式。

SELECT 
    1 AS ID ,
    'SomeText' AS SomeText
INTO #tmpTableName

INSERT INTO #tmpTableName (ID,SomeText) 
SELECT 2, 'Text' 

INSERT INTO #tmpTableName (ID,SomeText) 
VALUES(3, 'MoreText')

SELECT * FROM #tmpTableName

DROP TABLE #tmpTableName

答案 3 :(得分:1)

SELECT...INTO创建一个新表,而INSERT...SELECT需要现有表。因此,需要考虑安全隐患和可能的性能问题。

此外,对于SELECT...INTO,新表具有相同的列但没有键或约束,因此最好只创建临时备份。