데이터베이스(DB)의 테이블에서 만약 컬럼(필드)에 있는 값을 변경하려면 어떻게해야할까요. 이 경우 아래의 명령어를 사용하여 값을 변경할 수 있습니다. 이때 UPDATE 키워드를 사용합니다. UPDATE 키워드는 원하는 컬럼 안의 특정 값(레코드)의 값을 변경할 수 있게해줍니다. 먼저 간단한 사용방법은 아래와 같습니다.

UPDATE 테이블명 SET 필드명='변경할값' WHERE 필드명=해당값;


이처럼 update는 이미 존재하는 값을 변경하기 위해 사용되며 값을 찾기 위한 select문 다음으로 가장 많이 사용되지 않을까 생각됩니다. 그럼 아래는 간단한 사용 예제코드입니다.



# update 사용해 하나의 값만 수정하기하나의 값을 수정하는 가장 기본적인 방법입니다. 수정할 필드와 찾을 값을 지정합니다.
UPDATE tablename SET filedA='456' WHERE test='123' LIMIT 10;

먼저 하나의 값만 수정하는 가장 간단한 예제부터 알아보겠습니다. 위 예제는 test필드에 값 123을 가진 컬럼을 찾고 찾은 컬럼에 해당하는 다른 ,컬럼 fieldA의 값을 '456'으로 변경하는 코드입니다. 변경할 값이 이처럼 하나인 경우 적용 가능합니다.

추가로 LIMIT 값을 이용해 찾은 개수안에서 변경할 개수를 정할 수가 있습니다. 즉, LIMIT 10은 변경될 값을 10개로 제한함을 의미하므로 일치하는 값이 아무리 많더라도 10개를 넘을 수가 없습니다.



# update 여러개의 값 동시에 수정하는 방법이번에는 하나가 아닌 여러개의 필드값을 동시에 수정하는 방법입니다.
UPDATE tablename SET filedA='456', fieldB='ABC' WHERE test='123' LIMIT 10;

만약 찾은 컬럼 위치의 값들중 변경할 값이 하나 이상인 경우는 어떻게할까요? 반복 쿼리문을 사용할 수 있지만 위와 같이 콤마(,)를 구분자로 사용하여 동시에 수정이 가능합니다. 위 예제는 두 개를 값을 동시에 수정하였으며 fieldA 그리고 fieldB의 값을 수정하였습니다.

또 다른 예제를 알아보겠습니다. 만약 게시판에 있던 글을 새롭게 업데이트할 경우 다수의 정보를 한번에 업데이트하려먼 아래처럼 사용합니다.
UPDATE freeboard SET title="how to update in mysql", date="07, Jul, 2016", writer="James" WHERE no="2000" LIMIT 1;

위 예제는 테이블명 freeboard를 찾아 제목, 날짜, 작성자를 동시에 수정하는 예제입니다.

! LIMIT가 필요한 이유

사실 특정 값을 변경할 때 LIMIT를 사용할 일은 거의 없습니다. 만약 수정이 아닌 자료를 분류, 조회하기 위한 목적이라면 LIMIT가 필수적이겠지만 데이터를 업데이트하는데 사용할 경우는 거의 없습니다. 하지만, 의도하지 않는 경우로 전체 또는 더 많은 데이터가 실수로 모두 변경된다면? 혹시 모를 상황을 대비하여 안정장치로 LIMIT을 정해두는 습관이 필요할 것입니다.



# 마치면서관계형 데이터베이스는 대부분 동일한 문법을 가장 많이 사용하므로 위와 같은 기본적인 업데이트 문법을 꼭 알아두어야합니다. 그래야만 다른 관계형 데이터베이스 언어의 쿼리문 역시 쉽게 작성할 수 있을 것입니다.