2021. 4. 6. 21:27ㆍOracle 공부
이번에는 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을 못하고 커밋을 했을 경우. 백업 서버에 있는 데이터를 가지고 오면 됩니다.
※ 백업 서버까지 가지 않도록 조심해야 합니다.
'Oracle 공부' 카테고리의 다른 글
Day37 - TCL ( COMMIT, ROLLBACK, SAVEPOINT) (0) | 2021.04.07 |
---|---|
Day37 - 테이블 병합.MERGE (0) | 2021.04.07 |
Day36 - 행추가.INSERT , 테이블 복사.CTAS , 복구.ROLLBACK (0) | 2021.04.06 |
Day35 - 인라인 뷰 (0) | 2021.04.05 |
Day35 - 스칼라 서브쿼리 (0) | 2021.04.05 |