[DML] 1. INSERT

ColinSong·2020년 12월 8일
0

OracleDB(11g)

목록 보기
18/19
post-thumbnail

목차

1. DML(Data Manipulation Language)

  • 데이터 조작어
  • SELECT, DELETE, INSERT, UPDATE 등으로 데이터를 조작하는데 사용하는 구문

1.1 INSERT

  • 테이블에 새로운 행을 추가할 때 사용하는 SQL
INSERT INTO 테이블명 (column1, column2)
VALUES (data1, data2, ...)
  • 컬럼명에 아무 조건을 걸지 않는다면, 모든 컬럼의 데이터를 추가한다.

1.1.1 기본 INSERT

  • emp 테이블 구조 확인
DESC emp;

  • emp 테이블에 데이터 INSERT
INSERT INTO emp 
VALUES (1001, 'ALICE', 'CLERK', 1003, '16/09/08', 800, NULL, 30);

INSERT INTO emp 
VALUES (1002, 'MORRIS', 'CLERK', 1003, '16/09/08', 800, NULL, 30);

INSERT INTO emp 
VALUES (1003, 'MATHEW', 'SALEMAN', NULL, '16/01/01', 1500, 100,
30);

INSERT INTO emp (empno, ename) 
VALUES (1010, 'BOB');

INSERT INTO emp (empno, ename, job) 
VALUES (1011, 'EDWARD', 'MANAGER');
  • INSERT한 데이터 확인
SELECT * FROM emp WHERE empno < 2000;

2.2. 서브쿼리를 이용한 INSERT

  • INSERT INTO 절의 VALUES절을 서브 쿼리로 대신하는 것이 가능하다.

  • 기본 테이블의 여러 행을 한 번에 복사해서 다른 테이블에 입력할 수 있다.

  • INSERT 문에 지정한 컬럼의 개수와 데이터 타입이 서브쿼리를 수행한 결과와 동일해야만 가능하다.

  • emp 테이블 구조와 같지만 데이터가 없는 emp_research 테이블 생성

CREATE TABLE emp_research AS SELECT * FROM emp WHERE 1=0;

INSERT INTO emp_research (SELECT * FROM emp WHERE deptno=20);
SELECT * FROM emp_research;

2.3. INSERT ALL

  • WHEN 절에 지정한 조건을 만족하는 데이터를 테이블을 지정해 삽입
CREATE TABLE emp_hire AS SELECT empno, ename, hiredate FROM emp where 1=0;
CREATE TABLE emp_sal AS SELECT empno, ename, sal FROM emp where 1=0;
  • where 1 = 1 참
  • where 1 = 0 거짓
    (where 1=1로하면 구조와 내용 전부 복사됨)

emp_hire 테이블


emp_sal 테이블

  • emp_hire 테이블과 emp_sal 테이블에 각각 조건에 맞게 INSERT
INSERT ALL
WHEN HIREDATE > '2010/01/01' -- 고용일이 '2010/01/01' 이후인 사원
THEN INTO emp_hire
VALUES(empno, ename, hiredate)

WHEN sal >= 2000 -- 급여가 2000 이상인 사원
THEN INTO emp_sal
VALUES(empno, ename, sal)
SELECT empno, ename, hiredate, sal 
FROM emp;
  • WHEN : 조건
  • THEN : 결과

emp_hire 테이블

emp_sal 테이블

Reference

  • 참고도서(책) : SQL활용 + 실습 후 정리
  • 🎈2020.12.08

profile
안녕하세요:)

0개의 댓글