UPDATE

UPDATE 문을 사용하면 대상 테이블에 저장된 레코드의 칼럼 값을 새로운 값으로 업데이트할 수 있다. SET 절에는 업데이트할 칼럼 이름과 새로운 값을 명시하며, WHERE 절에는 업데이트할 레코드를 추출하기 위한 조건을 명시한다. 하나의 UPDATE 문으로 하나의 테이블을 업데이트할 수 있다.

UPDATE table_name SET column_name = {expr | DEFAULT} [, column_name = {expr | DEFAULT} ...]
    [WHERE search_condition]
    [LIMIT row_count]
  • column_name: 업데이트할 칼럼 이름을 지정한다. 하나 이상의 테이블에 대한 칼럼들을 지정할 수 있다.
  • expr | DEFAULT: 해당 칼럼의 새로운 값을 지정하며, 표현식 또는 DEFAULT 키워드를 값으로 지정할 수 있다. 단일 결과 레코드를 반환하는 SELECT 질의를 지정할 수도 있다.
  • search_condition: WHERE 절에 조건식을 명시하면, 조건식을 만족하는 레코드에 대해서만 칼럼 값을 업데이트한다.
  • row_count: LIMIT 절에 업데이트할 레코드 수를 명시하며, 0보다 큰 정수를 지정할 수 있다.

LIMIT 절을 명시하면 업데이트할 레코드 수를 한정할 수 있다. ORDER BY 절을 명시하면 해당 칼럼의 순서로 레코드를 업데이트한다. ORDER BY 절에 의한 업데이트는 트리거의 실행 순서나 잠금 순서를 유지하고자 할 때 유용하게 이용할 수 있다.

Note

CUBRID 9.0부터 update join을 지원한다.

다음은 하나의 테이블에 대해 업데이트를 수행하는 예이다.

--creating a new table having all records copied from a_tbl1
CREATE TABLE a_tbl5 AS SELECT * FROM a_tbl1;
SELECT * FROM a_tbl5 WHERE name IS NULL;
           id  name                  phone
=========================================================
         NULL  NULL                  '000-0000'
            4  NULL                  '000-0000'
            5  NULL                  '000-0000'
            7  NULL                  '777-7777'
UPDATE a_tbl5 SET name='yyy', phone='999-9999' WHERE name IS NULL LIMIT 3;
SELECT * FROM a_tbl5;
           id  name                  phone
=========================================================
         NULL  'yyy'                 '999-9999'
            1  'aaa'                 '000-0000'
            2  'bbb'                 '000-0000'
            3  'ccc'                 '333-3333'
            4  'yyy'                 '999-9999'
            5  'yyy'                 '999-9999'
            6  'eee'                 '000-0000'
            7  NULL                  '777-7777'