Day36 - 행수정.UPDATE , 행삭제.DELETE

2021. 4. 6. 21:27Oracle 공부

이번에는 UPDATE 와 DELETE 를 알아 봅시다.

 

UPDATE 와 DELETE 는 데이터를 수정, 삭제 하는 것이기 때문에 아주 조심히 사용해야 합니다.

그렇기 때문에, 항상 사용 전 먼저 SELECT를 해봐야 합니다.

 

UPDATE

UPDATE는 데이터를 수정하는 것을 의미합니다.

 

UPDATE를 확인 하기 위해서, 테이블을 복사 해봅시다.

 

- UPDATE 테이블명 SET 속성 = 값 WHERE 조건

 

항상 UPDATE를 하기 전, SELECT를 사용해 원하는 행이 맞는지 확인을 해줍니다.

값을 변경해 줄 행이 맞다면, UPDATE를 사용해서 값을 변경 해주면 됩니다.

WHERE절의 조건에는 보통 기본키(PK)를 기준으로 합니다.

 

※ SET절에 여러개의 속성들을 사용해 값을 변경할 수 있습니다.

 - WHERE 절에 서브쿼리가 올 수 있습니다.

EMPS 테이블에 first_name 이 Donald 인 사원의 department_id 와 같은 사원들의 COMMISSION_PCT 를 0.2 로 변경해라 라는 뜻 입니다.

 

Donald의 DEPARTMENT_ID  50이므로, DEPARTMENT_ID가 50인 사원의 COMMISSION_PCT를 전부 0.2로 변경합니다

 

- UPDATE EMPS SET (속성) = (서브쿼리) WHERE = 조건

EMPS 테이블에 EMPLOYEE_ID 가 102 인 행을 EMPLOYEES 테이블의 EMPLOYEE_ID 가 103 인 행의 값으로 변경하겠다 라는 뜻입니다. (그 중, JOB_ID , SALARY, COMMISSION_PCT, MANAGER_ID, DEPARTMENT_ID 만)

위는 UPDATE 전, 아래는 UPDATE 후. 해당하는 속성의 값들이 변한 것을 확인 할 수 있습니다.

 

이렇게 서브쿼리를 사용해서 값을 변경할 수도 있습니다.

 

- 만약 WHERE절을 안 써줄 경우. 테이블의 모든 데이터가 변경됩니다. (주의)

 

DELETE

DELETE는 데이터의 삭제를 의미 합니다.

 

- DELETE FROM 테이블명 WHERE 조건

 

DELETE 도 UPDATE와 마찬가지로 항상 사용전에, SELECT를 이용해서 삭제해 줄 데이터를 확인해 줍시다.

데이터를 확인 했을 때, 삭제하고 싶은 데이터가 맞다면, 삭제를 진행해 주면 됩니다.

그런데, 삭제를 하려고 하니까 이렇게 오류가 납니다.

그 이유는, DEPARTMENTS 테이블의 기본키를 다른 테이블에서 외래키로 사용(자식 레코드)하고 있기 때문입니다.

이러한 경우. 데이터를 삭제하기 위해서는 자식 레코드를 삭제한 후, 원래 삭제하려던 데이터를 삭제할 수 있습니다.

실무에서는, 이러한 이유 때문에 외래키를 사용하지 않는 경우도 있다고 합니다.

 

그래서 저희는 복사한 테이블을 가지고 연습을 해보면 됩니다.

- WHERE 절에 서브쿼리가 올 수 있습니다.

항상 데이터 삭제 전, 삭제할 데이터가 맞는지 확인부터 해줍시다.

DEPARTMENTS 테이블의 DEPARTMENT_NAME = 'Shipping' 인 DEPARTMENT_ID 와 같은 EMPS 테이블의 DEPARTMENT_ID 의 레코드(행)를 삭제해라

 

이렇게 UPDATE 와 DELETE 에 대해서 알아 보았습니다.

 

고생하셨습니다.

 

※ 항상 수정,삭제 전 SELECT를 사용해 데이터를 확인 해야 합니다.

※ 혹시나 실수로 데이터를 날렸을 경우 ROLLBACK 을 하면 됩니다.

※ 만약 ROLLBACK을 못하고 커밋을 했을 경우. 백업 서버에 있는 데이터를 가지고 오면 됩니다.

※ 백업 서버까지 가지 않도록 조심해야 합니다.