-
Oracle - DML(Data ManipulationLanguage) DELETE - Part 3데이터베이스/Oracle 2020. 11. 20. 16:29728x90반응형
DELETE
DELETE란 테이블의 행을 삭제하는 구문으로 테이블의 행 개수가 줄어든다.
삭제 시 FOREIGN KEY 제약조건으로 컬럼 삭제가 불가능한 경우 제약조건을 비활성화 할 수 있다.
[ DELETE 예시 ]
DELETE FROM EMPLOYEE WHERE EMP_NAME = ‘장채현’;
결과는 이렇게 나온다.
* WHERE조건을 설정하지 않으면 모든 행이 삭제된다.
* FOREIGN KEY 제약조건이 설정되어 있는 경우 참조되고 있는 값에 대해서는 삭제는 불가능하다.
제약조건 비활성화
DELETE FROM DEPARTMENT WHERE DEPT_ID = ‘D1’; ALTER TABLE EMPLOYEE DISABLE CONSTRAINT EMP_DEPTCODE_FK CASCADE; -- 비활성화 한다. DELETE FROM DEPARTMENT WHERE DEPT_ID = ‘D1’; ALTER TABLE EMPLOYEE ENABLE CONSTRAINT EMP_DEPTCODE_FK; -- 다시 활성화 할 수 있다.
* 비활성화 된 제약 조건을 다시 활성화 시킬 수 있다.
TRUNCATE
TRUNCATE란 테이블 전체 행 삭제 시 사용 하는 DDL로 DELETE보다 수행 속도가 빠르고 ROLLBACK을 통해 복구가 불가능하다.
또한 DELETE와 마찬가지로 FOREIGN KEY 제약조건일 때는 적용 불가능하기 때문에 제약 조건을 비활성화 해야 삭제할 수 있다.
[ TRUNCATE 예시 ]
TRUNCATE TABLE EMP_SALARY;
테이블을 조회하면 결과가 이러하다.
* 모든 컬럼이 삭제되긴 하지만 테이블의 구조는 남아있다.
되돌리기위해 ROLLBACK을 해본다.
ROLLBACK;
하지만 ROLLBACK 후에도 컬럼이 복구되지 않는다.
728x90반응형'데이터베이스 > Oracle' 카테고리의 다른 글
Oracle - View (0) 2020.11.23 Oracle - DDL (Data Definition Language) ALTER, DROP - Part 3 (0) 2020.11.22 Oracle - DML(Data ManipulationLanguage) UPDATE - Part 2 (0) 2020.11.20 Oracle - DML(Data ManipulationLanguage) INSERT - Part 1 (0) 2020.11.20 Oracle - DDL (Data Definition Language) 제약 조건 - Part 2 (0) 2020.11.20