没有INTO的SQL Server插入

Abe*_*Abe 13 sql sql-server insert

这可能是一个非常基本的SQL问题,但我看过没有INTO子句的SQL INSERT语句,我想知道这是否是SQL Server 2000或2008中的一些特例.

INSERT语句看起来像

INSERT <table_name>
(
  column names
)
select *
from <another table>
where <condition>
Run Code Online (Sandbox Code Playgroud)

对不起,如果这是超级基础,但我只是想确定.谢谢!

jim*_*ble 18

INTO是可选的.它在ANSI sql中是必需的,但MS/Sybase开发人员决定使其成为可选项.


Ric*_*iwi 5

检查BNF语法http://savage.net.au/SQL/

92,99,SQL:2003

<insert statement> ::= INSERT INTO <insertion target> <insert columns and source>
Run Code Online (Sandbox Code Playgroud)

根据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 
Run Code Online (Sandbox Code Playgroud)