ALTIBASE HDB 5.3.3 기초강좌
DELETE 0 0 63,017

by Altibase DELETE LIMIT [2012.02.08]


DELETE 개념

  테이블에서 레코드를 삭제하는 구문입니다.

기본 DELETE 구문

 
DELETE [FROM]table_name 
[WHERE conditions];
    
  • - [FROM] table_name : 삭제될 레코드를 포함한 테이블 이름을 명시한다.
  • - [WHERE conditions] : 조건절은 작성하여 삭제하고자 하는 행을 제한한다.
  • - FROM은 생략해도 되며, WHERE 절을 생략할 경우 명시한 테이블의 전체 행을 삭제된다.

기본 DELETE 예제

  ORDERS 테이블의 전체 데이터를 삭제하시오.

 
iSQL> DELETE FROM orders;
    

  GOODS 테이블에서 물품명이 ‘IM-300’인 레코드를 삭제

 
iSQL> DELETE FROM goods 
      WHERE gname = 'IM-300';
    

WHERE절에 서브쿼리를 이용한 DELETE 구문

 
DELETE [FROM] table_name
[WHERE column_name 연산자 (SELECT statement  …);
    
  • - [WHERE column_name 연산자 (SELECT statement …); : WHERE 절에 subquery를 이용하여 삭제할 행을 제한한다

WHERE절에 서브쿼리를 이용한 DELETE 예제

  ORDERS 테이블에서 KMKIM 사원이 받은 주문을 삭제하시오

 
iSQL> DELETE FROM orders 
      WHERE eno = (SELECT eno FROM employee 
                   WHERE ename = 'KMKIM');
    

LIMIT 을 이용한 DELETE 구문

  대량의 데이터를 삭제할 때, 전체 데이터를 한꺼번에 삭제하는 것은 성능 저하를 초래하기 때문에 적절한 레코드 건수를 지정하여 삭제해야 합니다.

 
DELETE [FROM] table_name
[WHERE conditions]
LIMIT [start_index ,] row_count;
    
  • - LIMIT [start_index ,] row_count; : start_index는 삭제하고자 하는 시작 행의 위치를 작성한다. 생략 시 첫 번째 행부터 삭제한다.
  • - row_count는 삭제하고자 하는 행의 개수를 지정한다.
  • - DELETE구문으로 변경되는 값을 제한하기 위해 쓰이며, subquery의 유무와 상관없이 구문의 맨 끝에 사용한다
  • - 주로 트랜잭션의 부하를 줄이기 위한 쿼리 튜닝의 목적으로 쓰인다

LIMIT 을 이용한 DELETE 예제

  EMP 테이블에서 부서명이 'PRESALES DEPT'인 데이터 중 한 건을 삭제하시오.

 
iSQL> DELETE FROM employee 
      WHERE dno = (SELECT dno 
                   FROM department 
                   WHERE dname = 'PRESALES DEPT') 
      LIMIT 1;
    

DELETE 시 주의사항

  • - WHERE 조건절을 생략할 경우 테이블의 모든 레코드를 삭제함
  • - 대량의 데이터를 DELETE 시 LIMIT을 사용하여 작업 단위를 나눌 수 있음

- 강좌 URL : http://www.gurubee.net/lecture/2184

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입