Подтвердить что ты не робот

Различия между выбором INSERT и вставкой в ​​выбор?

Я часто вижу два стиля, INSERT выбирает и вставляет в 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

http://www.1keydata.com/sql/sqlinsert.html

спасибо заранее, Джордж

4b9b3361

Ответ 1

В SQL Server и MySQL, INTO - чистый синтаксический сахар.

Никакой разницы.

Oracle и PostgreSQL требуют, чтобы это ключевое слово присутствовало, и стандарты AFAIR, ANSI SQL тоже.

Ответ 2

Они одинаковы; INTO является необязательным.

Ответ 3

Я считаю, что два приведенных вами утверждения фактически совпадают. Оператор 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

Ответ 4

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

Кроме того, при SELECT...INTO, новая таблица имеет одинаковые столбцы, но не содержит никаких ключей или ограничений, поэтому лучше всего создать временную резервную копию.