Database/Oracle PLSQL

PLSQL DELETE

2023. 4. 20. 15:46
목차
  1. 설명
  2. 구문
  3. 매개변수 및 인수
  4. 참고
  5. 예제 - 하나의 조건 사용
  6. 예제 - 두 개의 조건 사용
  7. 예제 - EXISTS 절 사용
  8. 자주 묻는 질문
  9. 연습 문제 #1
  10. 연습 문제 풀이 #1
  11. 연습 문제 #2
  12. 연습 문제 풀이 #2

Oracle / PLSQL : DELETE 문


이 Oracle 튜토리얼에서는 구문, 예제 및 연습 문제를 통해 Oracle DELETE 문을 사용하는 방법을 설명합니다.

설명

Oracle DELETE 문은 Oracle의 테이블에서 단일 레코드 또는 여러 레코드를 삭제하는 데 사용됩니다.

구문

Oracle/PLSQL에서 DELETE 문의 구문은 다음과 같습니다.

DELETE FROM table
[WHERE conditions];

매개변수 및 인수

table

  • 레코드를 삭제할 테이블입니다.

WHERE 조건

  • 선택 사항입니다. 삭제할 레코드에 대해 충족해야 하는 조건입니다. 조건을 제공하지 않으면 테이블의 모든 레코드가 삭제됩니다.

참고

테이블에서 전체 행을 삭제하므로 Oracle DELETE 문에 필드를 나열할 필요가 없습니다.


예제 - 하나의 조건 사용

DELETE 문에 조건이 하나만 있는 간단한 Oracle DELETE 쿼리 예제를 살펴보겠습니다.

DELETE FROM customers
WHERE last_name = 'Smith';

이 Oracle DELETE 예제는 last_name이 Smith인 customers 테이블에서 모든 레코드를 삭제합니다.

삭제될 행 수를 확인할 수 있습니다. 삭제를 수행하기 전에 다음 Oracle SELECT 문을 실행하여 삭제될 행 수를 확인할 수 있습니다.

SELECT count(*)
FROM customers
WHERE last_name = 'Smith';

예제 - 두 개의 조건 사용

DELETE 문에 두 개의 조건만 있는 Oracle DELETE 예제를 살펴보겠습니다.

DELETE FROM customers
WHERE last_name = 'Anderson'
AND customer_id > 25;

이 Oracle DELETE 예제는 customers 테이블에서 last_name이 'Anderson'이고 customer_id가 25보다 큰 모든 레코드를 삭제합니다.

삭제할 행 수를 확인할 수 있습니다. 삭제를 수행하기 전에 다음 Oracle SELECT 문을 실행하여 삭제될 행 수를 확인할 수 있습니다.

SELECT count(*)
FROM customers
WHERE last_name = 'Anderson'
AND customer_id > 25;

예제 - EXISTS 절 사용

더 복잡한 삭제를 수행할 수도 있습니다.

다른 테이블의 값을 기반으로 한 테이블의 레코드를 삭제하고 싶을 수 있습니다. 삭제를 수행할 때 Oracle FROM 절에 둘 이상의 테이블을 나열할 수 없으므로 Oracle EXISTS 절을 사용할 수 있습니다.

DELETE FROM suppliers
WHERE EXISTS
  ( SELECT customers.customer_name
    FROM customers
    WHERE customers.customer_id = suppliers.supplier_id
    AND customer_id > 25 );

이 Oracle DELETE 예제는 customers 테이블에 customer_id가 25보다 큰 레코드가 있고 customer_id가 supplier_id와 일치하는 suppliers 테이블의 모든 레코드를 삭제합니다.

삭제할 행 수를 확인하려는 경우 삭제를 수행하기 전에 다음 Oracle SELECT 문을 실행할 수 있습니다.

SELECT COUNT(*) FROM suppliers
WHERE EXISTS
  ( SELECT customers.customer_name
    FROM customers
    WHERE customers.customer_id = suppliers.supplier_id
    AND customer_id > 25 );

자주 묻는 질문

  • 질문 : field1 및 field2의 데이터가 TableB의 fieldx 및 fieldz의 데이터와 일치하지 않는 TableA의 모든 레코드를 삭제하기 위해 Oracle DELETE 문을 작성하려면 어떻게 해야 합니까?
  • 답변 : Oracle DELETE 문에 다음과 같이 시도해 볼 수 있습니다.
  • DELETE FROM TableA WHERE NOT EXISTS ( SELECT * FROM TableB WHERE TableA.field1 = TableB.fieldx AND TableA.field2 = TableB.fieldz );

연습 문제 #1

contacts 테이블을 기반으로 contacts 테이블에서 city가 'Las Vegas'고 first_name이 'Jane'인 모든 레코드를 삭제합니다.

CREATE TABLE contacts
( contact_id number(10) not null,
  last_name varchar2(50) not null,
  first_name varchar2(50) not null,
  address varchar2(50),
  city varchar2(50),
  state varchar2(2),
  zip_code varchar2(10),
  CONSTRAINT contacts_pk PRIMARY KEY (contact_id)
);

연습 문제 풀이 #1

다음 Oracle DELETE 문은 contacts 테이블에서 이러한 레코드를 삭제합니다.

DELETE FROM contacts
WHERE city = 'Las Vegas'
AND first_name = 'Jane';

연습 문제 #2

contacts 테이블을 기준으로 contacts 테이블에서 contact_id가 5000 이상 6000 미만인 모든 레코드를 삭제합니다.

CREATE TABLE contacts
( contact_id number(10) not null,
  last_name varchar2(50) not null,
  first_name varchar2(50) not null,
  address varchar2(50),
  city varchar2(50),
  state varchar2(2),
  zip_code varchar2(10),
  CONSTRAINT contacts_pk PRIMARY KEY (contact_id)
);

연습 문제 풀이 #2

다음 Oracle DELETE 문은 contacts 테이블에서 이러한 레코드를 삭제합니다.

DELETE FROM contacts
WHERE contact_id >= 5000
AND contact_id < 6000;

또는 다음과 같이 BETWEEN 절을 사용하여 솔루션을 작성할 수도 있습니다.

DELETE FROM contacts
WHERE contact_id BETWEEN 5000 AND 5999;

< 이전 / 다음 : TRUNCATE >

'Database > Oracle PLSQL' 카테고리의 다른 글

PLSQL EXISTS  (0) 2023.04.21
PLSQL TRUNCATE  (0) 2023.04.21
PLSQL UPDATE  (1) 2023.04.19
PLSQL INSERT ALL  (0) 2023.04.17
PLSQL INSERT  (0) 2023.04.17
  1. 설명
  2. 구문
  3. 매개변수 및 인수
  4. 참고
  5. 예제 - 하나의 조건 사용
  6. 예제 - 두 개의 조건 사용
  7. 예제 - EXISTS 절 사용
  8. 자주 묻는 질문
  9. 연습 문제 #1
  10. 연습 문제 풀이 #1
  11. 연습 문제 #2
  12. 연습 문제 풀이 #2
'Database/Oracle PLSQL' 카테고리의 다른 글
  • PLSQL EXISTS
  • PLSQL TRUNCATE
  • PLSQL UPDATE
  • PLSQL INSERT ALL
Riz.Dev
Riz.Dev
Riz.Dev 처음부터 다시 시작하는 개발 rizt.dev@gmail.com https://github.com/riz-jeong
Riz.Dev
Riz.Dev
Riz.Dev
전체
오늘
어제
  • init
    • Database
      • SQL
      • Oracle PLSQL
      • PostgreSQL
    • DevOps
      • 가상화
      • Linux
      • AWS
      • Windows
    • Programming
      • C, C++
      • Python
      • JAVA
      • Spring
      • Javascript
    • Knowledge
      • A.I.
    • Challenge
      • 정보처리기사
      • 리눅스마스터
      • AWS Cloud Practitioner
      • SQLD
      • 강의
    • etc.
      • 메모
      • 기타

블로그 메뉴

  • 홈

공지사항

  • Riz.Dev

인기 글

태그

  • truncate
  • linux
  • loop
  • EC2
  • DROP TABLE
  • 연습문제
  • Primary Keys
  • TechOnTheNet
  • literals
  • PLSQL
  • INSERT
  • Proxmox
  • 데이터 형식
  • or
  • Foreign Keys
  • INTERSECT
  • like
  • is not null
  • is null
  • SQL
  • indexes
  • select
  • update
  • and
  • minus
  • having
  • xpenology
  • group by
  • AWS
  • aliases

최근 댓글

최근 글

hELLO · Designed By 정상우.
Riz.Dev
PLSQL DELETE
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.