-
SQL DELETE: 데이터 삭제의 정석🐬 MySQL/MySQL 키워드 2024. 11. 27. 12:02728x90
SQL DELETE: 데이터 삭제의 정석
안녕하세요. 오늘은 데이터베이스 관리에서 중요한 역할을 하는 DELETE 명령어에 대해 자세히 알아보겠습니다. DELETE는 데이터베이스에서 불필요한 데이터를 제거하는 데 사용되는 강력한 도구입니다.
하지만 강력한 만큼 주의해서 사용해야 합니다.
DELETE의 기본 구문
DELETE의 기본 구문은 다음과 같습니다
이 구문을 통해 특정 조건에 맞는 행을 테이블에서 삭제할 수 있습니다.
DELETE FROM table_name WHERE condition;
DELETE 사용 예시
- 단일 행 삭제
DELETE FROM customer WHERE id=2
- 여러 행 삭제
DELETE FROM products WHERE category = 'Discontinued'; products 테이블에서 'Discontinued' 카테고리에 속한 모든 제품을 삭제하는 DELETE 문입니다. DELETE FROM: products 테이블에서 데이터를 삭제합니다. WHERE 절: category = 'Discontinued' 조건을 사용하여 삭제할 행을 지정합니다. 이 쿼리는 'Discontinued' 카테고리에 해당하는 모든 제품을 한 번에 삭제합니다.
문제) customer 테이블에서 나이가 32살 35살 40살인 데이터를 삭제하시오 -정석적인 방법 DELETE FROM customer WHERE age=35 OR age=35 OR age=40; -편의성을 위해 개선한 방법 DELETE FROM customer WHERE age IN (32,35,40);
- 서브쿼리를 이용한 삭제
DELETE FROM orders WHERE customer_id IN (SELECT id FROM customers WHERE inactive = TRUE); DELETE FROM: orders 테이블에서 데이터를 삭제합니다. WHERE 절: customer_id가 특정 조건을 만족하는 주문만 삭제합니다. 서브쿼리 사용: IN 연산자와 함께 서브쿼리를 사용하여 비활성 고객의 ID를 선택합니다. 서브쿼리 내용: customers 테이블에서 inactive = TRUE인 고객의 id를 선택합니다
DELETE 사용 시 주의사항
- WHERE 절의 중요성
WHERE 절을 생략하면 테이블의 모든 데이터가 삭제됩니다. 항상 의도한 대로 삭제되는지 확인하세요. - 백업의 중요성
중요한 데이터를 삭제하기 전에는 반드시 백업을 해두세요. -
더보기
트랜잭션(Transaction)은 컴퓨터나 데이터베이스에서 하나의 작업 단위를 이루는 동작 묶음
예)
- 은행 이체
- A 계좌에서 10만 원 출금 → B 계좌로 10만 원 입금
- 중간에 시스템이 꺼지거나 오류가 나도 '둘 다 완료'되거나, 아니면 '아무 작업도 되지 않음'
- 온라인 쇼핑 결제
- 재고 확인 → 결제 처리 → 주문 기록 생성
- 이 과정 중 하나라도 실패하면 모든 작업이 취소
트랜잭션의 핵심은 이 작업들이 완벽히 처리되거나(성공), 아예 아무 일도 없었던 것처럼(실패) 처리
이처럼 트랜잭션은 데이터가 항상 신뢰할 수 있는 상태로 유지되도록 보장해 주는 개념
트랜잭션의 특징 (ACID)
- 원자성(Atomicity): 트랜잭션의 모든 작업이 성공하거나, 하나라도 실패하면 전부 취소. (예: 돈이 송금되지 않았다면 출금도 취소)
- 일관성(Consistency): 트랜잭션이 끝난 뒤에도 데이터가 유효한 상태로 유지. (예: 계좌 잔액 합계는 변하지 않아야 함)
- 격리성(Isolation): 동시에 여러 트랜잭션이 실행될 때 서로 간섭하지 않음. (예: 다른 사람의 송금 작업이 내 작업에 영향 주지 않음)
- 지속성(Durability): 트랜잭션이 성공적으로 끝나면 결과가 영구적으로 저장. (예: 송금 기록이 저장)
현실적인 예시
- 은행 이체
- A 계좌에서 10만 원 출금 → B 계좌로 10만 원 입금
- 중간에 시스템이 꺼지거나 오류가 나도 둘 다 완료되거나, 아니면 아무 작업도 되지 않음.
- 온라인 쇼핑 결제
- 재고 확인 → 결제 처리 → 주문 기록 생성
- 이 과정 중 하나라도 실패하면 모든 작업이 취소.트랜잭션 사용
여러 삭제 작업을 하나의 논리적 단위로 처리하려면 트랜잭션(*더보기 설명 참조*)을 사용하세요.
- 은행 이체
안전한 DELETE 사용법
SELECT로 먼저 확인
실제 DELETE 전에 영향받을 행을 먼저 확인하세요.
SELECT * FROM table_name WHERE condition;
LIMIT 사용 (MySQL)
한 번에 삭제할 행 수를 제한하여 실수를 방지할 수 있습니다.
DELETE FROM table_name WHERE condition LIMIT 1000;
테스트 환경에서 먼저 실행
실제 데이터베이스에서 실행하기 전에 테스트 환경에서 먼저 실행오류 예제
SQL
WHERE 조건이다
그렇기에 콤마가 아닌 OR 이 들어가야 한다.OR을 사용한 후
age 라는 컬럼을 다시한번 선택 해줘야 한다
컴퓨터는 첫 age=35 인식 후 OR 을 사용하면 뒷내용 =35는 인식을 못한다.
사람말로 풀이하는 경우
DELETE FROM customer ( customer 테이블 데이터를 삭제해라)
WHERE age=35 (조건은 나이컬럼에 35 데이터)
OR=35 (또 35)
OR=35(또 35)
컴퓨터는 화낸다 또 35는 뭔말이니~? 어디 있는 데이터니~?728x90'🐬 MySQL > MySQL 키워드' 카테고리의 다른 글
SQL GROUP BY: 데이터 집계의 핵심 키워드 (0) 2024.11.28 SQL SELECT: 데이터베이스의 마법 지팡이 (2) 2024.11.27 SQL UPDATE: 데이터베이스 수정의 핵심 키워드 (0) 2024.11.27 SQL INSERT: 데이터베이스에 생명을 불어넣는 마법 (1) 2024.11.26 SQL 데이터 타입: 데이터베이스 설계의 기초 (0) 2024.11.26