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% 인상
- 그 외 → 변경 없음