본문 바로가기

Database/sql 강의

mysql delete sql 독학 강의#19편 -sTricky

mysql delete sql 독학 강의#19편 -sTricky

 

콘텐츠 index

0. delete란 무엇인가?

1. 기본 delete문 사용방법
2. 테이블 내 모든 데이터를 삭제하는 delete 문
3. select한 결과로 delete 하는 방법

## 전편 강의 보러 가기 ##

2020/05/22 - [Database/sql 강의] - mysql update sql 독학 강의#18편 -sTricky

 

mysql update sql 독학 강의#18편 -sTricky

mysql update sql 독학 강의#18편 -sTricky 콘텐츠 index 0. update란 무엇인가? 1. 기본 update문 사용방법 2. 2개 이상의 칼럼 값을 변경하는 update문 사용방법 ## 전편 강의 보러 가기 ## 2020/05/15 - [Data..

stricky.tistory.com



안녕하세요.

 

오늘은 delete에 관해서 강의를 해보도록 하겠습니다.

 

delete의 의미와 문법에 관해서 강의를 시작하겠습니다.

 

0. delete란 무엇인가?

delete는 말 그대로 테이블에서 데이터를 삭제할 때 사용하는 DML 명령어입니다.

 

앞서 공부했던 select, insert, update 모두 중요하지만 delete 역시 데이터베이스를 관리하는 데 있어서 꼭 필요한 명령어입니다.

select * from class.insert_test;

지난 시간에 공부했던 insert 시간에 생성한 insert_test 테이블의 데이터는 아래와 같습니다.

여기에서 빨간 박스 안의 seq가 10번인 데이터를 삭제해보도록 하겠습니다.

delete from class.insert_test where seq = 10;

위와 같이 delete 명령을 작성해서 실행합니다.

그리고 다시 insert_test 테이블을 select 해보도록 하겠습니다.

그러면 위와 같이 10번 데이터가 삭제된 것을 확인할 수 있습니다.

 

1. 기본 delete문 사용방법

delete from class.insert_test where seq = 10;
delete from <테이블명> where <조건문> and <추가조건>...

delete문은 위 박스와 같이 delete from이라는 명령어로 시작하고 그 뒤에 <테이블명>이 따라옵니다. <테이블명>에 기입된 테이블의 데이터를 지우겠다는 의미입니다.

 

그리고 where 절 다음에 select 문과 같이 삭제할 대상 데이터의 조건을 입력하면 되는 것 이죠.

 

그렇다면 이번에는 위 테이블에서 seq가 6보다 큰 7,8,9번, 3건의 데이터를 삭제하는 delete DML문을 작성해보도록 하겠습니다.

delete from class.insert_test where seq > 6;

where절에 seq > 6이라고 입력을 했습니다.

표현과 같이 seq가 6보다 큰, 7,8,9 데이터가 삭제되겠죠.

insert_test 테이블을 select 하여 확인해보도록 하겠습니다.

seq가 7,8,9인 데이터 3건이 삭제된 것을 확인할 수 있습니다.

 

2. 테이블내 모든 데이터를 삭제하는 delete 문

이번에는 테이블내 모든 데이터를 삭제하는 delete 문을 작성해보겠습니다.

매우 간단합니다. 우선 class.insert_test2라는 테이블 내 데이터를 확인해보겠습니다.

select * from class.insert_test2;

테이블 내 데이터는 아래와 같습니다.

class.insert_test2 테이블내 데이터를 모두 삭제해보도록 하겠습니다.

크게 두 가지 방법이 있습니다. 결과는 같습니다.

delete from class.insert_test2;
delete from class.insert_test2 where 1=1;

간단하죠? where절에 1=1이라고 쓴 거는 모든 조건을 참으로 인식하겠다는 겁니다.

모든 데이터를 다 삭제하겠다는 의미인 것 이죠. select 문에서도 사용이 가능합니다.

select로 class.insert_test2 테이블 데이터를 확인해볼게요.

모두 지워진 것을 확인할 수 있습니다.

 

그럼 만약 아래와 같이 SQL을 실행하면 어떻게 될까요?

delete from class.insert_test2 where 1=2;

where절에 1=2라고 입력을 했는데, 1은 2가 아니기 때문에 아무 데이터도 삭제가 되지 않습니다.

참고하시기 바랍니다.

 

 

3. select 한 결과로 delete 하는 방법

어떤 다른 테이블을 select 하여 조건을 불러와 또 다른 테이블의 데이터를 삭제할 수도 있습니다.

 

우선 아래와 같이 테이블에 데이터가 존재한다고 가정하겠습니다.

 

<class.insert_test 테이블>

<class.insert_test2 테이블>

class.insert_test2 테이블에 있는 seq가 4,5,6인 데이터를 class.insert_test 테이블에서 삭제를 하는 delete 문을 작성해보겠습니다.

delete from class.insert_test where seq in (select seq from class.insert_test2)

위 SQL을 잠시 해설해드리자면, where 절에 있는 "where seq in (select seq from class.insert_test2)" 구문을 잘 보시면 됩니다. class.insert_test2 테이블에는 seq가 4,5,6만 존재하기 때문에 class.insert_test 테이블에서 seq가 4,5,6인 것만 삭제가 되고, 나머지 1,2,3만 남은 상태가 되는 겁니다.

seq가 1,2,3인 것만 남은 것을 확인할 수 있습니다.

 

open.kakao.com/o/szfhqYec

 

Database/남/db개발님의 오픈프로필

DB 개발자, DB 개인 CLASS

open.kakao.com

 


## 다음 강의 보러 가기 ##

https://stricky.tistory.com/286

 

insert into on duplicate key MySQL merge SQL 독학 강의#20편 -sTricky

insert into on duplicate key MySQL merge SQL 독학 강의#20편 -sTricky 콘텐츠 index 0. insert into on duplicate key 문이란? 1. 테스트용 데이터 입력 2. insert into on duplicate key 문 사용 예제 3. in..

stricky.tistory.com

 

어떤가요? delete도 참 쉽죠?

 

어렵지 않습니다.

 

차근차근 하나씩 따라오시다 보면 어느샌가 SQL에 자신감이 많이 붙으실 겁니다.

 

오늘 강의는 여기까지 하겠습니다.

 

감사합니다.

 

 

 

by.sTricky