티스토리 뷰
1. DELETE - 역할
테이블에 데이터를 삭제하는 역할
◈ 구문형식
DELETE FROM 테이블명 WHERE 조건 컬럼= 조건 값
SELECT문을 이용
DELETE FROM 테이블명
WHERE 조건 컬럼 = (SELECT 컬럼명 FROM 테이블명 WHERE 조건 컬럼 = 조건 값)
2. DELETE - 기본 테이블
◈ TEST_TABLE_ONE
IDX | ID | NAME | AMT |
1 | test1 | 테스트1 | 1000 |
2 | test2 | 테스트2 | 2000 |
3 | test3 | 테스트3 | 3000 |
◈ TEST_TABLE_TWO
IDX | ID | NAME | AMT | CHECK_YN |
1 | test1 | 테스트1 | 1000 |
|
2 | test2 | 테스트2 | 2000 | Y |
3 | test3 | 테스트3 | 3000 | Y |
3. DELETE - SQL 문장
1 | DELETE FROM TEST_TABLE_ONE WHERE ID='test1' |
◈ 결과 테이블
ID | NAME | AMT |
test2 | 테스트2 | 2000 |
test3 | 테스트3 | 3000 |
◈ 설명
일반적인 DELETE 문장은 위와 같은 조건절을 이용해서 삭제할 수 있습니다.
1 2 | DELETE FROM TEST_TABLE_ONE WHERE ID IN (SELECT ID FROM TEST_TABLE_TWO WHERE CHECK_YN='Y') |
◈ 결과 테이블
ID | NAME | AMT |
test1 | 테스트1 | 1000 |
◈ 설명
이 문장을 보면 TEST_TABLE_TWO에 있는 체크컬럼에 값이 Y인 ID를 가져와서 TEST_TABLE_ONE에 있는 것들을 삭제하고 있습니다.
주의할 점은 여기서는 CHECK_YN에 체크된 값이 2개 이상이기 때문에 DELETE 조건절 문장에서 =이 아닌 IN을 넣었습니다.
만약 2개 이상의 값이 나온 SELECT문장을 가지고 삭제할 경우는 single-row 에러 라는 문구가 나올 것입니다.
이럴 때는 가능한 IN 이나 NOT IN 을 사용해 한 행을 포함한 여러 개의 행을 불러와도 작업을 수행할 수 있도록 하는 것이 좋습니다.
'[개발]프로그래밍 > sql' 카테고리의 다른 글
[oracle] CREATE TABLE - 테이블 생성 (0) | 2019.11.25 |
---|---|
[oracle] MERGE - 삽입,수정,삭제를 한번에 (0) | 2019.11.19 |
[oracle] UPDATE - 테이블 내의 컬럼 값 변경 (0) | 2019.11.18 |
[oracle] INSERT - 한 행 ,여러 행 삽입(SELECT 이용) (0) | 2019.11.15 |
[oracle] SELF JOIN - 자체 조인 (0) | 2019.11.14 |
- Total
- Today
- Yesterday