Вставка SQL Server без INTO - PullRequest
       10

Вставка SQL Server без INTO

13 голосов
/ 23 марта 2011

Это может быть действительно простой вопрос SQL, но я видел оператор SQL INSERT без предложения INTO , и мне было интересно, если это какой-то особый случай в SQL Server 2000или 2008.

Оператор INSERT выглядит примерно так:

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

Извините, если это супер базовый, но я просто хотел убедиться.Спасибо!

Ответы [ 4 ]

18 голосов
/ 23 марта 2011

INTO - необязательно . Требуется в ANSI sql, но разработчики MS / Sybase решили сделать его необязательным.

5 голосов
/ 23 марта 2011

Проверьте грамматику БНФ 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 
4 голосов
/ 23 марта 2011

Из MSDN:

INTO - необязательное ключевое слово, которое может использоваться между INSERT и целью таблица.

http://msdn.microsoft.com/en-us/library/aa933206%28v=sql.80%29.aspx

0 голосов
/ 20 апреля 2012

Вы упоминаете, что это происходит из ранней версии SQL. Если у вас запущен 2005 год, вы можете отказаться от INTO.

...