지난 시간에 UPDATE 문에 대해 알아보았습니다.
이번 시간에도 역시 DML의 하나인 INSERT 문에 대해 알아보기로 하겠습니다.

- INSERT문의 형식과 특징
INSERT INTO table_name (column_one, column_two, …)
VALUES (expression_one, expression_two,…);- INTO 다음에 오는 테이블에 VALUE의 값을 삽입하는 역할을 합니다.
이때 INTO 절 다음에 기술하는 column명은 생략할 수 있습니다. - VALUES 절에는 상수(CONSTANT) 값, 널(NULL) 값, SYSDATE 등을 쓸 수 있습니다.

위와 같은 CUSTOMER 테이블에 노란 색 부분(‘104’, ‘윤지수’, 등록날짜)의 데이터를 삽입하려면 다음과 같이 씁니다.
INSERT INTO CUSTOMER ( CUST_NO, NAME, MILEAGE, CODE, REG_DATE)
VALUES (‘104’, ‘윤지수’, NULL, NULL, SYSDATE);
여기서 주의할 것은 MILEAGE와 CODE에는 아무 값도 넣지 않았습니다. 이럴 때 NULL을 사용합니다.
그리고 REG_DATE에는 위의 데이터를 입력한 날짜를 집어넣기 위해 SYSDATE를 사용하였습니다. - INTO 다음에 오는 테이블에 VALUE의 값을 삽입하는 역할을 합니다.
- INSERT 문에서 SUBSELECT 사용
위의 예는 데이터를 직접 입력할 경우에 해당되는 것입니다.
만약 데이터를 입력받을 테이블이 있을 경우 이 테이블의 어떤 값을 다른 테이블로 입력할 경우에는 어떻게 할까요?
바로 VALUE 절에 SELECT 문을 이용하여 조건에 맞는 데이터를 골라 다른 테이블에 직접 입력할 수도 있습니다.
이 경우 두 테이블의 칼럼 형식은 같아야 되겠죠.자, 그럼 아래 COSTOMER 테이블에서 마일리지(MILEAGE)가 10,000 이상인 고객 정보를 VIP 테이블에 입력하려면 어떻게 할까요?

↓

INSERT INTO VIP
SELECT *
FROM CUSTOMER
WHERE MILEAGE >= 10000;
여기서 주의해야할 것은,
- SUBSELECT 문의 WHERE 절을 생략하면 테이블의 모든 데이터가 백업됩니다.(일부러 데이터를 백업할 때 이런 식으로 사용합니다.)
- INSERT 문에서 SUBSELECT를 쓸 경우 VALUES와 ( )를 사용할 수 없습니다.
이상 동주 아빠 손병목이었습니다.
