0
 45   5   1
  View Articles

Name  
   손병목  (2002-04-22 06:12:56, Hit : 15238, Vote : 1518)
Homepage  
   http://www.itmembers.net
Subject  
   DML(Data Manipulation Language) - UPDATE
지금까지 SELECT 문에 대해 장시간에 걸쳐 실습해 보았습니다.
이번 시간부터는 UPDATE, INSERT, DELETE 문에 대해 차례대로 알아 보겠습니다.
UPDATE, INSERT, DELETE 문을 보통 DML - Data Manipulation Language라고 합니다. 우리말로 데이터 조작어라고 번역할 수 있습니다.

SQL 명령어의 분류에 대해서는 이미 제19강 SQL과 SQL*Plus에서 다룬 적이 있습니다. 혹시 기억이 안나시면 참조하시기 바랍니다.

오늘은 DML, 그 첫시간으로 UPDATE 명령에 대해 알아 보겠습니다.


  1. UPDATE 형식과 특징

    UPDATE table_name
    SET column_one = expression, column_two = expression, …
    WHERE search condition(s);

    • UPDATE는 테이블의 행(레코드) 값을 ‘변경’할 때 사용합니다.
    • 하나의 UPDATE 문으로 하나의 테이블 또는 뷰(View)만 수정할 수 있습니다.
      예를 들어 하나의 뷰(View)라고 해도 여러 개의 테이블로부터 만들어진 뷰라면 UPDATE 문을 쓸 수 없습니다.
    • SET절에서 원하는 컬럼에 특정 값을 대입합니다. 이때 변경을 원하는 컬럼만 표시하면 됩니다.
    • 테이블의 프라이머리 키는 UPDAGE할 수 없습니다.
      단, 프라이머리 키라고 해도 다른 테이블에서 FK(외래키)로 참조하지 않으면 UPDATE할 수 있습니다.
    • WHERE에서 조건을 지정합니다.
      만약 WHERE절이 없으면 테이블의 모든 행(레코드)를 UPDATE합니다.


  2. 실습을 위한 테이블 만들기

    이번 시간 실습을 위해 다음과 같은 CLASS 테이블과 CUSTOMER 테이블을 만들어 둡시다.
    테이블을 만들기 위한 명령어인 CREATE에 대해서는 다음 시간에 다룹니다. 드디어!

    CREATE TABLE CLASS
    ( CODE CHAR(3) PRIMARY KEY,
      DESCRIPTION  VARCHAR2(30));
    INSERT INTO CLASS VALUES ('F01', 'FIRST');
    INSERT INTO CLASS VALUES ('B01', 'BUSINESS');
    INSERT INTO CLASS VALUES ('E01', 'ECONOMY');

    CREATE TABLE CUSTOMER
    ( CUST_NO CHAR(3) PRIMARY KEY,
      NAME VARCHAR2(10) NOT NULL,
      MILEAGE NUMBER,
      CODE CHAR(3),
      REG_DATE DATE NOT NULL);
    INSERT INTO CUSTOMER VALUES ('100', '김철수', 10000, 'F01', '01/01/01');
    INSERT INTO CUSTOMER VALUES ('101', '이윤정', 2000, 'E01', '01/03/05');
    INSERT INTO CUSTOMER VALUES ('102', '박준서', 5000, 'B01', '01/02/28');
    INSERT INTO CUSTOMER VALUES ('103', '김종현', 12000, 'F01', '01/08/15');


  3. 실습 1

    다음과 같은 EMP 테이블에서 EMP_NUM이 10001인 레코드의 JOB_CODE를 “SS"로 변경해 봅시다.



    UPDATE EMP
    SET JOB_CODE = 'SS'
    WHERE EMP_NUM = '10001';


  4. 실습 2

    다음과 같은 CUSTOMER 테이블과 CLASS 테이블이 있다고 할 때,
    DESCRIPTION이 “FIRST"인 CODE에 해당하는 사람의 마일리지를 50% 추가해 봅시다.
    두 개의 테이블이 있고, 서로 참조해야 하기 때문에 SubSelect 문을 사용해야 되겠죠?



    UPDATE CUSTOMER
    SET MILEAGE = MILEAGE * 1.5
    WHERE CODE = ( SELECT CODE
            FROM CLASS
            WHERE DESCRIPTION = 'FIRST');


비교적 쉬운 내용입니다.
실습 2에서 다시 나온 SubSelect 문은 실무에서 매우 유용하게 사용됩니다. 꼭 숙지하도록 해 주시기 바랍니다.

이상 월요일 아침, 예쁜 동주의 빨리 낫기를 빌며
동주 아빠 손병목이었습니다.

Prev
   DML(Data Manipulation Language) - INSERT

손병목
Next
   오라클 데이터 검색 - SUBSELECT(3) EXIST 外

손병목


Copyright 1999-2021 Zeroboard / skin by Zetyx