Database

Database - Chapter 3-16. SQL (DML) 기초(데이터 업데이트)

Chansman 2025. 3. 20. 14:03

 

🚀 SQL 데이터 업데이트(UPDATE) 완벽 정리

SQL에서 데이터를 업데이트하는 방법을 기본적인 UPDATE 문부터 고급 활용까지 정리했습니다. 🎯
이 글을 통해 효율적인 데이터 수정 방법과 조건별 업데이트 활용법을 익혀보세요!


📌 1. 기본적인 데이터 수정 (UPDATE SET)

🔹 개념

  • UPDATE 문은 저장된 데이터를 변경할 때 사용됩니다.
  • WHERE 절을 사용하여 특정 조건을 만족하는 데이터만 수정할 수 있습니다.
  • SET을 사용하여 수정할 컬럼과 변경할 값을 지정합니다.

기본적인 UPDATE 구문

sql
 
UPDATE 테이블명
SET 컬럼1 = 값1, 컬럼2 = 값2, ...
WHERE 조건;

설명

  • 테이블명 → 업데이트할 테이블의 이름
  • SET 컬럼 = 값 → 업데이트할 컬럼과 변경할 값 지정
  • WHERE 조건 → 어떤 데이터를 수정할지 조건을 지정

📌 2. 특정 데이터 수정하기

users 테이블에서 id = 1인 레코드의 이름을 'John'으로 변경

sql
 
UPDATE users
SET name = 'John'
WHERE id = 1;

🔹 설명: id가 1인 행의 name 값을 'John'으로 변경

💡 주의! WHERE 절을 생략하면 모든 데이터가 수정됩니다!

sql
 
UPDATE users SET name = 'John';  -- 모든 name 값이 'John'으로 변경됨 (위험!!)

 


📌 3. 여러 레코드 동시에 업데이트하기

나이가 60 이상이면 username을 'senior'로 변경

sql
 
UPDATE users
SET username = 'senior'
WHERE age >= 60;

🔹 설명:

  • 나이가 60 이상인 사용자들의 username을 'senior'로 변경

📌 4. 업데이트된 레코드 개수 확인하기

UPDATE 실행 후 변경된 행 개수 조회

sql
 
SELECT ROW_COUNT();

🔹 설명: UPDATE 실행 후 실제로 변경된 행 개수를 반환합니다.


📌 5. CASE 문을 사용한 조건별 업데이트

나이에 따라 다른 username 설정

sql
 
UPDATE users
SET username = CASE
    WHEN age >= 60 THEN 'senior'
    ELSE 'young'
END;

🔹 설명:

  • 나이가 60 이상이면 'senior', 그렇지 않으면 'young'으로 변경

💡 CASE 문을 활용하면 여러 조건에 따라 값을 다르게 수정 가능


📌 6. 특정 개수만 업데이트 (LIMIT 사용)

나이가 30인 레코드 중 상위 5개의 username을 'top5_young_people'로 변경

sql
 
UPDATE users
SET username = 'top5_young_people'
WHERE age = 30
LIMIT 5;

🔹 설명:

  • WHERE 조건을 만족하는 상위 5개 행만 업데이트

💡 LIMIT을 활용하면 특정 개수만 변경 가능


📌 7. 서브쿼리를 활용한 업데이트

특정 조건을 만족하는 데이터만 업데이트하기

sql
 
UPDATE products
SET price = price * 1.1
WHERE category_id IN (SELECT id FROM categories WHERE name = 'Electronics');

🔹 설명:

  • Electronics 카테고리에 속하는 제품의 price를 10% 증가

💡 서브쿼리(SELECT)를 사용하여 특정 데이터만 업데이트 가능


📌 8. 정규 표현식을 활용한 업데이트 (REGEXP 사용)

이메일이 @example.com으로 끝나는 사용자들의 이메일 수정

sql
 
UPDATE users
SET email = CONCAT(email, '_new')
WHERE email REGEXP '@example\\.com$';

🔹 설명:

  • 이메일이 @example.com으로 끝나는 사용자들의 email을 _new를 추가하여 수정

💡 REGEXP를 활용하면 특정 패턴을 만족하는 데이터만 수정 가능


📌 9. 다양한 조건을 가진 데이터 업데이트 (CASE 활용)

재고(stock) 수량에 따라 가격(price) 업데이트

sql
 
 
UPDATE products
SET price = CASE
    WHEN stock < 10 THEN price * 1.1  -- 재고가 10개 미만이면 10% 인상
    WHEN stock >= 10 AND stock < 50 THEN price * 1.05  -- 재고가 10~49개면 5% 인상
    ELSE price  -- 나머지는 가격 변경 없음
END;

🔹 설명:

  • 재고(stock) 수량에 따라 가격을 다르게 조정
  • 10개 미만 → 10% 인상
  • 10~49개 → 5% 인상
  • 그 외 → 변경 없음