programing

INSERT 대 INSERT INTO

nasanasas 2020. 9. 25. 07:57
반응형

INSERT 대 INSERT INTO


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

INSERT INTO myTable <something here>

INTO여기서 키워드 는 선택 사항 이라는 것을 이해하고 사용하지 않아도되지만 제 경우에는 왠지 습관이되었습니다.

내 질문은 :

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

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

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


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

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

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

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

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


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


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

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


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

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

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


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


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


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

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

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


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

참고 URL : https://stackoverflow.com/questions/233919/insert-vs-insert-into

반응형