Database/Oracle PLSQL

PLSQL UPDATE

2023. 4. 19. 17:52
목차
  1. 설명
  2. 구문
  3. 매개변수 및 인수
  4. 예제 - 단일 열 업데이트
  5. 예제 - 여러 열 업데이트
  6. 예제 - 다른 테이블의 데이터로 테이블 업데이트
  7. 예제 - EXISTS 절 사용
  8. 연습 문제 #1
  9. 연습 문제 플이 #1
  10. 연습 문제 #2
  11. 연습 문제 플이 #2

Oracle / PLSQL : UPDATE 문


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

설명

Oracle UPDATE 문은 Oracle 데이터베이스의 테이블에 있는 기존 레코드를 업데이트하는 데 사용됩니다. 기존 업데이트를 수행하는지 또는 다른 테이블의 데이터로 한 테이블을 업데이트하는지에 따라 Oracle의 업데이트 쿼리에는 두 가지 구문이 있습니다.

구문

Oracle/PLSQL에서 하나의 테이블을 업데이트할 때 UPDATE 문의 구문은 다음과 같습니다.

UPDATE table
SET column1 = expression1,
    column2 = expression2,
    ...
    column_n = expression_n
[WHERE conditions];

OR

한 테이블을 다른 테이블의 데이터로 업데이트할 때 Oracle UPDATE 문의 구문은 다음과 같습니다.

UPDATE table1
SET column1 = (SELECT expression1
               FROM table2
               WHERE conditions)
[WHERE conditions];

매개변수 및 인수

column1, column2, ... column_n

  • 업데이트하려는 열입니다.

expression1, expression2, ... expression_n

  • column1, column2, ... column_n에 할당할 새 값입니다. 따라서 column1에는 expression1의 값이 할당되고, column2에는 expression2의 값이 할당되는 식으로 할당됩니다.

WHERE conditions(WHERE 조건)

  • 선택 사항입니다. 업데이트를 실행하기 위해 충족해야 하는 조건입니다. 조건을 제공하지 않으면 테이블의 모든 레코드가 업데이트됩니다.

예제 - 단일 열 업데이트

아주 간단한 Oracle UPDATE 쿼리 예제를 살펴보겠습니다.

UPDATE customers
SET last_name = 'Anderson'
WHERE customer_id = 5000;

이 Oracle UPDATE 예제는 customers 테이블에서 customer_id가 5000인 last_name을 'Anderson'으로 업데이트합니다.


예제 - 여러 열 업데이트

단일 UPDATE 문으로 둘 이상의 열을 업데이트할 수 있는 Oracle UPDATE 예제를 살펴보겠습니다.

UPDATE customers
SET state = 'California',
    customer_rep = 32
WHERE customer_id > 100;

여러 열을 업데이트하려는 경우 열/값 쌍을 쉼표로 구분하여 이 작업을 수행할 수 있습니다.

이 Oracle UPDATE 문 예제에서는 state를 'California'로 업데이트하고 customer_id가 100보다 큰 경우 customer_rep를 32로 업데이트합니다.


예제 - 다른 테이블의 데이터로 테이블 업데이트

다른 테이블의 데이터로 테이블을 업데이트하는 방법을 보여주는 Oracle UPDATE 예제를 살펴보겠습니다.

UPDATE customers
SET c_details = (SELECT contract_date
                 FROM suppliers
                 WHERE suppliers.supplier_name = customers.customer_name)
WHERE customer_id < 1000;

이 UPDATE 예제는 customer_id가 1000보다 작은 모든 레코드에 대해 customers 테이블만 업데이트합니다. suppliers 테이블의 supplier_name이 customers 테이블의 customer_name과 일치하면 suppliers 테이블의 contract_date가 customers 테이블의 c_details 필드에 복사됩니다.


예제 - EXISTS 절 사용

Oracle에서 더 복잡한 업데이트를 수행할 수도 있습니다.

다른 테이블의 값을 기반으로 한 테이블의 레코드를 업데이트하고 싶을 수 있습니다. Oracle UPDATE 문에는 둘 이상의 테이블을 나열할 수 없으므로 Oracle EXISTS 절을 사용할 수 있습니다.

UPDATE suppliers
SET supplier_name = (SELECT customers.customer_name
                     FROM customers
                     WHERE customers.customer_id = suppliers.supplier_id)
WHERE EXISTS (SELECT customers.customer_name
              FROM customers
              WHERE customers.customer_id = suppliers.supplier_id);

이 Oracle 업데이트 예제에서는 supplier_id가 customer_id 값과 일치할 때마다 supplier_name을 customers 테이블의 customer_name으로 덮어씁니다.


연습 문제 #1

다음 데이터로 채워진 suppliers 테이블을 기반으로 supplier_name이 "IBM"인 모든 레코드에 대해 city를 "San Francisco"로 업데이트합니다.

CREATE TABLE suppliers
( supplier_id number(10) not null,
  supplier_name varchar2(50) not null,
  city varchar2(50),
  CONSTRAINT suppliers_pk PRIMARY KEY (supplier_id)
);

INSERT INTO suppliers (supplier_id, supplier_name, city)
VALUES (5001, 'Microsoft', 'Chicago');

INSERT INTO suppliers (supplier_id, supplier_name, city)
VALUES (5002, 'IBM', 'Chicago');

INSERT INTO suppliers (supplier_id, supplier_name, city)
VALUES (5003, 'Red Hat', 'Detroit');

INSERT INTO suppliers (supplier_id, supplier_name, city)
VALUES (5004, 'NVIDIA', 'New York');

연습 문제 플이 #1

다음 UPDATE 문은 Oracle에서 이 업데이트를 수행합니다.

UPDATE suppliers
SET city = 'San Francisco'
WHERE supplier_name = 'IBM';

이제 suppliers 테이블은 다음과 같이 표시됩니다.

SUPPLIER_ID SUPPLIER_NAME CITY
5001 Microsoft Chicago
5002 IBM San Francisco
5003 Red Hat Detroit
5004 NVIDIA New York

연습 문제 #2

다음 데이터로 채워진 suppliers 및 customers 테이블을 기반으로 suppliers 테이블의 supplier_name이 customers 테이블의 customer_name과 일치할 때 suppliers 테이블의 city를 customers 테이블의 city로 업데이트합니다.

CREATE TABLE suppliers
( supplier_id number(10) not null,
  supplier_name varchar2(50) not null,
  city varchar2(50),
  CONSTRAINT suppliers_pk PRIMARY KEY (supplier_id)
);

INSERT INTO suppliers (supplier_id, supplier_name, city)
VALUES (5001, 'Microsoft', 'New York');

INSERT INTO suppliers (supplier_id, supplier_name, city)
VALUES (5002, 'IBM', 'Chicago');

INSERT INTO suppliers (supplier_id, supplier_name, city)
VALUES (5003, 'Red Hat', 'Detroit');

INSERT INTO suppliers (supplier_id, supplier_name, city)
VALUES (5005, 'NVIDIA', 'LA');

CREATE TABLE customers
( customer_id number(10) not null,
  customer_name varchar2(50) not null,
  city varchar2(50),
  CONSTRAINT customers_pk PRIMARY KEY (customer_id)
);

INSERT INTO customers (customer_id, customer_name, city)
VALUES (7001, 'Microsoft', 'San Francisco');

INSERT INTO customers (customer_id, customer_name, city)
VALUES (7002, 'IBM', 'Toronto');

INSERT INTO customers (customer_id, customer_name, city)
VALUES (7003, 'Red Hat', 'Newark');

연습 문제 플이 #2

다음 UPDATE 문은 Oracle에서 이 업데이트를 수행합니다.

UPDATE suppliers
SET city = (SELECT customers.city
            FROM customers
            WHERE customers.customer_name = suppliers.supplier_name)
WHERE EXISTS (SELECT customers.city
              FROM customers
              WHERE customers.customer_name = suppliers.supplier_name);

이제 suppliers 테이블은 다음과 같이 표시됩니다.

SUPPLIER_ID SUPPLIER_NAME CITY
5001 Microsoft San Francisco
5002 IBM Toronto
5003 Red Hat Newark
5004 NVIDIA LA

< 이전 / 다음 : DELETE >

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

PLSQL TRUNCATE  (0) 2023.04.21
PLSQL DELETE  (1) 2023.04.20
PLSQL INSERT ALL  (0) 2023.04.17
PLSQL INSERT  (0) 2023.04.17
PLSQL BETWEEN  (0) 2023.04.16
  1. 설명
  2. 구문
  3. 매개변수 및 인수
  4. 예제 - 단일 열 업데이트
  5. 예제 - 여러 열 업데이트
  6. 예제 - 다른 테이블의 데이터로 테이블 업데이트
  7. 예제 - EXISTS 절 사용
  8. 연습 문제 #1
  9. 연습 문제 플이 #1
  10. 연습 문제 #2
  11. 연습 문제 플이 #2
'Database/Oracle PLSQL' 카테고리의 다른 글
  • PLSQL TRUNCATE
  • PLSQL DELETE
  • PLSQL INSERT ALL
  • PLSQL INSERT
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

인기 글

태그

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

최근 댓글

최근 글

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

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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