개인공부

테이블의 내용을 추가,수정,삭제하는 DML 본문

데이터베이스

테이블의 내용을 추가,수정,삭제하는 DML

풀스택개발 2018. 4. 21. 17:41


INSERT - 테이블에 새로운 행을 추가



INSERT INTO table_name

(column_name, …)

VALUES(column_value, …);


INSERT INTO DEPT01

(DEPTNO, DNAME, LOC)

VALUES(10, 'ACCOUNTING', 'NEW YORK');


INSERT INTO DEPT01

VALUES (20, 'RESEARCH', 'DALLAS');




서브쿼리로 데이터 삽입하기

INSERT INTO DEPT02

SELECT * FROM DEPT;




INSERT ALL - 다중 테이블에 다중 행 입력하기

 INSERT ALL 명령문은 서브 쿼리의 결과 집합을 조건 없이 여러 테이블에 동시에 입력하기 위한 명령문입니다이때 주의할 점은 서브 쿼리의 컬럼명과 데이터가 입력되는 테이블의 컬럼명이 동일해야 한다는 점입니다.


INSERT ALL

INTO EMP_HIR VALUES(EMPNO, ENAME, HIREDATE)

INTO EMP_MGR VALUES(EMPNO, ENAME, MGR)

SELECT EMPNO, ENAME, HIREDATE, MGR

FROM EMP

WHERE DEPTNO=20;



조건(WHEN)에 의해 다중 테이블에 다중 행 입력하기 


INSERT ALL 명령문에 WHEN 절을 추가해서 조건을 제시하여 조건에 맞는 행만 추출하여 테이블에 추가합니다.

EMP_HIR02 테이블에는 1982 01 01 일 이후에 입사한 사원들의 번호, 사원 명, 입사일을 추가합니다.

EMP_SAL 테이블에는 급여가 2000 이상인 사원들의 번호, 사원 명, 급여를 추가합니다.

 

INSERT ALL

WHEN HIREDATE > '1982/01/01' THEN

INTO EMP_HIR02 VALUES(EMPNO, ENAME, HIREDATE)

WHEN SAL >= 2000 THEN

INTO EMP_SAL VALUES(EMPNO, ENAME, SAL)

SELECT EMPNO, ENAME, HIREDATE, SAL FROM EMP;











UPDATE - 테이블 특정 행 변경


UPDATE EMP01

SET DEPTNO=30

WHERE DEPTNO=10;

 


UPDATE EMP01

SET SAL = SAL * 1.1

WHERE SAL >= 3000;

 


UPDATE EMP01

SET DEPTNO=20, JOB='MANAGER'

WHERE ENAME='SCOTT';


 

서브쿼리를 이용한 데이터 수정


UPDATE DEPT01

SET LOC=(SELECT LOC

FROM DEPT01

WHERE DEPTNO=40)

WHERE DEPTNO=20;











DELETE - 테이블의 불필요한 행을 삭제


DELETE [FROM] table_name

WHERE conditions;



DELETE FROM DEPT01

WHERE DEPTNO=30;



서브쿼리를 이용한 데이터 삭제


DELETE FROM EMP01

WHERE DEPTNO=(SELECT DEPTNO

FROM DEPT

WHERE DNAME='SALES');












MERGE - 테이블의 합병


MERGE(합병)란 구조가 같은 두개의 테이블을 하나의 테이블로 합치는 기능을 합니다.

MERGE 명령을 수행하기 위해서 수행하는 테이블에 기존에 존재하는 행이 있다면 새로운 값으로 갱신(UPDATE)되고, 존재하지 않으면 새로운 행으로 추가(INSERT)됩니다


MERGE INTO BBAN B

USING CHANGE C

ON(B.NAME = C.NAME) -- 조인 조건

WHEN MATCHED THEN -- 조인 조건 일치하는 경우

UPDATE SET -- 수정

B.KOR = C.KOR, B.ENG = C.ENG, B.MAT = C.MAT

WHEN NOT MATCHED THEN -- 조인 조건 일치하지 않는 경우

INSERT VALUES ( -- 삽입(INTO 사용하지 않습니다.)

C.NAME, C.KOR, C.ENG, C.MAT

);






















'데이터베이스' 카테고리의 다른 글

데이터 무결성 제약 조건 - 1  (0) 2018.04.22
COMMIT와 ROLLBACK  (0) 2018.04.22
테이블 구조 생성,변경 및 삭제하는 DDL  (0) 2018.04.21
데이터베이스 - 서브쿼리  (0) 2018.04.20
데이터베이스 - 조인  (0) 2018.04.19
Comments