DataBase/ORACLE_SQL

SQL - DML (INSERT)

규율 위에 자유 2023. 7. 5. 23:28

<DML : DATA MANIPULATION LAGUAGE >
    데이터 조작언어


테이블에 값을 삽입(INSERT) 하거나, 수정(UPDATE)하거나, 삭제(DELETE) 하는 구문

[SELECT] / INSERT / UPDATE / DELETE

 

이번 포스팅에서는 insert문만 다루도록 하겠다.

 

실습 자료  - DDL을 활용한 EMPLOYEE 테이블 생성

EMPLOYEE 테이블 컬럼

< INSERT > 

 [4가지 표현법] 
  

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

  • 테이블에 모든 컬럼에 대한 값을 직접 제시해서 한 행 INSERT 하고자 할 떄 사용한다
  • 컬럼순번을 지켜서 VALUES에 값을 나열해야된다
            

INSERT 1)
값 확인

   2) INSERT INTO 테이블명 (컬럼명,컬럼명,컬럼명) VALUES (값1,값2,값3);
   

  • 내가 선택한 컬럼에 대해서만 값을 INSERT할 수 있다.
  • 한 행 단위로 추가되기 떄문에 선택이 안된 컬럼은 기본적으로는 NULL이 들어간다
  •  NOT NULL 제약조건이 걸려있는 컬럼은 반드시 선택해서 직접 값 제시 
  • 단, DEFAULT 값이 있는 경우는 NULL이 아닌 DEFAULT 값이 들어간다

컬럼 n

  3) INSERT INTO 테이블명 (

     서브쿼리

    );

  •   VALUES로 값을 직접 명시하는거 대신 서브쿼리 조회된 결과값을 통째로 INSERT 가능(여러행 INSERT 가능)
  •   단 테이블은 새로 생성해야하며 가져올 테이블의 컬럼 수와 동일해야한다 

 3-1)

새로운 테이블 세팅

3-2) SELECT * FROM EMP_05;

       테이블 생성 확인

테이블 생성 확인

 3-3) EMPLOYEE테이블에서 가져올 데이터 조회

EMPLOYEE테이블에서 가져올 값 확인

3-4)  3)에서 조회한 SELECT문 사용하여 INSERT문으로 EMP_05테이블에 삽입

SELET 한 EMPLOYEE 테이블 서브쿼리 사용 컬럼추가

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 를 알아보도록 하겠다

 

갈길이 멀다