본문 바로가기

커맨드 명령

2.1.10 UPDATE



/* 문법 */
UPDATE table_name SET column=expression
[, column=expression...][FROM table_name][WHERE expression]
 
/* 파라미터 */
table_name    --변경하는 테이블 이름
column        --열의 이름
expression    --임의의 식


기존의 행의 내용을 변경하기 위해서 『UPDATE』문을 사용한다. 

UPDATE에 이어 변경하고 싶은 테이블 이름을 차례로 입력한다. 『SET』다음에 변경하는 열과 그 값을 부등호로 연결한다.

WHERE를 생략하면 테이블의 모든 행이 변경된다.


/* 사용 예 */
UPDATE foo SET a=1
 


WHERE를 기술하면 변경 대상의 범위가 한정된다. 보통 데이터의 변경 처리는 다음 예문과 같이 어떤 행에 있는 열을 변경하는 것이다. WHERE 조건에 해당하는 행이 없을 경우에는 행은 변경되지 않는다. 문법적으로 틀리지 않기 때문에 오류는 발생하지 않는다.


/* 사용 예 */
UPDATE foo SET a=1 WHERE b=2


변경하고 싶은 열이 여러 개 있을 경우, 콤마를 사용하여 『열의 이름=값』을 반복하여 입력한다. 

이것으로 한꺼번에 여러 개의 열을 변경할 수 있다.


/* 사용  */
UPDATE foo SET a=1, b=2WHERE c=2


SET를 사용하여 부여하는 변경값에 서브 쿼리를 입력할 수 있다. 이런 방법으로 다른 테이블에 있는 열의 값을 참조하거나 

집계해서 UPDATE할 수 있다.


/* 사용 예 */
UPDATE foo SET a=(SELECT MAX(b) FROM bar) WHERE c=1


SQL Server에서는 UPDATE에 FROM구문을 기술하여 변경 대상과는 별개의 테이블을 JOIN하여, JOIN한 테이블의 값을 SET으로 

사용할 수 있다. Oracle에서는 UPDATE에 FROM구문을 기술할 수 없지만, SET에 서브 쿼리를 사용하여 같은 처리를 할 수 있다.


/* 사용 예 */
UPDATE foo SET a=bar.c FROM bar WHERE foo.b=bar.b


'커맨드 명령' 카테고리의 다른 글

2.2 트랜잭션 (Transaction)  (0) 2018.11.07
2.1.11 DELETE  (0) 2018.11.06
2.1.9 INSERT  (0) 2018.11.05
2.1.8 UNION  (0) 2018.11.05
2.1.7 서브 쿼리  (0) 2018.11.05