본문 바로가기
OFFICE TOOL/MSSQL

MSSQL 조건에 따라 데이터를 입력하는 UPDATE 사용 방법

by 엘런브로 2022. 10. 18.

MSSQL을 사용하다 보면 필드 값을 변경하거나 조건에 맞는 값을 새로운 필드에 입력해야 하는 경우가 있습니다. 엑셀에서는 IF 함수를 사용해서 조건에 맞는 값을 입력하는 방법을 사용합니다. 엑셀에서 사용하는 IF 조건 함수와 유사한 역할을 하는 함수가 UPDATE 문 + CASE WHEN THEN 문이 될 것 같습니다.

1. UPDATE 문 사용 방법
2. 조건에 맞는 값을 입력하는 방법(CASE WHEN THEN와 UPDATE 문 활용)

 

1. UPDATE 문 사용 방법

기준 TABLE 작성

지난번에 COUNT 함수 설명할때 사용한 노원구의 아파트 단지 중 전세가율이 높은 단지의 상위 50개 정도의 임의 TABLE을 재활용해 보겠습니다.

노원구 전세가율 상위 단지 샘플 리스트

 

1) UPDATE 문 구조

UPDATE TABLE 테이블명 SET 필드명 =

 

[사용 예시]

테이블에서 '지역구'라는 새로운 필드를 만들어서 해당 필드에 "노원구"라는 문자를 일괄 기입(UPDATE)해보는 쿼리를 만들어 보겠습니다.

우선 업데이트를 위해 기존 테이블에서 [지역구]라는 새로운 필드를 하나 만든 후 [지역구]라는 필드에 "노원구"라는 텍스트를 입력해보겠습니다. 필드 생성 방법은 이전 글을 참조하시면 되겠습니다.

ALTER TABLE [기타자료].dbo.노원구 ADD 지역구 VARCHAR(10)

UPDATE [기타자료].dbo.노원구 SET [지역구] = '노원구'
  • [기타자료].dbo.노원구 라는 테이블의 [지역구]라는 필드에 "노원구"라는 텍스트를 일괄 입력(UPDATE)

 

[쿼리 결과]

[지역구]라는 새로운 필드에 "노원구"라는 텍스트가 입력되었습니다.

UPDATE 문 사용 결과 화면 그림
UPDATE 결과



단순한 UPDATE 문은 지정한 값(노원구)이 일괄적으로 들어가게 됩니다. 만약 특정한 조건의 레코드에만 입력하고 싶은 경우에는 WHERE 절을 같이 이용하여 사용하면 되겠습니다.
예시로 설명드리겠습니다.

 

2) WHERE과 같이 활용한 UPDATE 예시

UPDATE TABLE 테이블명 SET 필드명 =
WHERE 필드명 조건

 

[사용 예시]

소재지가 "상계동", "중계동", "하계동"인 레코드에만 "노원3계"라는 텍스트를 입력하고자 합니다. WHERE 절과 IN을 사용하여 쿼리를 작성하면 됩니다.

UPDATE [기타자료].dbo.노원구 SET [지역구] = '노원3계'
WHERE [소재지] IN ('상계동', '중계동', '하계동')
  • [기타자료].dbo.노원구 라는 테이블에서 [소재지]가 (상계동, 중계동, 하계동)인 경우만 [지역구]라는 필드에 "노원3계"라는 텍스트를 입력

 

[쿼리 결과]

[지역구]라는 새로운 필드에서 [소재지]가 (상계동, 중계동, 하계동)인 경우만 "노원3계"라는 텍스트가 입력되었습니다.

WHERE 절 조건에 맞는 결과 사진
WHERE 절을 사용한 조건 UPDTAE 결과

 

 

2. 조건에 맞는 값을 입력하는 방법(CASE WHEN THEN와 UPDATE 문 활용)

이번에는 WHERE 절 이외에 다양한 조건에 따라 입력해야 할 값이 상이할 경우 CASE WHEN THEN 구문을 활용하는 방법에 대해서 알아보겠습니다. 이 조건이 엑셀에서는 IF 함수와 같은 기능이라고 할 수 있을 것 같습니다.

2) CASE WHEN THEN 구문과 UPDATE 문 사용 구조

UPDATE TABLE 테이블명 SET 필드명 =
(CASE WHEN 필드명 조건 THEN
WHEN
필드명 조건 THEN
ELSE
END)
  • 필드명에 입력할 값을 CASE WHEN THEN을 이용하여 조건에 맞을 경우 조건별 값을 달리 입력

 

[사용 예시]

단지의 건축 연도에 따라 [연식]이라는 새로운 필드를 만들어 2020년식, 2010년식, 2000년식, 1999년식으로 구분하여 입력하는 쿼리를 작성해 보겠습니다.

ALTER TABLE [기타자료].dbo.노원구 ADD 연식 VARCHAR(10)

UPDATE [기타자료].dbo.노원구 SET 연식 =
(CASE WHEN 건축년도 >= 2020 AND
건축년도 < 2030 THEN '2020년식'
  
WHEN
건축년도 >= 2010 AND 건축년도 < 2020 THEN '2010년식'
WHEN 건축년도 >= 2000 AND 건축년도 < 2010 THEN '2000년식'
  
ELSE '1990년식'
END)

  • 건축년도에 따라 연식을 다르게 입력하는 방법으로 값이 숫자가 아닌 문자인 경우는 작은 따옴표를 붙여서 사용하시기 바랍니다.

[쿼리 결과]

[연식]이라는 새로운 필드에 건축년도 조건에 따라 4가지의 연식이 입력된 것을 확인할 수 있습니다.

조건 업데이트 결과 사진
CASE WHEN THEN, UPDATE 결과



이상으로 UPDATE 문의 사용방법에 대해서 알아보았습니다. UPDATE 문을 사용할 때 CASE WHEN THEN과 같이 사용하여 조건에 따라 값을 달리하여 UPDATE도 가능합니다.
또한 엑셀에서 사용되는 VLOOKUP 함수와 비슷하게 JOIN을 통해 다른 테이블의 값을 UPDATE 할 수도 있습니다. UPDATE 문은 단순히 값을 입력하는 도구일 뿐 어떤 값을 입력할 지에 대한 다양한 구문이 있으니 잘 활용하시면 데이터 관리에 많은 도움이 될 것입니다.

업무에 많은 도움이 되기를 바랍니다.

반응형

댓글