메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Oracle (토론 | 기여)님의 2025년 5월 27일 (화) 00:04 판 (새 문서: # 오라클 DELETE 문 == 개요 == '''DELETE''' 문은 오라클 데이터베이스에서 테이블의 데이터 행을 제거하는 데 사용되는 DML(Data Manipulation Language) 명령어입니다. 조건에 맞는 특정 행들만 삭제하거나, 테이블의 모든 데이터를 삭제할 수 있습니다. ## 기본 구문 ```sql DELETE FROM table_name [WHERE condition]; ``` == DELETE 문의 주요 특징 == * 테이블에서 행 단위로 데이터 삭제 * WHERE 절...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
  1. 오라클 DELETE 문

개요

DELETE 문은 오라클 데이터베이스에서 테이블의 데이터 행을 제거하는 데 사용되는 DML(Data Manipulation Language) 명령어입니다. 조건에 맞는 특정 행들만 삭제하거나, 테이블의 모든 데이터를 삭제할 수 있습니다.

    1. 기본 구문

```sql DELETE FROM table_name [WHERE condition]; ```

DELETE 문의 주요 특징

  • 테이블에서 행 단위로 데이터 삭제
  • WHERE 절로 삭제할 행 지정 (생략 시 전체 행 삭제)
  • 트랜잭션 제어 가능 (COMMIT 또는 ROLLBACK)
  • 삭제된 데이터는 FLASHBACK 기능으로 복구 가능 (일정 기간 내)
    1. DELETE 사용 예제

조건부 삭제

```sql -- 사원번호가 101인 사원 삭제 DELETE FROM employees WHERE employee_id = 101; ```

서브쿼리를 이용한 삭제

```sql -- 급여가 평균보다 낮은 사원 삭제 DELETE FROM employees WHERE salary < (SELECT AVG(salary) FROM employees); ```

전체 데이터 삭제

```sql -- employees 테이블의 모든 데이터 삭제 DELETE FROM employees; ```

    1. 고급 DELETE 기능

다중 테이블 삭제

```sql -- 부서가 'IT'인 사원들 삭제 DELETE FROM employees WHERE department_id IN (

 SELECT department_id 
 FROM departments 
 WHERE department_name = 'IT'

); ```

RETURNING 절 사용

```sql -- 삭제된 행의 정보 반환 DELETE FROM employees WHERE department_id = 10 RETURNING employee_id, last_name INTO :emp_id, :emp_name; ```

    1. DELETE 성능 고려사항

인덱스 활용

  • WHERE 조건에 인덱스가 있는 컬럼 사용 시 성능 향상

대량 데이터 삭제

```sql -- 대량 데이터 삭제 시分批 처리 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 절 없이 실행하면 테이블의 모든 데이터가 삭제됨
  • 대량 데이터 삭제 시 트랜잭션 로그 과다 생성 가능
  • 외래키 제약조건이 있는 경우 참조 무결성 위반 가능성
  • 삭제 전 데이터 백업 권장

관련 항목