2011-03-22 21 views
9

Esto puede ser una pregunta muy básica de SQL, pero he visto un SQL INSERT declaración sin la cláusula EN y me preguntaba si eso es cierto caso especial en SQL Server 2000 o 2008.SQL Server Inserte Sin EN

El INSERT mirada sentencia como

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

en este momento, si esto es súper básico, pero yo sólo quería asegurarse. Gracias!

Respuesta

15

INTO es optional. Se requiere en ANSI sql pero los desarrolladores de MS/Sybase decidieron hacerlo opcional.

+0

Gracias. Acabo de ejecutar una declaración de inserción con y sin la cláusula INTO y los resultados son los mismos. – Abe

5

revisar la gramática BNF http://savage.net.au/SQL/

92, 99, SQL: 2003

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

De acuerdo con la especificación ANSI, todo esto en sólo debería ser opcional en una cláusula MERGE.

Para SQL Server (este enlace de 2000 para mostrar qué tan antiguo es - existe desde la primera versión de SQL Server), es opcional. También es opcional para 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

Menciona que esto proviene de una versión anterior de SQL. Si tiene 2005 funcionando ahora, puede soltar el INTO.

Cuestiones relacionadas