SQL - DML (INSERT)
<DML : DATA MANIPULATION LAGUAGE >
데이터 조작언어
테이블에 값을 삽입(INSERT) 하거나, 수정(UPDATE)하거나, 삭제(DELETE) 하는 구문
[SELECT] / INSERT / UPDATE / DELETE
이번 포스팅에서는 insert문만 다루도록 하겠다.
실습 자료 - DDL을 활용한 EMPLOYEE 테이블 생성
< INSERT >
[4가지 표현법]
1) INSERT INTO 테이블명 VALUES(값1,값2,..);
- 테이블에 모든 컬럼에 대한 값을 직접 제시해서 한 행 INSERT 하고자 할 떄 사용한다
- 컬럼순번을 지켜서 VALUES에 값을 나열해야된다
2) INSERT INTO 테이블명 (컬럼명,컬럼명,컬럼명) VALUES (값1,값2,값3);
- 내가 선택한 컬럼에 대해서만 값을 INSERT할 수 있다.
- 한 행 단위로 추가되기 떄문에 선택이 안된 컬럼은 기본적으로는 NULL이 들어간다
- NOT NULL 제약조건이 걸려있는 컬럼은 반드시 선택해서 직접 값 제시
- 단, DEFAULT 값이 있는 경우는 NULL이 아닌 DEFAULT 값이 들어간다
3) INSERT INTO 테이블명 (
서브쿼리
);
- VALUES로 값을 직접 명시하는거 대신 서브쿼리 조회된 결과값을 통째로 INSERT 가능(여러행 INSERT 가능)
- 단 테이블은 새로 생성해야하며 가져올 테이블의 컬럼 수와 동일해야한다
3-1)
3-2) SELECT * FROM EMP_05;
테이블 생성 확인
3-3) EMPLOYEE테이블에서 가져올 데이터 조회
3-4) 3)에서 조회한 SELECT문 사용하여 INSERT문으로 EMP_05테이블에 삽입
3-5) SELECT * FROM EMP_05;
테이블 값 대입되었는지 확인
4) WHEN 조건문 THEN INTO 조건을 사용해서 각 테이블에 INSERT 가능
[표현식]
INSERT ALL
WHEN 조건1 THEN
INTO 테이블명1 VALUES(컬럼명,컬럼명)
WHEN 조건2 THEN
INTO 테이블명2 VALUES(컬럼명,컬럼명)
서브쿼리;
ex) EMPLOYEE데이터중
입사일이 2020/01/01 이전이라면 EMP_OLD 테이블에 저장 하고
입사일이 2020/01/01 이후라면 EMP_NEW 테이블에 저장 하기
4-1) 테이블 구조만 생성하기 컬럼X
4-2) 조건을 걸어 EMP_OLD 와 EMP_NEW 테이블에 EMPLOYEE의 데이터 복사하기
4-3) EMP_OLD 테이블
EMP_NEW 테이블
다음시간에는 UPDATE 와 DELETE 를 알아보도록 하겠다
갈길이 멀다