MSSQL INSERT 데이터 입력하기

MSSQL의 데이터 입력 기능인 INSERT문에 대한 사용법과 부가적인 팁에 관한 글입니다.

INSERT란?

데이터베이스에 데이터를 입력하는 명령어입니다.
가장 기본적인 기능이고 굉장히 많이 쓰임으로 매우 중요합니다.

 

INSERT문 사용법

기본 사용법 INSERT INTO ~ VALUES ~

--// 문법
INSERT INTO 데이터입력대상 테이블 명 (
    데이터 입력 대상 칼럼1
    , 데이터 입력 대상 칼럼2
    , 데이터 입력 대상 칼럼3
    ...
) VALUES (
    대상 칼럼1에 입력할 데이터
    , 대상 칼럼2에 입력할 데이터
    , 대상 칼럼3에 입력할 데이터
    ...
)

--// 예제
INSERT INTO TARGET_TABLE (
    REAL_NAME
    , AGE
    , GRADE
) VALUES (
    'John'
    , 20
    , 'A'
)

TARGET_TABLE이라는 테이블에 데이터를 입력하는 내용입니다.
각각 REAL_NAME 칼럼에는 'John', AGE 칼럼에는 20, GRADE 칼럼에는 'A'라는 데이터가 들어갑니다.

INSERT문에 지정하지 않은 입력대상 칼럼의 값은 해당 칼럼의 기본값(DEFAULT)이 입력됩니다.
따로 기본값을 설정하지 않았다면 NULL이 입력됩니다.

예) 위 예제에서 입력하는 테이블에 FIRST_NAME 칼럼이 있을 때 INSERT문에서 해당 칼럼에는 데이터 입력을 하지 않기 때문에 FIRST_NAME칼럼에는 NULL이 입력됩니다. (DEFAULT 설정 안 함)

동시에 여러 행 입력하기

동시에 여러 행을 입력하려면 위 기본 사용법에서 ', '(콤마)로 VALUES 부분을 추가해 주면 됩니다.

INSERT INTO TARGET_TABLE (
    REAL_NAME
    , AGE
    , GRADE
) VALUES (
    'John'
    , 20
    , 'A'
), VALUES (
    'Sam'
    , 21
    , 'B'
)
--// 2개의 행이 입력됩니다.

2 개행뿐만 아니라 3개, 4개 그 이상도 ', '(콤마)와 VALUES 부분을 추가해주면 됩니다.


INSERT INTO ~ VALUES ~ (칼럼명 생략)

INSERT문 작성 시 모든 칼럼에 데이터를 입력하는 경우 칼럼명을 생략할 수 있습니다.

TEMP_TABLE NAME TYPE
1 NAME VARCHAR(50)
2 AGE INT

위 테이블에 데이터 입력을 칼럼명 생략하여 진행해보겠습니다.

INSERT INTO TEMP_TABLE VALUES ('John', 20)

칼럼명을 입력하지 않았지만 데이터는 정상적으로 입력됩니다.
칼럼 순서에 맞게 첫 번째 칼럼인 NAME에 'John', 두 번째 칼럼인 AGE에 20의 값이 각각 입력됩니다.
칼럼 순서에 맞게 모든 데이터를 VALUES 칸에 입력한다면 칼럼명을 생략할 수 있습니다.


INSERT INTO ~ SELECT

SELECT문으로 데이터 출력한 결과를 그대로 입력하는 방법입니다.

INSERT INTO (
    입력대상 칼럼1
    , 입력대상 칼럼2
    , 입력대상 칼럼3
    ...
)
SELECT 입력위한 조회칼럼1
     , 입력위한 조회칼럼2
     , 입력위한 조회칼럼3
     ...
  FROM TMEP_TABLE

INSERT INTO ~ VALUES처럼 입력대상 칼럼 순서에 맞춰서 조회 칼럼 순서를 지정합니다.
INSERT INTO ~ SELECT 문도 모든 칼럼에 데이터 입력한다면 칼럼명을 생략할 수 있습니다.
조회 결과가 여러 행이라면 여러 행이 입력되고, 단행이라면 한 행만 입력됩니다.

INSERT 하는 SELECT문이라고 특별한 것은 없습니다.
WHERE절 GROUP BY절 등 아무 제약 없이 SELECT 할 수 있습니다.


이상으로 MSSQL INSERT문에 대해 살펴보았습니다.
도움이 되셨다면 공감 부탁드립니다.