갱신 (UPDATE)
테이블의 데이터 값을 변경하기 위해 사용하는 SQL
갱신을 수행할 경우 한 번에 하나의 컬럼만 갱신할 수도 있고, 여러 개의 컬럼을 갱신할 수도 있다.
갱신의 구성요소
UPDATE TEST
SET COL1 = 'AA'
WHERE COL2 = '20200829';
UPDATE 테이블명 |
변경하고자 하는 데이터를 저장하고 있는 테이블의 이름 |
SET 컬럼명 |
변경 대상에 대한 변경 후의 값 제공 |
WHERE 조건절 |
변경을 수행하고자 하는 대상 |
COL2 컬럼이 20200829 의 값을 가진 행에 대한 COL1 의 값을 AA로 갱신하는 SQL 문이다.
만약 WHERE 절이 지정되어있지 않다면 모든 행의 COL1 이 AA로 갱신된다.
삽입은 테이블에 존재하는 모든 인덱스에 관련되지만 갱신은 해당 컬럼에 생성된 인덱스의 개수에 의해 성능이 변경될 수 있다.
서브쿼리를 이용한 갱신
UPDATE TEST1
SET (COL1, COL2) = (SELECT COL3, COL4
FROM TEST2
WHERE COL4 = 'AAA')
WHERE COL6 = 'BBBB';
1. 서브쿼리에 있는 TEST2 테이블에서 COL4 컬럼의 값이 'AAA' 인 행을 추출
2. 추출한 행에서 COL3 컬럼과 COL4 컬럼에 대한 값을 확인, 이 때 하나의 값만 추출되어야 하며 2개 이상의 행이 추출된다면 에러 발생
아무 값도 추출되지 않는다면 갱신 대상 집합들은 모두 NULL 로 갱신
3. TEST1 테이블에서 COL6 컬럼의 값이 'BBBB' 를 만족하는 행의 COL1 과 COL2 컬럼에 대해 2단계에서 추출한 값으로 갱신을 수행
UPDATE TEST1
SET COL1 = (SELECT COL2
FROM TEST2
WHERE COL3 = 'AAA')
WHERE COL5 = (SELECT COL6
FROM TEST3
WHERE COL7 = 'BBB');
위와 같이 갱신 SQL의 WHERE 절에도 서브쿼리를 사용할 수 있다.