코딩 스쿨 SQL

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

SQL Delete

SQL DELETE: 데이터베이스에서 데이터 삭제

SQL DELETE 문은 테이블에서 하나 이상의 행(row)을 삭제할 때 사용됩니다. 특정 조건을 만족하는 데이터만 삭제하거나, 조건을 생략하여 테이블의 모든 데이터를 삭제할 수 있습니다. DELETE는 데이터 자체를 삭제하지만, 테이블의 구조나 열은 그대로 유지됩니다.

1. 기본 SQL DELETE 문법

DELETE 문은 다음과 같은 구조를 가집니다:

DELETE FROM 테이블이름
WHERE 조건;

  • 테이블이름: 데이터를 삭제할 테이블의 이름입니다.
  • WHERE 조건: 삭제할 데이터를 선택하는 조건입니다. 이 조건을 생략하면 테이블의 모든 데이터가 삭제됩니다.

2. SQL DELETE 예제

2.1 특정 행 삭제

다음은 employees 테이블에서 id가 1인 직원을 삭제하는 예제입니다.

DELETE FROM employees
WHERE id = 1;

이 쿼리는 id가 1인 행을 삭제합니다.

결과 예시:

id name department salary
2 Jane Roe HR 5000
3 Alice Sales 5500

2.2 여러 조건을 사용하여 삭제

다음은 employees 테이블에서 Sales 부서에 속한 직원 중 급여가 5,000 이하인 직원을 삭제하는 예제입니다.

DELETE FROM employees
WHERE department = 'Sales' AND salary <= 5000;

이 쿼리는 Sales 부서에 속하고, 급여가 5,000 이하인 직원을 삭제합니다.

결과 예시:

id name department salary
2 Jane Roe HR 5000
3 Alice Sales 5500

3. DELETE와 WHERE 절

WHERE 절을 사용하여 삭제할 데이터를 필터링할 수 있습니다. WHERE 절을 생략하면 테이블의 모든 행이 삭제되므로 주의해야 합니다.

3.1 특정 조건을 만족하는 행 삭제

다음은 부서가 HR인 모든 직원을 삭제하는 예제입니다.

DELETE FROM employees
WHERE department = 'HR';

결과 예시:

id name department salary
3 Alice Sales 5500

3.2 모든 행 삭제

WHERE 절 없이 DELETE를 사용하면 테이블의 모든 행이 삭제됩니다. 테이블의 구조는 그대로 유지되지만, 데이터는 완전히 삭제됩니다.

DELETE FROM employees;

결과 예시:

id name department salary
       

4. DELETE와 JOIN 사용

DELETE 문은 JOIN 절을 사용하여 여러 테이블을 결합하고, 그 결과에 따라 특정 테이블에서 데이터를 삭제할 수 있습니다. 이를 통해 복잡한 조건을 만족하는 행을 삭제할 수 있습니다.

예제: 두 테이블을 조인하여 삭제

다음 쿼리는 employees 테이블과 departments 테이블을 조인하여, 특정 부서에 속한 직원을 삭제하는 예제입니다.

DELETE e
FROM employees e
JOIN departments d ON e.department_id = d.id
WHERE d.department_name = 'Sales';

이 쿼리는 Sales 부서에 속한 직원들을 삭제합니다.

5. DELETE와 LIMIT 사용

일부 데이터베이스 시스템(MySQL 등)에서는 LIMIT 절을 사용하여 삭제할 행의 개수를 제한할 수 있습니다. 이를 통해 한번에 삭제되는 행의 수를 제어할 수 있습니다.

예제: 첫 2개 행 삭제

DELETE FROM employees
WHERE department = 'Sales'
LIMIT 2;

이 쿼리는 Sales 부서에서 처음 두 개의 행만 삭제합니다.

6. DELETE와 ORDER BY 사용

일부 데이터베이스(MySQL 등)에서는 ORDER BYLIMIT을 결합하여 특정 기준으로 정렬된 데이터를 선택적으로 삭제할 수 있습니다.

예제: 급여가 높은 순으로 상위 1명의 직원 삭제

DELETE FROM employees
ORDER BY salary DESC
LIMIT 1;

이 쿼리는 급여가 가장 높은 직원 한 명을 삭제합니다.

7. DELETE와 TRUNCATE의 차이점

DELETETRUNCATE는 테이블에서 데이터를 삭제하는 방법이지만, 동작 방식에 차이가 있습니다.

  • DELETE: 선택적으로 행을 삭제할 수 있으며, WHERE 절을 사용하여 특정 행만 삭제할 수 있습니다. 트랜잭션 제어가 가능하며, 각 행이 하나씩 삭제됩니다.
  • TRUNCATE: 테이블의 모든 행을 삭제하지만, 트랜잭션을 제어할 수 없고, 조건을 지정할 수 없습니다. 테이블을 비우지만 테이블의 구조는 유지되며, 빠르게 처리됩니다.

DELETE 예제:

DELETE FROM employees WHERE department = 'HR';

이 쿼리는 HR 부서에 속한 직원만 삭제합니다.

TRUNCATE 예제:

TRUNCATE TABLE employees;

이 쿼리는 employees 테이블의 모든 데이터를 삭제하지만, 테이블 구조는 그대로 유지됩니다.

8. 실전 예제

예제 1: 특정 부서의 직원 삭제

DELETE FROM employees
WHERE department = 'HR';

이 쿼리는 HR 부서에 속한 모든 직원을 삭제합니다.

예제 2: 급여가 3,000 이하인 직원 삭제

DELETE FROM employees
WHERE salary <= 3000;

이 쿼리는 급여가 3,000 이하인 직원들을 삭제합니다.

예제 3: 특정 날짜 이전에 고용된 직원 삭제

DELETE FROM employees
WHERE hire_date < '2020-01-01';

이 쿼리는 2020년 1월 1일 이전에 고용된 직원들을 삭제합니다.

예제 4: 모든 데이터를 삭제

DELETE FROM employees;

이 쿼리는 employees 테이블에서 모든 데이터를 삭제합니다.

요약

SQL DELETE 문은 테이블에서 데이터를 삭제하는 데 사용되며, WHERE 절을 통해 조건을 지정하여 특정 데이터를 선택적으로 삭제할 수 있습니다. JOIN, LIMIT, ORDER BY와 같은 절을 활용하여 더욱 정교하게 데이터를 삭제할 수 있습니다. DELETE는 테이블의 데이터를 삭제하지만, 테이블 구조는 그대로 유지됩니다. 데이터를 삭제할 때는 주의가 필요하며, 특히 WHERE 절 없이 DELETE를 사용할 경우 테이블의 모든 데이터가 삭제될 수 있으므로 신중해야 합니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com