2011-03-22 134 views
9

這可能是一個非常基本的SQL問題,但我已經看到了SQL INSERT語句,而不用從句INTO,我想知道,如果這是在SQL Server 2000或2008的一些特殊情況。SQL服務器插入沒有INTO

INSERT語句看起來像

INSERT <table_name> 
(
    column names 
) 
select * 
from <another table> 
where <condition> 

對不起,如果這是超級簡單,但我只是想確認一下。 謝謝!

回答

15

INTO是optional。它在ANSI sql中是必需的,但MS/Sybase開發人員決定使其成爲可選項。

+0

謝謝。我只是用INTO子句和INTO子句運行插入語句,結果是一樣的。 – Abe 2011-03-22 23:26:51

5

檢查BNF語法http://savage.net.au/SQL/

92,99,SQL:2003

<insert statement> ::= INSERT INTO <insertion target> <insert columns and source> 

按照ANSI規範,INTO只應在MERGE條款可選。

對於SQL Server(此鏈接從2000年開始顯示它的年齡 - 它存在於第一版SQL Server中),它是可選。對於MySQL也是可選的。

INSERT [ INTO] 
    { table_name WITH (<table_hint_limited> [ ...n ]) 
     | view_name 
     | rowset_function_limited 
    } 

    { [ (column_list) ] 
     { VALUES 
      ({ DEFAULT | NULL | expression } [ ,...n]) 
      | derived_table 
      | execute_statement 
     } 
    } 
    | DEFAULT VALUES 
0

您提到它來自早期版本的SQL。如果您現在正在運行2005年,則可以刪除INTO。