我经常看到两种样式,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
提前谢谢,
乔治
答案 0 :(得分:25)
在SQL Server
和MySQL
中,INTO
是纯语法糖。
没有区别。
Oracle
和PostgreSQL
要求此关键字出现,AFAIR
,ANSI
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
,新表具有相同的列但没有键或约束,因此最好只创建临时备份。