.
DELETE 문은 SQL에서 테이블의 데이터를 삭제하는 데 사용됩니다. DELETE 명령은 조건을 지정하여 특정 튜플(행)만 삭제할 수도 있고, 조건 없이 테이블의 모든 데이터를 삭제할 수도 있습니다. 하지만 테이블 구조 자체를 삭제하려면 DROP 명령을 사용해야 합니다.
기본 문법
sql
코드 복사
DELETE FROM 테이블명 WHERE 조건;
- DELETE FROM 테이블명: 데이터를 삭제할 테이블을 지정합니다.
- WHERE 조건: 삭제할 데이터를 선택하는 조건을 지정합니다. 이 절을 생략하면 테이블의 모든 데이터가 삭제됩니다.
기본 예제
- 조건에 맞는 데이터 삭제이 명령은 EmployeeID가 5인 직원의 데이터를 Employees 테이블에서 삭제합니다.
-
sql코드 복사DELETE FROM Employees WHERE EmployeeID = 5;
- 조건 없이 모든 데이터 삭제이 명령은 Employees 테이블의 모든 데이터를 삭제합니다. 테이블 자체는 삭제되지 않습니다.
-
sql코드 복사DELETE FROM Employees;
트랜잭션과 롤백
DELETE 명령은 트랜잭션 내에서 사용될 때 강력한 기능을 발휘합니다. 트랜잭션은 여러 SQL 명령을 하나의 작업 단위로 묶어 처리하며, 작업 중 오류가 발생하면 모든 변경 사항을 취소할 수 있습니다.
- COMMIT: 트랜잭션을 완료하고 모든 변경 사항을 데이터베이스에 영구적으로 저장합니다.
-
sql코드 복사COMMIT;
- ROLLBACK: 트랜잭션의 모든 변경 사항을 취소하고 데이터베이스를 이전 상태로 복구합니다.
-
sql코드 복사ROLLBACK;
예제: 트랜잭션과 함께 사용하기
sql
코드 복사
BEGIN TRANSACTION; DELETE FROM Employees WHERE DepartmentID = 3; -- 작업을 검토한 후, 문제가 없으면 변경 사항을 저장 COMMIT; -- 문제가 발견되면 변경 사항을 취소 -- ROLLBACK;
참고 사항
- 조건 생략 주의:
- WHERE 절을 생략하면 테이블의 모든 데이터가 삭제됩니다. 따라서 DELETE 명령을 사용할 때는 항상 조건을 신중히 작성해야 합니다.
- 제약 조건:
- 외래 키 제약 조건이 설정된 경우, 부모 테이블의 데이터가 자식 테이블의 데이터에 영향을 줄 수 있습니다. 이런 경우 ON DELETE CASCADE와 같은 제약 조건을 활용하여 관련 데이터를 자동으로 삭제할 수 있습니다.
sql코드 복사CREATE TABLE Departments ( DepartmentID INT PRIMARY KEY, DepartmentName VARCHAR(50) ); CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY, FirstName VARCHAR(50), LastName VARCHAR(50), DepartmentID INT, FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID) ON DELETE CASCADE ); - 퍼포먼스:
- 대량의 데이터를 삭제할 때는 성능에 영향을 미칠 수 있으므로, 삭제 작업을 적절히 조정하거나 데이터베이스의 성능을 고려하여 작업을 수행해야 합니다.
- 데이터 백업:
- 데이터 삭제 작업 전에 데이터베이스를 백업하는 것이 좋습니다. 중요한 데이터가 삭제되면 복구가 어려울 수 있습니다.
DELETE 명령은 데이터베이스의 데이터를 관리하고 유지하는 데 필수적인 도구입니다. 적절히 사용하여 데이터베이스를 효율적으로 운영할 수 있습니다.