반응형

갱신 (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 절에도 서브쿼리를 사용할 수 있다.

반응형