INSERT 대 INSERT INTO


90

나는 한동안 MS SQL에서 T-SQL로 작업 해 왔으며 어떻게 든 테이블에 데이터를 삽입해야 할 때마다 구문을 사용하는 경향이 있습니다.

INSERT INTO myTable <something here>

나는 INTO여기서 키워드 가 선택 사항 이라는 것을 이해하고 그것을 사용할 필요는 없지만 어떻게 든 내 경우에는 습관이되었습니다.

내 질문은 :

  • INSERT구문과 사용의 의미가 INSERT INTO있습니까?
  • 어느 것이 표준을 완전히 준수합니까?
  • 둘 다 SQL 표준의 다른 구현에서 유효합니까?

답변:


95

INSERT INTO표준입니다. INTO대부분의 구현에서 선택 사항 이지만 몇 가지 필수 사항이므로 코드를 이식 할 수 있도록 포함하는 것이 좋습니다.

여기 에서 여러 버전의 SQL 표준에 대한 링크를 찾을 수 있습니다 . 여기 에서 이전 표준의 HTML 버전을 찾았 습니다 .


2
"SQL-99 Complete, Really"라는 책에서는 Sybase (및 MS SQL Server)가 비표준 방식으로 작동하여 INTO가 선택 사항이 될 수 있다고 말합니다. 다른 브랜드의 데이터베이스에는 키워드가 필요합니다.
Bill Karwin

2
권리. 항상 INTO를 사용하는 경우 어떤 것이 선택 사항이라고 생각하는지 기억할 필요가 없습니다. 모든 구현에서 사용할 수 있습니다.
Bill the Lizard

21

그들은 같은 일이다 INTOT-SQL에서 완전히 선택 사항입니다 (다른 SQL 언어가 다를 수 있습니다).

다른 답변과 달리 사용하기에는 가독성이 떨어지는 것 같습니다 INTO.

개념적인 것이라고 생각합니다. 제 생각에는 "Customer"라는 테이블에 을 삽입하는 것이 아니라 Customer를 삽입하고 있습니다. (이것은 테이블 이름을 복수가 아닌 단수로 지정하는 데 사용한다는 사실과 관련이 있습니다).

첫 번째 개념을 따르는 경우 INSERT INTO Customer"올바른 느낌"을받을 가능성이 큽니다.

두 번째 개념을 따르면 아마도 INSERT Customer당신을위한 것입니다.


5
접근 방식의 위험은 새로운 프로그래머가 객체를 테이블과 혼동하게 만들 수 있다는 것입니다.
Dave DuPlantis

12
귀하의 대답은 사실입니다. 사람들이 반대 의견에 반대표를 던지는 것은 부끄러운 일입니다. 나는 SO의 장점 중 하나가 이러한 다른 의견을 듣는 것이라고 생각합니다.
DOK

사물과 테이블에서 생각하는 것은 중요하지 않습니다. 개념적 방식으로 엔티티 관계형 모델로 생각하고 있습니다.
Andre Figueiredo

@DaveDuPlantis 아, Jackie Treehorn 오류입니다. +1
ruffin

10

mySQL에서는 선택 사항 일 수 있지만 Oracle과 같은 다른 DBMS에서는 필수입니다. 따라서 SQL은 가치가있는 INTO 키워드로 더 잠재적으로 이식 가능합니다.


4

이 문제에 대해 제가 기대했던 한 가지 교훈은 항상 일관성을 유지해야한다는 것입니다! INSERT INTO를 사용하는 경우 INSERT도 사용하지 마십시오. 그렇게하지 않으면 일부 프로그래머가 같은 질문을 다시 할 수 있습니다.

여기에 또 다른 관련 예제가 있습니다. MS SQL 2005에서 매우 긴 저장 프로 시저를 업데이트 할 기회가있었습니다. 문제는 결과 테이블에 너무 많은 데이터가 삽입되었다는 것입니다. 데이터의 출처를 찾아야했습니다. 새 레코드가 추가 된 위치를 찾으려고했습니다. SP의 시작 부분에서 여러 INSERT INTO를 보았습니다. 그런 다음 "INSERT INTO"를 찾아서 업데이트하려고했지만 "INSERT"만 사용 된 곳을 놓쳤습니다. 실제로 일부 열에 4k 이상의 빈 데이터 행을 삽입했습니다! 물론 INSERT 만 검색해야합니다. 그러나 그것은 나에게 일어났습니다. 나는 이전 프로그래머 IDIOT를 비난합니다 :) :)


작성자가 INSERT INTO로 작성하고 일부는 유지 관리에 INSERT를 넣은 것처럼 보입니다. 불행히도 "해야하는"것보다 훨씬 더 많이 발생합니다.
Andre Figueiredo

3

SQL Server 2005에서는 다음과 같이 INSERT와 INTO 사이에 무언가가있을 수 있습니다.

INSERT top (5) INTO tTable1 SELECT * FROM tTable2;

INTO 없이도 작동하지만 가독성을 위해 INTO를 사용하는 것을 선호합니다.


1

둘 다 같은 일을합니다. INTO는 선택 사항이지만 (SQL Server의 T-SQL에서) 가독성을 돕습니다.


0

나는 그것을 사용하는 것을 선호합니다. 이 같은 구문 묘사 느낌과 SQL 언어 등의 다른 부분으로 가독성을 유지한다 group BY, order BY.


0

ORACLE에서 SQL을 쓰기 시작 했으므로 INTO가없는 코드를 보면 '깨져서'혼란스러워 보입니다.

네, 제 의견 일 뿐이며 항상 INTO 를 사용해야한다는 아닙니다. 그러나 당신은 다른 많은 사람들이 아마 같은 생각을 할 것이라는 사실을 알아야합니다. 특히 그들이 새로운 구현으로 스크립팅을 시작하지 않았다면 더욱 그렇습니다.

SQL을 사용하면 TABLE에 ROW를 추가하고 객체로 작업하지 않는다는 것을 깨닫는 것도 매우 중요하다고 생각합니다. SQL 테이블 행 / 항목을 객체로 생각하는 것은 새로운 개발자에게 도움이되지 않을 것이라고 생각합니다. 다시 말하지만, 나만의 의견입니다.


0

가능한 경우 표준 기능을 사용하십시오. 특정 데이터베이스에 대한 이식성이 필요하지는 않지만 SQL 지식에 대한 이식성이 필요할 가능성이 있습니다. 특정 불쾌한 T-SQL 예제는 isnull을 사용하는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.