최원종의 개발 블로그

UPDATE 와 DELETE - 9 본문

MySQL

UPDATE 와 DELETE - 9

chl6698 2026. 4. 3. 12:39

UPDATE - 기존 데이터 수정

-- 기본 구조
UPDATE 테이블명
SET 컬럼1 = 값1, 컬럼2 = 값2
WHERE 조건;
가장 중요한 주의사항:
WHERE 없이 실행하면 테이블 전체가 수정됩니다!

 


DELETE - 데이터 삭제

-- 기본 구조
DELETE FROM 테이블명
WHERE 조건;
같은 주의사항:
WHERE 없이 실행하면 테이블 전체가 삭제됩니다!
삭제된 데이터는 복구가 어렵습니다.

 

 


안전 습관

실행 전 SELECT 먼저

실무에서 가장 많이 발생하는 실수:
  WHERE 없는 UPDATE / DELETE

무조건 이 순서를 지키세요:
  1. SELECT 로 수정/삭제 대상 확인
  2. UPDATE 또는 DELETE 실행
  3. SELECT 로 결과 확인

실습 코드 (school DB )

USE school;

-- 수정 전 확인
SELECT * FROM student WHERE student_id = 1001;

-- 학번 1001 학생의 학년을 3으로 수정
UPDATE student
SET grade = 3
WHERE student_id = 1001;

-- 수정 결과 확인
SELECT * FROM student WHERE student_id = 1001;

 

-- 여러 컬럼 동시 수정
UPDATE student
SET grade = 4, phone = '010-9999-0000'
WHERE student_id = 1004;

SELECT * FROM student WHERE student_id = 1004;

-- 특정 조건에 맞는 여러 행 수정
-- 경영학 전공 학생의 학년을 모두 1 증가


SELECT * FROM student WHERE  major = '경영학';

UPDATE student
SET grade = grade + 1
WHERE major = '경영학';

SELECT * FROM student WHERE  major = '경영학';

 

-- 수강 취소: enrollment 에서 특정 행 삭제
SELECT * FROM enrollment WHERE enrollment_id = 8;

DELETE FROM enrollment
WHERE enrollment_id = 8;

-- 삭제 결과 확인
SELECT * FROM enrollment;

 


실제 서비스에서의 활용

-- 쇼핑몰: 주문 상태 변경
UPDATE orders
SET status = '배송완료'
WHERE id = 1234;

-- 회원 탈퇴 처리 (소프트 삭제 - 실제로는 삭제하지 않음)
UPDATE member
SET is_active = FALSE, deleted_at = NOW()
WHERE id = 5;
-- 실제 DELETE 하지 않고 is_active=0 으로 표시하는 게 실무 방식

-- SNS: 게시글 삭제 (소프트 삭제)
UPDATE post
SET is_deleted = TRUE
WHERE id = 10 AND member_id = 3;  -- 본인 글만 삭제 가능

 


핵심 요약

UPDATE 테이블 SET 컬럼=값 WHERE 조건;
DELETE FROM 테이블 WHERE 조건;

WHERE 없으면 전체 행이 영향받음  (x)
실행 전 SELECT 로 대상 반드시 확인 (o)

실무 패턴:
  실제 DELETE 보다 is_deleted, is_active 같은
  소프트 삭제 방식을 더 많이 사용

'MySQL' 카테고리의 다른 글

인덱스(Index) - 11  (0) 2026.04.03
PRIMARY KEY, UNIQUE, FOREIGN KEY - 10  (0) 2026.04.03
SELECT 와 WHERE - 8  (0) 2026.04.03
INSERT 구문과 제약 조건 -7  (0) 2026.04.02
MySQL 데이터 타입 - 6  (0) 2026.04.02