UPDATE는 입력되어 있는 테이블내의 레코드를 수정할 때 사용한다.
UPDATE table SET column = expression [, ...] [ FROM fromlist ] [ WHERE condition ]
UPDATE는 WHERE절과 연계하여 사용한다. WHERE절은 UPDATE뿐만이 아니라 DELETE와 SELECT에서도 쓰이니 여기서 자세히 짚고 넘어가도록 하겠다.
WHERE절에 condition이라고 오는 부분은 =, <, <=, >, >=, <>와 같은 오퍼레이터나 ALL, ANY, IN, LIKE와 같은 오퍼레이터, AND, OR, NOT과 같은 논리 오퍼레이터를 이용하여 수식(expression)을 기술하고 있다. 이러한 수식은 참과 거짓을 따지게 되며 수식의 결과가 참인 레코드에만 영향을 미치게 된다. 그러면 예제를 보도록 하겠다.
예제 3-16. UPDATE 예제
UPDATE a SET c2='빈대떡' WHERE c2='피자';
그림 3-17. UPDATE를 해보자.
c2컬럼에서 값이 '피자'인 레코드를 찾아서 그 값을 '빈대떡'으로 바꾸는 쿼리였다. 수행후의 결과는 다음과 같다.
위에서 보는 바와 같이 UPDATE를 하게 되면 가장 마지막행에 들어가게 된다. 이번에는 하나의 레코드만이 아니라 여러 레코드를 변경시켜보도록 하자.
예제 3-17. 여러 레코드의 변경 예제
UPDATE a SET c1=c1+1;
그림 3-18. UPDATE를 해보자.
WHERE절을 주지 않으면 모든 레코드에 적용이 된다. 위의 쿼리는 모든 레코드에서 c1을 1씩 더하도록 한 쿼리이다.
이번에는 WHERE절을 좀 더 응용하여 보자.
예제 3-18. WHERE절의 응용통한 변경
UPDATE a SET c1=c1+10, c2='바보' WHERE c1>9;
그림 3-19. UPDATE를 해보자.
이번에는 c1이 9보다 큰 레코드를 찾아서 각 레코드의 c1컬럼에 10씩 더해주고 c2의 값을 '바보'로 수정하였다. 위에서 보듯이 수정하고자 하는 컬럼이 여러 개이라면 각 컬럼값 사이를 , (콜론)으로 구분지어 놓는다. 여기서는 2개의 컬럼을 수정하고 있다.
이번에는 WHERE절에 여러가지 조건을 혼합하여 넣어보도록 하겠다.
예제 3-19. 조건의 혼합
UPDATE a SET c1=c1+20, c2='쓰레기' WHERE c2 LIKE '명%' OR c1<3;
그림 3-20. UPDATE를 해보자.
위의 쿼리는 c2필드가 명자로 시작하는 레코드나 c1의 값이 3보다 작은 값을 가지는 레코드를 찾아서 c1에 20씩 더해주고 c2를 '쓰레기'라는 값으로 수정하라는 쿼리이다. 이와 같이 각각의 조건들은 논리 연산을 통해서 서로 조합이 가능하다.