ALTIBASE HDB 5.3.3 기초강좌
UPDATE 0 0 99,999+

by Altibase UPDATE 다중 컬럼 UPDATE [2012.02.08]


UPDATE 개념

  UPDATE는 테이블에서 명시한 컬럼의 데이터를 변경하는 구문입니다.

기본 UPDATE 구문

 
UPDATE table_name 
SET column_name = column_value
[WHERE conditions]; 
    
  • - SET column_name = column_value,.. : 테이블의 명시한 칼럼 값을 변경하는 부분이며, 괄호 없이 SET절을 ,(콤마)로 연결해 여러 칼럼의 값을 한꺼번에 변경할 수도 있다.
  • - [WHERE conditions]; : SET절에서 명시한 칼럼을 변경할 행을 제한하는 부분이며 생략할 경우 전체 테이블 데이터 중 SET절에 명시한 칼럼의 값을 변경한다.

기본 UPDATE 예제

  emp 테이블에서 KMLEE의 급여를 2,500,000원으로 변경하시오.

 
iSQL> UPDATE employee
      SET salary = 2500000
      WHERE ename = 'KMLEE';
    

  emp 테이블에서 모든 사원들의 급여를 일괄적으로 7%씩 인상

 
iSQL> UPDATE employee
      SET salary = salary * 1.07;
    

다중 컬럼 UPDATE 구문

  한 개의 컬럼이 아닌 여러 개의 컬럼을 한꺼번에 변경하는 경우에 변경할 컬럼명과 변경할 값을 ',' 를 이용해서 나열합니다.

 
UPDATE table_name
SET (column_name, column_name, ...) = (value, value, ... ) 
[WHERE conditions];
    
  • - SET (column_name, column_name, ...) = (value, value, ...) : 괄호를 이용해 여러 개의 칼럼 값을 한 번에 변경 가능하다. 아울러 value를 명시하는 부분에 subquery를 사용할 수 있다.

다중 컬럼 UPDATE 예제

  CUSTOMER 테이블에서 KSKIM 고객의 job과 city를 변경하시오.

 
iSQL> UPDATE customer 
      SET (cus_job, address) = ('BANKER', 'JungGu Pusan')
      WHERE cname = 'KSKIM';
    

SET 절에 서브쿼리를 갖는 UPDATE 구문

 

 
UPDATE table_name
SET column_name =  (SELECT statement …)
[WHERE conditions];
    
  • - SET column_name = (SELECT statement …) : subquery를 사용하여 변경할 칼럼의 값을 지정할 수 있다. 이 때 subquery에서 질의되는 데이터는 한 건도 없거나, 한 건만 질의되어야 한다. 만약 한 건도 질의되지 않는다면 해당 칼럼은 NULL 값으로 변경된다.

SET 절에 서브쿼리를 갖는 UPDATE 예제

  BONUS 테이블에서 10번 사원의 직책을 PM으로 변경하고, BONUS 를 평균에서 10%인상한 값으로 변경하시오

 
iSQL> UPDATE bonuses
      SET emp_job = 'PM’, bonus = (SELECT 1.1 * AVG(bonus) FROM bonuses)
      WHERE eno = 10;
    

WHERE 절에 서브쿼리를 갖는 UPDATE 구문

 
UPDATE table_name
SET column_name = value
WHERE column_name 연산자 (SELECT statement …);
    
  • - WHERE column_name 연산자 (SELECT statement …); : UPDATE의 WHERE 절에 subquery를 이용하여 조건을 제한할 수 있다.
  • - 이때 연산자는 등호(=) 이외의 비교연산자들도 사용이 가능하고, subquery에서 return되는 데이터도 2개 이상이어도 처리가 가능하다.

WHERE 절에 서브쿼리를 갖는 UPDATE 예제

  ORDERS 테이블에서 MYLEE 사원이 받은 주문량을 50개씩 줄이시오.

 
iSQL> UPDATE orders
     SET qty = qty - 50
     WHERE eno IN (SELECT eno
                   FROM employee
                   WHERE ename ='MYLEE');
    

UPDATE 시 주의사항

  • - UPDATE 사용 시 WHERE절을 생략할 경우, 명시한 테이블의 전체 행을 변경
  • - 같은 칼럼을 두 번 이상 사용 불가능
  • - SET 절에 subquery 사용 시 = 연산자로 이용해야하며 subquery에서 2 개 이상의 데이터를 리턴하면 에러 발생
  • - NOT NULL 제약조건이 있는 칼럼을 NULL 로 변경할 수 없음

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

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

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

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