SQL 기본 | DML : 데이터 조작 언어 | INSERT

기본적으로 데이터를 테이블에 입력하는 방법이 두 가지 있다. 하나는 한번에 하나의 데이터를 등록한다. 또 하나는 한번에 여러 개의 데이터를 입력한다.

INSERT 문법

제일 기본이 되는 데이터를 등록하는 SQL는 아래와 같다.

INSERT INTO "테이블명" ("필드1", "필드2", ...)
VALUES ("값1", "값2", ...);

테이블이 생성된 필드의 순서와 입력한 값의 순서만 맞다면 필드명은 생략할 수도 있다.

INSERT INTO "테이블명"
VALUES ("값1", "값2", ...);

SELECT로 한번에 여러 개의 데이터를 입력 할 수도 있다. 앞에서 언급한 예제와 달리 SELECT 명령을 사용하여 입력하는 테이블의 데이터를 명시한다. 그러면 데이터가 다른 테이블에서 온 건가요,라는 질문이 있으시면, 전혀 그렇지. 한 번에 여러 개의 데이터를 입력하는 SQL은 다음과 같다.

INSERT INTO table2
SELECT * FROM table1
WHERE condition;

여기서 가장 기본 형식으로 SQL 문에서 WHERE, GROUP BY 및 HAVING 등 외에 테이블의 결합이나 별명 등이 포함되는 것도 가능하다.

INSERT 예제: 한번에 1건 등록

다음과 같은 구조의 테이블이 있다고 하자.

store_information 테이블

필드명 자료형
store_name char(50)
sales float
txn_date datetime

그리고 다음에 Los Angeles 매장에 Jan-10-2018, 매출 $900 데이터를 해당 테이블에 넣는 경우 다음과 같은 SQL 문을 입력한다.

INSERT INTO store_information (store_name, sales, txn_Date)
VALUES ('Los Angeles', 900, 'Jan-10-2018');

혹은, 아래와 같이도 입력할 수 있다.

INSERT INTO store_information VALUES ('Los Angeles', 900, 'Jan-10-2018');

INSERT 예제: 한번에 여러 건 등록

2017년의 판매한 데이터를 store_information 테이블에 등록한다고 할때, 그 데이터가 sales_information 테이블에서 얻어서 넣은 경우 다음과 같은 SQL을 입력한다.

INSERT INTO store_information (store_name, sales, txn_date)
SELECT store_name, sales, txn_date
FROM sales_information
WHERE Year(txn_date) = 2017;

여기에서 SQL Server의 함수에서 날짜의 연도를 검색했는데, 데이터베이스에 따라 문법이 다르다. 예를 들어, Oracle에서는 WHERE TO_CHAR(Txn_Date, 'yyyy') = 2017와 같이 사용한다.




최종 수정 : 2021-08-27