여러 SQL 컬럼을 한 번에 업데이트하는 상세 가이드

SQL은 데이터베이스 작업에 필수적인 강력한 도구입니다. 특히, 여러 컬럼을 한 번에 업데이트하는 기능은 효율적인 데이터 관리에서 중요한 기술입니다. 이 가이드에서는 여러 컬럼을 한 번에 업데이트하기 위한 기본적인 방법부터 응용 기술까지 자세히 설명합니다. 구체적인 예제와 연습 문제를 통해 실질적인 지식을 습득할 수 있도록 구성했습니다.

목차

여러 컬럼을 한 번에 업데이트하는 기본 구문

SQL에서 여러 컬럼을 동시에 업데이트하는 기본적인 쿼리 구문을 소개합니다. 이 방법을 이해하면 데이터베이스 관리와 작업을 더욱 효율적으로 수행할 수 있습니다.

기본 구문의 설명

여러 컬럼을 업데이트하는 기본적인 SQL 구문은 다음과 같습니다:

UPDATE 테이블명
SET 컬럼1 = 새로운 값1,
    컬럼2 = 새로운 값2
WHERE 조건;

이 구문을 통해 여러 컬럼의 값을 한 번에 변경할 수 있습니다.

구체적인 예제

예를 들어, 직원 테이블에서 특정 직원의 이름과 직책을 동시에 업데이트하려면 다음과 같이 작성합니다:

UPDATE 직원
SET 이름 = '타나카 타로',
    직책 = '매니저'
WHERE 직원ID = 123;

이 쿼리는 직원ID가 123인 레코드의 이름과 직책을 동시에 업데이트합니다.

UPDATE문 기본

UPDATE문은 SQL에서 기존 데이터를 변경하기 위한 기본적인 명령어입니다. 여기서는 그 기본적인 사용 방법과 구문을 설명합니다.

UPDATE문의 기본 구문

UPDATE문을 사용하여 테이블 내 데이터를 업데이트하는 기본 구문은 다음과 같습니다:

UPDATE 테이블명
SET 컬럼1 = 새로운 값1,
    컬럼2 = 새로운 값2
WHERE 조건;

이 구문에서는 지정된 조건을 만족하는 레코드의 컬럼을 새로운 값으로 변경합니다.

UPDATE문 실행 예제

예를 들어, 고객 테이블에서 특정 고객의 주소와 전화번호를 업데이트하려면 다음과 같이 작성합니다:

UPDATE 고객
SET 주소 = '도쿄도 신주쿠구',
    전화번호 = '03-1234-5678'
WHERE 고객ID = 456;

이 쿼리는 고객ID가 456인 레코드의 주소와 전화번호를 업데이트합니다.

UPDATE문의 주의 사항

UPDATE문을 사용할 때 WHERE 절을 반드시 지정하는 것이 중요합니다. WHERE 절을 생략하면 테이블 내의 모든 레코드가 업데이트되어 예상치 못한 데이터 변경이 발생할 수 있습니다.

WHERE 절의 사용

WHERE 절은 SQL 문에서 특정 조건에 일치하는 레코드를 선택하는 데 사용됩니다. 여기서는 UPDATE문에서 WHERE 절의 사용 방법을 설명합니다.

WHERE 절의 기본 구문

WHERE 절을 사용하여 조건을 지정하는 기본 구문은 다음과 같습니다:

UPDATE 테이블명
SET 컬럼1 = 새로운 값1,
    컬럼2 = 새로운 값2
WHERE 조건;

WHERE 절은 어떤 레코드를 업데이트할지를 결정하기 위한 조건을 지정합니다.

구체적인 예제

예를 들어, 상품 테이블에서 재고가 10개 미만인 상품 가격을 업데이트하려면 다음과 같이 작성합니다:

UPDATE 상품
SET 가격 = 가격 * 0.9
WHERE 재고 < 10;

이 쿼리는 재고가 10개 미만인 상품 가격을 10% 할인합니다.

복수 조건 지정

WHERE 절에서는 AND나 OR을 사용하여 여러 조건을 결합할 수 있습니다. 예를 들어, 특정 카테고리이면서 재고가 5개 이하인 상품을 업데이트하려면 다음과 같이 작성합니다:

UPDATE 상품
SET 가격 = 가격 * 0.8
WHERE 카테고리 = '가전' AND 재고 <= 5;

이 쿼리는 카테고리가 가전이고 재고가 5개 이하인 상품 가격을 20% 할인합니다.

주의 사항

WHERE 절을 사용할 때 조건이 올바르게 설정되었는지 주의 깊게 확인하는 것이 중요합니다. 잘못된 조건을 지정하면 의도하지 않은 레코드가 업데이트될 수 있습니다.

여러 컬럼 업데이트의 구체적인 예제

실제 예제를 사용하여 여러 컬럼을 한 번에 업데이트하는 방법을 자세히 소개합니다. 이 섹션에서는 몇 가지 구체적인 예제를 통해 이해를 깊게 할 것입니다.

예제 1: 고객 정보 업데이트

고객 테이블에서 특정 고객의 이름과 이메일 주소를 동시에 업데이트하려면 다음과 같이 작성합니다:

UPDATE 고객
SET 이름 = '야마다 하나코',
    이메일 주소 = 'hanako@example.com'
WHERE 고객ID = 789;

이 쿼리는 고객ID가 789인 레코드의 이름과 이메일 주소를 업데이트합니다.

예제 2: 상품 정보 업데이트

상품 테이블에서 특정 상품 카테고리에 속하는 상품의 가격과 재고 수를 동시에 업데이트하려면 다음과 같이 작성합니다:

UPDATE 상품
SET 가격 = 가격 * 1.1,
    재고 수 = 재고 수 + 50
WHERE 카테고리 = '전자기기';

이 쿼리는 카테고리가 전자기기인 상품 가격을 10% 인상하고 재고 수를 50 증가시킵니다.

예제 3: 직원 정보 업데이트

직원 테이블에서 특정 부서에 속하는 직원의 직책과 급여를 동시에 업데이트하려면 다음과 같이 작성합니다:

UPDATE 직원
SET 직책 = '시니어 엔지니어',
    급여 = 급여 * 1.2
WHERE 부서 = '개발';

이 쿼리는 부서가 개발인 직원의 직책을 시니어 엔지니어로 변경하고 급여를 20% 인상합니다.

복수 조건에 의한 업데이트

복수 조건을 결합하여 특정 조건을 충족하는 레코드만 업데이트하려면 다음과 같이 작성합니다:

UPDATE 직원
SET 직책 = '매니저',
    급여 = 급여 * 1.15
WHERE 부서 = '판매' AND 근속 연수 > 5;

이 쿼리는 부서가 판매이고 근속 연수가 5년 이상인 직원의 직책을 매니저로 변경하고 급여를 15% 인상합니다.

CASE문을 사용한 조건부 업데이트

CASE문을 사용하여 조건에 따른 값을 업데이트하는 방법을 설명합니다. CASE문을 사용하면 복잡한 조건부 업데이트를 간단히 실행할 수 있습니다.

CASE문의 기본 구문

CASE문을 사용한 기본적인 UPDATE문의 구문은 다음과 같습니다:

UPDATE 테이블명
SET 컬럼명 = CASE
    WHEN 조건1 THEN 값1
    WHEN 조건2 THEN 값2
    ELSE 기본값
END
WHERE 업데이트 대상 조건;

이 구문을 통해 지정된 조건에 따라 다른 값을 설정할 수 있습니다.

구체적인 예제: 직원 직책 업데이트

예를 들어, 직원 테이블에서 근속 연수에 따라 직책을 업데이트하려면 다음과 같이 작성합니다:

UPDATE 직원
SET 직책 = CASE
    WHEN 근속 연수 >= 10 THEN '시니어 매니저'
    WHEN 근속 연수 >= 5 THEN '매니저'
    ELSE '스태프'
END;

이 쿼리는 근속 연수에 따라 직책을 시니어 매니저, 매니저, 스태프로 설정합니다.

구체적인 예제: 상품 할인율 업데이트

상품 테이블에서 재고 수에 따라 할인율을 설정하려면 다음과 같이 작성합니다:

UPDATE 상품
SET 할인율 = CASE
    WHEN 재고 수 > 100 THEN 0.2
    WHEN 재고 수 BETWEEN 50 AND 100 THEN 0.1
    ELSE 0
END;

이 쿼리는 재고 수에 따라 할인율을 20%, 10%, 0%로 설정합니다.

여러 컬럼의 조건부 업데이트

CASE문을 사용하여 여러 컬럼을 조건부로 업데이트하려면 다음과 같이 작성합니다:

UPDATE 직원
SET 직책 = CASE
    WHEN 근속 연수 >= 10 THEN '시니어 매니저'
    WHEN 근속 연수 >= 5 THEN '매니저'
    ELSE '스태프'
END,
    급여 = CASE
    WHEN 근속 연수 >= 10 THEN 급여 * 1.3
    WHEN 근속 연수 >= 5 THEN 급여 * 1.2
    ELSE 급여 * 1.1
END;

이 쿼리는 근속 연수에 따라 직책과 급여를 동시에 업데이트합니다.

JOIN을 사용한 업데이트

JOIN을 사용하여 여러 테이블을 결합하고 특정 조건에 따라 컬럼을 업데이트하는 방법을 설명합니다. JOIN을 사용하면 관련 데이터를 효율적으로 업데이트할 수 있습니다.

JOIN을 사용한 업데이트의 기본 구문

JOIN을 사용한 UPDATE문의 기본 구문은 다음과 같습니다:

UPDATE 테이블1
SET 테이블1.컬럼명 = 새로운 값
FROM 테이블1
JOIN 테이블2 ON 테이블1.결합 조건 = 테이블2.결합 조건
WHERE 조건;

이 구문을 통해 여러 테이블을 결합하면서 특정 조건에 따라 업데이트를 수행합니다.

구체적인 예제: 고객과 주문 테이블 업데이트

고객 테이블과 주문 테이블을 결합하여 특정 고객의 주문 상태를 업데이트하려면 다음과 같이 작성합니다:

UPDATE 고객
SET 고객.상태 = 'VIP'
FROM 고객
JOIN 주문 ON 고객.고객ID = 주문.고객ID
WHERE 주문.주문 금액 > 100000;

이 쿼리는 주문 금액이 100000을 초과하는 고객의 상태를 VIP로 업데이트합니다.

여러 컬럼의 업데이트

JOIN을 사용하여 여러 컬럼을 한 번에 업데이트하려면 다음과 같이 작성합니다:

UPDATE 상품
SET 상품.가격 = 상품.가격 * 1.1,
    상품.재고 = 상품.재고 - 10
FROM 상품
JOIN 주문 ON 상품.상품ID = 주문.상품ID
WHERE 주문.주문일 = '2023-06-01';

이 쿼리는 2023년 6월 1일에 주문된 상품의 가격을 10% 인상하고 재고 수를 10 감소시킵니다.

복잡한 조건에 의한 업데이트

여러 테이블을 JOIN하여 복잡한 조건에 따라 업데이트를 수행하려면 다음과 같이 작성합니다:

UPDATE 직원
SET 직원.직책 = '리더',
    직원.급여 = 직원.급여 * 1.2
FROM 직원
JOIN 부서 ON 직원.부서ID = 부서.부서ID
JOIN 프로젝트 ON 부서.프로젝트ID = 프로젝트.프로젝트ID
WHERE 프로젝트.종료일 < '2023-01-01' AND 부서.부서명 = '개발';

이 쿼리는 특정 프로젝트가 종료된 개발 부서의 직원의 직책을 리더로 변경하고 급여를 20% 인상합니다.

연습 문제

여기서는 배운 내용을 실습하기 위한 연습 문제를 제공합니다. 이 문제들을 해결함으로써 여러 컬럼을 한 번에 업데이트하는 기술을 더욱 깊게 익힐 수 있습니다.

문제 1: 기본적인 UPDATE문

직원 테이블에서 직원ID가 101인 직원의 이름을 ‘사토 지로’, 부서를 ‘영업’으로 업데이트하세요.

UPDATE 직원
SET 이름 = '사토 지로',
    부서 = '영업'
WHERE 직원ID = 101;

문제 2: WHERE 절의 사용

상품 테이블에서 재고가 20 미만인 상품의 가격을 15% 할인하고, 상태를 ‘저재고’로 업데이트하세요.

UPDATE 상품
SET 가격 = 가격 * 0.85,
    상태 = '저재고'
WHERE 재고 < 20;

문제 3: CASE문을 사용한 조건부 업데이트

직원 테이블에서 근속 연수에 따라 직책과 급여를 업데이트하세요. 근속 연수가 10년 이상인 직원은 직책을 ‘매니저’, 급여를 20% 인상, 5년 이상 10년 미만인 직원은 직책을 ‘리더’, 급여를 10% 인상, 그 외의 직원은 직책을 ‘스태프’, 급여를 5% 인상으로 설정합니다.

UPDATE 직원
SET 직책 = CASE
    WHEN 근속 연수 >= 10 THEN '매니저'
    WHEN 근속 연수 >= 5 THEN '리더'
    ELSE '스태프'
END,
    급여 = CASE
    WHEN 근속 연수 >= 10 THEN 급여 * 1.2
    WHEN 근속 연수 >= 5 THEN 급여 * 1.1
    ELSE 급여 * 1.05
END;

문제 4: JOIN을 사용한 업데이트

고객 테이블과 주문 테이블을 결합하여 2023년에 10회 이상 주문한 고객의 상태를 ‘프리미엄’으로 업데이트하세요.

UPDATE 고객
SET 상태 = '프리미엄'
FROM 고객
JOIN 주문 ON 고객.고객ID = 주문.고객ID
WHERE 주문.주문일 BETWEEN '2023-01-01' AND '2023-12-31'
GROUP BY 고객.고객ID
HAVING COUNT(주문.주문ID) >= 10;

문제 5: 복수 조건의 사용

학생 테이블에서 특정 학년과 성적을 기준으로 장학금 상태를 업데이트하세요. 학년이 3학년이고 평균 성적이 85 이상인 학생은 ‘장학금 있음’, 그 외는 ‘장학금 없음’으로 설정합니다.

UPDATE 학생
SET 장학금 상태 = CASE
    WHEN 학년 = 3 AND 평균 성적 >= 85 THEN '장학금 있음'
    ELSE '장학금 없음'
END;

요약

이 기사에서는 SQL을 사용하여 여러 컬럼을 한 번에 업데이트하는 방법을 상세히 설명했습니다. 기본적인 UPDATE문의 사용법부터 WHERE 절을 사용한 조건부 업데이트, CASE문을 사용한 복잡한 조건부 업데이트, 그리고 JOIN을 사용한 여러 테이블의 업데이트 방법까지 다양한 기술을 배웠습니다.

여러 컬럼을 동시에 업데이트하는 기술은 데이터베이스 관리를 효율화하고 복잡한 데이터 작업을 간편하게 하는 데 매우 중요합니다. 배운 지식을 활용하여 실제 데이터베이스 작업에서 적극적으로 사용해보세요. 정확한 조건 설정과 쿼리 테스트를 소홀히 하지 말고, 예상치 못한 데이터 변경을 방지하는 것도 잊지 마세요.

SQL에서 여러 컬럼 업데이트에 익숙해지면 데이터베이스 관리의 효율성이 비약적으로 향상됩니다. 연습 문제를 통해 실천력을 높이고, 더욱 높은 수준의 기술을 목표로 하세요.

목차