SQL 8-8. DELETE문 : 행 삭제
관련링크
본문
DELETE문을 사용하여 테이블에서 기존 행을 제거할 수 있다.
예제) 테이블에서 행 삭제
오라클 디비 예제 : DELECT FROM departments
WHERE department_name = 'Finance';
1 row deleted.
☞설명) ․ WHERE절을 지정하면 특정 행이 삭제된다.
예제는 DEPARTMENTS테이블에 Finance부서를 삭제한다.
SELECT문을 사용하여 삭제된 행을 표시해 보면 삭제 작업을 확인할 수 있습다.
SELECT *
FROM departments
WHERE department_name = 'Finance';
no rows selected.
예제)
오라클 디비 예제 : DELECT FROM copy_emp;
22 row deleted.
☞설명)
WHERE절을 생략하면 테이블의 모든 행이 삭제됩니다.
예제에는 WHERE절이 지정되지 않았으므로 COPY_EMP테이블의 모든 행이 삭제된다.
예제) WHERE절에서 지정한 행을 제거합니다.
오라클 디비 예제 : DELETE FROM employees
WHERE employee_id = 114;
1 row delete
DELETE FROM departments
WHERE department_id IN (30, 40);
2 rows deleted.
MSSQL 디비 예제 :
SELECT * FROM employee
WHERE pub_ID IN (SELECT pub_id
FROM publishers
WHERE pub_name LIKE '%Pub%')
DELETE FROM employee
WHERE pub_id IN (SELECT pub_id
FROM publishers
WHERE pub_name LIKE '%Pub%');
TRUNCATE TABLE detail_dept;
Table truncated.
예제) 다른 테이블을 기반으로 행 삭제
DELETE문에 서브 쿼리를 사용하여 테이블에서 다른 테이블의 값을 기반으로 하는 행을 제거한다.
오라클 디비 예제 : DELECT FROM employees
WHERE department_id =
(SELECT department_id
FROM departments
WHERE department_name
LIKE '%Public%');
1 row deleted.
☞설명) 다른 테이블을 기반으로 행 삭제
예제는 부서 이름에 문자열“Public"이 포함된 부서의 모든 사원을 삭제한다.
서브 쿼리는 문자열 "Public"이 포함된 부서 이름을 기준으로 DEPARTMENTS테이블을 검색하여 기본 질의에 부서 번호를
제공한다.
기본 질의는 이 부서 번호를 기분으로 EMPLOYEES테이블에서 테이터 행을 삭제한다.