(새 문서: # 오라클 DELETE 문 == 개요 == '''DELETE''' 문은 오라클 데이터베이스에서 테이블의 데이터 행을 제거하는 데 사용되는 DML(Data Manipulation Language) 명령어입니다. 조건에 맞는 특정 행들만 삭제하거나, 테이블의 모든 데이터를 삭제할 수 있습니다. ## 기본 구문 ```sql DELETE FROM table_name [WHERE condition]; ``` == DELETE 문의 주요 특징 == * 테이블에서 행 단위로 데이터 삭제 * WHERE 절...) |
편집 요약 없음 |
||
2번째 줄: | 2번째 줄: | ||
== 개요 == | == 개요 == | ||
{{요점 | |||
|내용= | |||
'''DELETE''' 문은 오라클 데이터베이스에서 테이블의 데이터 행을 제거하는 데 사용되는 DML(Data Manipulation Language) 명령어입니다. 조건에 맞는 특정 행들만 삭제하거나, 테이블의 모든 데이터를 삭제할 수 있습니다. | '''DELETE''' 문은 오라클 데이터베이스에서 테이블의 데이터 행을 제거하는 데 사용되는 DML(Data Manipulation Language) 명령어입니다. 조건에 맞는 특정 행들만 삭제하거나, 테이블의 모든 데이터를 삭제할 수 있습니다. | ||
}} | |||
## 기본 구문 | ## 기본 구문 | ||
<source lang=sql> | |||
DELETE FROM table_name | DELETE FROM table_name | ||
[WHERE condition]; | [WHERE condition]; | ||
</source> | |||
== DELETE 문의 주요 특징 == | == DELETE 문의 주요 특징 == | ||
19번째 줄: | 22번째 줄: | ||
=== 조건부 삭제 === | === 조건부 삭제 === | ||
<source lang=sql> | |||
-- 사원번호가 101인 사원 삭제 | -- 사원번호가 101인 사원 삭제 | ||
DELETE FROM employees | DELETE FROM employees | ||
WHERE employee_id = 101; | WHERE employee_id = 101; | ||
</source> | |||
=== 서브쿼리를 이용한 삭제 === | === 서브쿼리를 이용한 삭제 === | ||
<source lang=sql> | |||
-- 급여가 평균보다 낮은 사원 삭제 | -- 급여가 평균보다 낮은 사원 삭제 | ||
DELETE FROM employees | DELETE FROM employees | ||
WHERE salary < (SELECT AVG(salary) FROM employees); | WHERE salary < (SELECT AVG(salary) FROM employees); | ||
</source> | |||
=== 전체 데이터 삭제 === | === 전체 데이터 삭제 === | ||
<source lang=sql> | |||
-- employees 테이블의 모든 데이터 삭제 | -- employees 테이블의 모든 데이터 삭제 | ||
DELETE FROM employees; | DELETE FROM employees; | ||
</source> | |||
## 고급 DELETE 기능 | ## 고급 DELETE 기능 | ||
=== 다중 테이블 삭제 === | === 다중 테이블 삭제 === | ||
<source lang=sql> | |||
-- 부서가 'IT'인 사원들 삭제 | -- 부서가 'IT'인 사원들 삭제 | ||
DELETE FROM employees | DELETE FROM employees | ||
49번째 줄: | 52번째 줄: | ||
WHERE department_name = 'IT' | WHERE department_name = 'IT' | ||
); | ); | ||
</source> | |||
=== RETURNING 절 사용 === | === RETURNING 절 사용 === | ||
<source lang=sql> | |||
-- 삭제된 행의 정보 반환 | -- 삭제된 행의 정보 반환 | ||
DELETE FROM employees | DELETE FROM employees | ||
WHERE department_id = 10 | WHERE department_id = 10 | ||
RETURNING employee_id, last_name INTO :emp_id, :emp_name; | RETURNING employee_id, last_name INTO :emp_id, :emp_name; | ||
</source> | |||
## DELETE 성능 고려사항 | ## DELETE 성능 고려사항 | ||
65번째 줄: | 68번째 줄: | ||
=== 대량 데이터 삭제 === | === 대량 데이터 삭제 === | ||
<source lang=sql> | |||
-- 대량 데이터 삭제 시分批 처리 | -- 대량 데이터 삭제 시分批 처리 | ||
BEGIN | BEGIN | ||
77번째 줄: | 80번째 줄: | ||
END LOOP; | END LOOP; | ||
END; | END; | ||
</source> | |||
== TRUNCATE와의 차이점 == | == TRUNCATE와의 차이점 == |
2025년 5월 27일 (화) 00:07 판
- 오라클 DELETE 문
개요
menu_book DELETE 문은 오라클 데이터베이스에서 테이블의 데이터 행을 제거하는 데 사용되는 DML(Data Manipulation Language) 명령어입니다. 조건에 맞는 특정 행들만 삭제하거나, 테이블의 모든 데이터를 삭제할 수 있습니다.
- 기본 구문
DELETE FROM table_name [WHERE condition];
DELETE 문의 주요 특징
- 테이블에서 행 단위로 데이터 삭제
- WHERE 절로 삭제할 행 지정 (생략 시 전체 행 삭제)
- 트랜잭션 제어 가능 (COMMIT 또는 ROLLBACK)
- 삭제된 데이터는 FLASHBACK 기능으로 복구 가능 (일정 기간 내)
- DELETE 사용 예제
조건부 삭제
-- 사원번호가 101인 사원 삭제 DELETE FROM employees WHERE employee_id = 101;
서브쿼리를 이용한 삭제
-- 급여가 평균보다 낮은 사원 삭제 DELETE FROM employees WHERE salary < (SELECT AVG(salary) FROM employees);
전체 데이터 삭제
-- employees 테이블의 모든 데이터 삭제 DELETE FROM employees;
- 고급 DELETE 기능
다중 테이블 삭제
-- 부서가 'IT'인 사원들 삭제 DELETE FROM employees WHERE department_id IN ( SELECT department_id FROM departments WHERE department_name = 'IT' );
RETURNING 절 사용
-- 삭제된 행의 정보 반환 DELETE FROM employees WHERE department_id = 10 RETURNING employee_id, last_name INTO :emp_id, :emp_name;
- DELETE 성능 고려사항
인덱스 활용
- WHERE 조건에 인덱스가 있는 컬럼 사용 시 성능 향상
대량 데이터 삭제
-- 대량 데이터 삭제 시分批 처리 BEGIN LOOP DELETE FROM large_table WHERE rownum <= 10000 AND create_date < TO_DATE('2020-01-01', 'YYYY-MM-DD'); EXIT WHEN SQL%ROWCOUNT = 0; COMMIT; END LOOP; END;
TRUNCATE와의 차이점
특징 | DELETE | TRUNCATE |
---|---|---|
느림 | 매우 빠름 | ||
가능 | 불가능 | ||
안함 | 즉시 회수 | ||
발생 | 발생 안함 | ||
사용 가능 | 사용 불가 |
주의사항
- WHERE 절 없이 실행하면 테이블의 모든 데이터가 삭제됨
- 대량 데이터 삭제 시 트랜잭션 로그 과다 생성 가능
- 외래키 제약조건이 있는 경우 참조 무결성 위반 가능성
- 삭제 전 데이터 백업 권장