mysql delete sql 독학 강의#19편 -sTricky
콘텐츠 index 0. delete란 무엇인가? 1. 기본 delete문 사용방법 |
## 전편 강의 보러 가기 ##
2020/05/22 - [Database/sql 강의] - mysql update sql 독학 강의#18편 -sTricky
안녕하세요.
오늘은 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인 것만 남은 것을 확인할 수 있습니다.
## 다음 강의 보러 가기 ##
https://stricky.tistory.com/286
어떤가요? delete도 참 쉽죠?
어렵지 않습니다.
차근차근 하나씩 따라오시다 보면 어느샌가 SQL에 자신감이 많이 붙으실 겁니다.
오늘 강의는 여기까지 하겠습니다.
감사합니다.
by.sTricky
'Database > sql 강의' 카테고리의 다른 글
MySQL DDL문 완전정복 SQL 독학 강의#21편 -sTricky (0) | 2020.06.12 |
---|---|
insert into on duplicate key MySQL merge SQL 독학 강의#20편 -sTricky (3) | 2020.06.02 |
mysql update sql 독학 강의#18편 -sTricky (4) | 2020.05.22 |
sql 독학 강의 # mysql insert 사용 방법 17편 -sTricky (0) | 2020.05.15 |
sql 독학 강의 # sub query 서브쿼리 16편 -sTricky (5) | 2020.05.11 |