🐬 MySQL/MySQL 키워드

SQL UPDATE: 데이터베이스 수정의 핵심 키워드

itstory(Booho) 2024. 11. 27. 11:02
728x90

SQL UPDATE: 데이터베이스 수정의 핵심 키워드

안녕하세요, SQL 학습자 여러분!

오늘은 데이터베이스 관리에서 매우 중요한 역할을 하는 UPDATE 키워드에 대해 자세히 알아보겠습니다.

UPDATE는 기존 데이터를 수정하는 데 사용되는 강력한 명령어로, 데이터의 정확성과 최신성을 유지하는 데 필수적입니다.

 

UPDATE의 기본 구문

  UPDATE의 기본 구문은 다음과 같습니다

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

  이 구문을 통해 특정 조건에 맞는 행의 데이터를 수정할 수 있습니다.

 

UPDATE 사용 예시

  • 단일 열 업데이트
Qzaj 고객의 이메일 도메인을 'gmail.com' 으로 요청입니다. 변경해주세요

UPDATE sod
set email = 'qzaj@gmail.com'
WHERE name='qzaj';

 

 

  • 여러 열 동시 업데이트
Olcc고객정보가 변경 되었습니다. 
country 는 'USA' 로, 이메일 도메인을 '@yahoo.com'로 변경 해주세요

UPDATE sod
set email='olcc@yahoo.com', country='USA'
where name = 'olcc';

 

 

  • 계산된 값으로 업데이트
구찌가방 전체 재고의 가격은 얼마인가?

UPDATE product 
set total_amount= stock_quantity *price 
where product_name = '구찌 가방';

 

UPDATE 사용 시 주의사항

  WHERE 절의 중요성

  • WHERE 절을 생략하면 테이블의 모든 행이 업데이트됩니다.
  • 항상 의도한 대로 업데이트되는지 확인하세요.

  백업의 중요성

  • 중요한 데이터를 업데이트하기 전에는 반드시 백업을 해두세요.

  트랜잭션 사용

  • 여러 업데이트를 하나의 논리적 단위로 처리하려면 '트랜잭션'(아래더보기 참고)을 사용하세요.
더보기

트랜잭션(Transaction)은 컴퓨터나 데이터베이스에서 하나의 작업 단위를 이루는 동작 묶음

 

예)

  1. 은행 이체
    • A 계좌에서 10만 원 출금 → B 계좌로 10만 원 입금
    • 중간에 시스템이 꺼지거나 오류가 나도 '둘 다 완료'되거나, 아니면 '아무 작업도 되지 않음'
  2. 온라인 쇼핑 결제
    • 재고 확인 → 결제 처리 → 주문 기록 생성
    • 이 과정 중 하나라도 실패하면 모든 작업이 취소

트랜잭션의 핵심은 이 작업들이 완벽히 처리되거나(성공), 아예 아무 일도 없었던 것처럼(실패) 처리

이처럼 트랜잭션은 데이터가 항상 신뢰할 수 있는 상태로 유지되도록 보장해 주는 개념

 

트랜잭션의 특징 (ACID)

  1. 원자성(Atomicity): 트랜잭션의 모든 작업이 성공하거나, 하나라도 실패하면 전부 취소. (예: 돈이 송금되지 않았다면 출금도 취소)
  2. 일관성(Consistency): 트랜잭션이 끝난 뒤에도 데이터가 유효한 상태로 유지. (예: 계좌 잔액 합계는 변하지 않아야 함)
  3. 격리성(Isolation): 동시에 여러 트랜잭션이 실행될 때 서로 간섭하지 않음. (예: 다른 사람의 송금 작업이 내 작업에 영향 주지 않음)
  4. 지속성(Durability): 트랜잭션이 성공적으로 끝나면 결과가 영구적으로 저장. (예: 송금 기록이 저장)

현실적인 예시

  1. 은행 이체
    • A 계좌에서 10만 원 출금 → B 계좌로 10만 원 입금
    • 중간에 시스템이 꺼지거나 오류가 나도 둘 다 완료되거나, 아니면 아무 작업도 되지 않음.
  2. 온라인 쇼핑 결제
    • 재고 확인 → 결제 처리 → 주문 기록 생성
    • 이 과정 중 하나라도 실패하면 모든 작업이 취소.

 

BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
COMMIT;

 

 

  • 서브쿼리를 활용한 업데이트
UPDATE product
SET price = price*1.05
WHERE product_name IN (
	SELECT product_name
    FROM(
    	SELECT product_name
    	FROM product
    	WHERE category = '전자제품')as new_price
        );

 

728x90