[MSSQL] INSERT INTO SELECT 사용법 (SELECT INSERT)

SQL Server에서 데이터를 입력할 때 INSERT VALUES만 쓰는 경우도 많지만, 실무에서는 조회 결과를 그대로 넣거나 가공해서 넣는 INSERT INTO … SELECT … 패턴을 자주 사용한다. 기존 데이터를 기반으로 신규 행을 만들거나, 특정 조건의 데이터를 다른 테이블로 이관/백업할 때도 유용하게 사용할 수 있다.

 

목차

 

SELECT 컬럼과 INSERT 대상 컬럼이 “완전히 일치”하는 경우

INSERT INTO dbo.emp
     SELECT 8000 
          , 'GENT'
          , a.job
          , a.mgr
          , CONVERT(date, '2021-05-03', 23)
          , a.sal
          , a.comm
          , a.deptno
       FROM dbo.emp AS a
      WHERE a.empno = 7698

 

 

INSERT INTO... SELECT …에서 SELECT 절의 컬럼 개수/순서/데이터 타입이 대상 테이블과 완전히 동일하다면, INSERT 구문에서 컬럼을 생략할 수 있다.

 

테이블 컬럼이 추가되거나 순서가 바뀌어 의도치 않은 오류가 발생할 수 있으므로, 대상 테이블에 컬럼을 명시하는 것이 좋다.

 

SELECT 컬럼과 INSERT 대상 컬럼이 “불일치”하는 경우

INSERT INTO dbo.emp (empno, ename, job, mgr, hiredate)
     SELECT 8000 
          , 'GENT'
          , a.job
          , a.mgr
          , CONVERT(date, '2021-05-03', 23)
       FROM dbo.emp AS a
      WHERE a.empno = 7698

 

 

SELECT 결과가 대상 테이블의 전체 컬럼과 일치하지 않거나, 일부 컬럼만 넣고 싶다면 INSERT 대상 컬럼을 반드시 지정해야 한다.

 

SELECT INTO 로 “테이블을 즉석 생성 + 데이터 적재”

SELECT empno, ename, job, deptno
  INTO dbo.emp_manager_backup
  FROM dbo.emp
 WHERE job = 'MANAGER'

 

 

SQL Server에서 자주 사용하는 기능 중 하나가 SELECT INTO 이다.
SELECT INTO는 SELECT 결과를 바탕으로 테이블을 즉석에서 생성하고, 동시에 데이터를 저장한다.

 

 

백업 테이블에 데이터가 저장되어 있는 것을 확인할 수 있다.

 

 

[MSSQL] INSERT 문 사용법 3가지 (데이터 입력)

SQL Server에서 데이터를 입력하기 위해서는 INSERT 문을 사용한다. SQL Server 2008부터 여러 행을 입력할 수 있는 기능이 추가되었으며, SELECT 해서 INSERT 하는 방법으로도 여러 건의 데이터를 입력할 수

gent.tistory.com

 

[MSSQL] MERGE 문 사용법 (UPDATE와 INSERT를 한번에)

MERGE 문을 사용하면 변경할 테이블에 데이터가 존재하는지 체크하고, UPDATE, DELETE, INSERT를 한 번에 작업이 가능하다. MERGE 문을 사용하지 않을 경우 해당 조건으로 테이블을 SELECT 한 후 IF 조건을

gent.tistory.com

 

 

댓글

Designed by JB FACTORY