메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
편집 요약 없음
 
(같은 사용자의 중간 판 2개는 보이지 않습니다)
53번째 줄: 53번째 줄:
</source>
</source>


=== RETURNING 절 사용 ===
=== RETURNING 절 사용 (PL/SQL)===
<source lang=sql>
<source lang=sql>
-- 삭제된 행의 정보 반환
-- 삭제된 행의 정보 반환
68번째 줄: 68번째 줄:
=== 대량 데이터 삭제 ===
=== 대량 데이터 삭제 ===
<source lang=sql>
<source lang=sql>
-- 대량 데이터 삭제 시分批 처리
BEGIN
BEGIN
   LOOP
   LOOP
87번째 줄: 86번째 줄:
! 특징 !! DELETE !! TRUNCATE
! 특징 !! DELETE !! TRUNCATE
|-
|-
| 실행 속도 | 느림 | 매우 빠름
| 실행 속도 || 느림 || 매우 빠름
|-
|-
| 롤백 가능 | 가능 | 불가능
| 롤백 가능 || 가능 || 불가능
|-
|-
| 저장공간 회수 | 안함 | 즉시 회수
| 저장공간 회수 || 안함 || 즉시 회수
|-
|-
| 트리거 발생 | 발생 | 발생 안함
| 트리거 발생 || 발생 || 발생 안함
|-
|-
| WHERE 조건 | 사용 가능 | 사용 불가
| WHERE 조건 || 사용 가능 || 사용 불가
|}
|}



2025년 6월 2일 (월) 19:48 기준 최신판

  1. 오라클 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 절 사용 (PL/SQL)

-- 삭제된 행의 정보 반환
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 조건 사용 가능 사용 불가

주의사항

  • WHERE 절 없이 실행하면 테이블의 모든 데이터가 삭제됨
  • 대량 데이터 삭제 시 트랜잭션 로그 과다 생성 가능
  • 외래키 제약조건이 있는 경우 참조 무결성 위반 가능성
  • 삭제 전 데이터 백업 권장

관련 항목