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

이상 동주 아빠 손병목이었습니다.

이번 시간에도 역시 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와 ( )를 사용할 수 없습니다.
- SUBSELECT 문의 WHERE 절을 생략하면 테이블의 모든 데이터가 백업됩니다.(일부러 데이터를 백업할 때 이런 식으로 사용합니다.)
이상 동주 아빠 손병목이었습니다.
