[초보] SQL 기초 모음 - DELETE(1)
[초보] 데이터 분석을 위한 SQL 기초 모음
1.[초보] SQL 기초 모음 - SELECT(1)
2.[초보] SQL 기초 모음 - INSERT(1)
3. [초보] SQL 기초 모음 - UPDATE(1)
4. [초보] SQL 기초 모음 - DELETE(1)
출처: [AgileBus - IT 기술자를 위한 최신 기술 Trends:티스토리]
[초보] SQL 기초 모음 - DELETE(1) 원리
테이블의 데이터를 삭제 하는 SQL문의 종류
1. DELETE
2. TRUNCATE
3. DROP
1. DELETE - 테이블의 특정 데이터를 삭제
테이블에 저장된 데이터를 삭제 하기 위해서는 DELETE문을 사용합니다. DELETE문은 테이블의 한 행, 여러 행 및 모든 행을 삭제할 수 있습니다.
1) DELETE 문의 기본
DELETE FROM table_name WHERE search_condition;
DELETE FROM table_name;
- DELETE FROM먼저 키워드 뒤에 있는 행을 제거할 테이블의 이름을 지정합니다 .
- WHERE 절에는 제거할 행을 식별하기 위한 검색 조건을 추가합니다.
WHERE 조건식(search_condition)에 일치하는 데이터가 여러 개인 경우에도 해당 데이터를 한꺼번에 삭제합니다. 만약 WHERE 절을 생략하면 테이블의 모든 데이터가 삭제됩니다.
SQL> SELECT * FROM CUSTOMERS ;
+----+-----------+-----+---------------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+-----------+-----+---------------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+-----------+-----+---------------+----------+
테이블 CUSTOMERS에서 ID 가 6인 행을 삭제 하는 예는 아래와 같이 사용합니다. WHERE 문에 ID = 6을 선언하여 값을 찾도록 합니다.
SQL> DELETE FROM CUSTOMERS WHERE ID = 6;
2) DELETE 문장의 작동 원리
DELETE문의 형식은 SELECT문과 비슷한 구조를 가지고 있습니다. 데이터 삭제 대상 테이블 명을 제외하면 WHERE 절은 SELECT 문의 WHERE절과 같이 사용이 가능합니다. 즉 데이터를 지우기 위해서 내부적으로는 해당 데이터를 조회하고 삭제할 목록을 만드는 과정을 통해서 해당 데이터를 삭제할 수 있다는 것입니다.
따라서 SELECT 문의 문법을 이용해서 DELETE문에서도 JOIN을 통해 데이터를 삭제 할수 도 있습니다.
3) DELETE 문의 응용
DELETE 문의 WHERE 조건으로 선택되는 데이터가 많을 경우 조회 되는 순서대로 몇개만 삭제 하는 방법입니다. Oracle/MySQL/ SQLite 등의 DB 경우는 LIMIT를 이용하고 특정 갯수만 선택하여 삭제가 가능합니다.
[LIMIT를 이용하여 특정 갯수만 삭제]
DELETE FROM table
WHERE search_condition
ORDER BY criteria
LIMIT row_count OFFSET offset;
[LIKE를 이용하여 선택 삭제]
DELETE FROM CUSTOMERS WHERE name LIKE '%Khilan%' ;
[JOIN을 이용하여 데이터 삭제]
특정 테이블의 데이터를 참조하여 테이블의 데이터를 삭제 하기 위해서 테이블 Join을 이용하여 삭제가 가능합니다.
데이터 이관/복제 할때 실수로 많이 넣었거나, 불필요한 데이터를 삭제하거나 테이블 간의 데이터 동기화를 위해서 많이 사용하는 문장입니다.
DELETE table_name1 FROM table_name1
JOIN table_name2 ON column_name3 = column_name4
WHERE condition
DELETE P FROM Product P
LEFT JOIN OrderItem I ON P.Id = I.ProductId
WHERE I.Id IS NULL
2. TRUNCATE - 테이블의 모든 데이터를 삭제
DELETE는 테이블의 일부 데이터를 조회 하여 삭제 한다면 TRUNCATE는 테이블의 모든 데이터를 한번에 삭제 하는 것으로 WHRE 조건절이 없습니다.
TRUNCATE 명령 은 테이블에서 모든 레코드 를 삭제합니다. TRUNCATE는 DELETE와 유사하지만 데이터를 Rollback 하기위해 Undo 영역에 데이터를 보관하지 않기 때문에 훨씬 빠르고 효율적으로 실행됩니다.
외래 키 제약 조건이 삭제를 방지하는 경우 TRUNCATE를 사용할 수 없습니다.
TRUNCATE TABLE table_name;
TRUNCATE는 대량의 테이블을 복원 할 경우를 고려하지 않고 한꺼번에 지울때 사용하는 가장 쉬운 방법입니다. 그러나 TRUNCATE는 삭제된 데이터를 복원 할 수 없기 때문에 신중하게 사용해야 합니다.
3. DROP - 테이블 자체를 삭제
DROP는 테이블 을 삭제하므로 테이블에 저장된 데이터도 함께 저장이됩니다. 테이블의 데이터가 많거나 불필요한 TEMP 테이블을 삭제할 경우 사용 됩니다.
DROP TABLE table_name;
[초보] SQL 기초 모음
1.[초보] SQL 기초 모음 - SELECT(1)
2.[초보] SQL 기초 모음 - INSERT(1)
3. [초보] SQL 기초 모음 - UPDATE(1)
4. [초보] SQL 기초 모음 - DELETE(1)