본문 바로가기
Oracle

[Oracle] 데이터 갱신

by byeongoo 2019. 4. 28.

1. 데이터 갱신

SQL의 데이터 조작어(DML)는 UPDATE, INSERT, DELETE의 명령을 이용하여 데이터베이스의 갱신 연산을 수행합니다. 

 

2. INSERT

기존 데이터베이스에 새로운 데이터를 삽입하는 연산으로 INSERT 명령이 있으며, 그 형식은 다음과 같습니다.

INSERT

INTO table-name [(column-name [, column-name] …)]

VALUES (value, [, value] …);

또는

INSERT

INTO table-name [(column-name [, column-name] …)]

SELECT column-name [,column-name] … FROM … WHERE …;

 

첫 번째 형식은 새로운 데이터 한 행을 삽입하는 것이며, 두 번째 형식은 다른 테이블로부터 데이터를 유도하여 삽입(여러 행을 동시에 삽입 할 수 있음)하는 형식입니다.

INSERT INTO tmpa_emp(empno, ename, hiredate, sal, deptno)

       VALUES(1, 'kim', to_date('2013-01-01'), 700, 40);

 

이때 각 열의 이름과 값들의 위치는 일치하여야 하며, 테이블의 정의된 순서와 전체 열에 대해 모든 값들이 존재할 경우에는 열의 이름을 다음과 같이 생략할 수 있습니다.

INSERT INTO tmpa_emp

       VALUES(2, 'kang' , to_date('2013-01-01'), 800, 40);

 

다음은 다른 열의 값은 아직 알지 못하는 경우 열의 이름을 명시적으로 다음과 같이 표현 해야 합니다. 값이 생략된 열에는 정의된 DEFAULT 값이 없다면, 널값이 입력됩니다.

INSERT INTO tmpa_emp(empno, ename, hiredate)

VALUES(3, 'kho', to_date('2013-01-01'));

 

다음은 복수 행 삽입입니다. 부질의를 포함하는 두 번째 INSERT문은 부질의의 결과를 테이블에 입력합니다. 이때 부질의 결과의 열의 위치 및 수와 INSERT절의 열의 위치 및 수와 일치하여야 합니다. 다음은 tmpa_emp의 데이터 중 empno가 10보다 작은 데이터를 tmpb_emp에 삽입하는 예제입니다.

INSERT INTO tmpb_emp

    SELECT *

    FROM tmpa_emp

    WHERE empno < 10;

 

3. DELETE

기존 데이터베이스의 데이터를 삭제하는 연산으로 DELETE 명령이 있으며, 그 형식은 다음과 같습니다. 

DELETE

    FROM table-name

    [WHERE predicate]

 

조건절을 만족하는 테이블내의 모든 데이터를 삭제하며, 조건절이 없는 경우 테이블의 모든 데이터를 삭제합니다. 또한 WHERE절에 부질의 사용도 가능합니다. 

 

다음 DELETE 문은 WHERE 절 조건에 만족하는 행을 삭제합니다.

DELETE FROM tmpa_emp

WHERE deptno = 10;

 

* 부질의를 갖는 DELETE 문

DELETE tmpb_emp

WHERE deptno = (SELECT deptno

FROM dept

WHERE loc = 'DALLAS');

 

* 다중 튜플 삭제

테이블내의 모든 데이터가 삭제됩니다.

DELETE FROM tmpa_emp;

 

4. UPDATE

기존의 데이터 값을 변경하는 연산으로 UPDATE 명령이 있으며, 그 형식은 다음과 같습니다.

UPDATE table-name

SET column-name = expression [, column-name = expression …]

[WHERE predicate]

 

조건절을 만족하는 테이블의 열의 값을 set절에 있는 내용의 수식으로 변경됩니다. 이때 WHERE 절에 부질의도 사용이 가능합니다.

 

* 전체 데이터에 대한 변경

UPDATE tmpb_emp

SET sal = sal + 500;

 

* 조건에 의한 변경

UPDATE tmbp_emp

SET sal = sal + 500

WHERE deptno = 30;

 

* 부질의를 갖는 UPDATE문

Update tmpb_emp

SET sal = sal +500;

WHERE deptno = (SELECT deptno

FROM dept

WHERE dname = 'OPERATIONS');

'Oracle' 카테고리의 다른 글

[Oracle] DDL(Data Definition Language)  (0) 2019.06.02
[Oracle] TCL(Transaction Control Language)  (0) 2019.04.28
[Oracle] 서브쿼리(SubQuery)  (0) 2019.04.28
[Oracle] 조인(join)  (0) 2019.04.28
[Oracle] SELECT문  (0) 2019.04.27