MySQL에서 특정 문자열이 일치하는 행 삭제하기
MySQL에서는 DELETE 문과 LIKE 연산자를 조합하면 특정 문자열이 포함된 셀을 가진 테이블 행을 간편하게 삭제할 수 있습니다. 이 글에서는 테이블 생성부터 데이터 삭제, 결과 확인까지 전 과정을 예제와 함께 단계별로 살펴보겠습니다.
1단계: 테이블 생성
먼저 데모용 테이블을 생성합니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name varchar(100)
);
Query OK, 0 rows affected (0.55 sec)2단계: 샘플 데이터 삽입
INSERT 명령어를 사용하여 테이블에 레코드를 추가합니다.
mysql> insert into DemoTable(Name) values('John Smith');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(Name) values('Carol Taylor');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(Name) values('John Doe');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable(Name) values('Chris Brown');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(Name) values('John Brown');
Query OK, 1 row affected (0.19 sec)3단계: 전체 데이터 조회
SELECT 문으로 테이블에 저장된 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----+--------------+ | Id | Name | +----+--------------+ | 1 | John Smith | | 2 | Carol Taylor | | 3 | John Doe | | 4 | Chris Brown | | 5 | John Brown | +----+--------------+ 5 rows in set (0.00 sec)
4단계: 문자열이 일치하는 행 삭제
다음은 Name 컬럼의 값에 특정 문자열이 포함된 행을 삭제하는 쿼리입니다. 여기서는 LIKE 패턴 '%ohn%'을 사용하여 'ohn'이라는 문자열이 들어간 모든 행을 대상으로 합니다.
mysql> delete from DemoTable where Name like '%ohn%'; Query OK, 3 rows affected (0.16 sec)
5단계: 삭제 결과 확인
테이블을 다시 조회하여 삭제가 정상적으로 적용되었는지 확인합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----+--------------+ | Id | Name | +----+--------------+ | 2 | Carol Taylor | | 4 | Chris Brown | +----+--------------+ 2 rows in set (0.00 sec)
'John Smith', 'John Doe', 'John Brown'처럼 'ohn'이 포함된 3개의 행이 삭제되고, 해당 문자열이 없는 'Carol Taylor'와 'Chris Brown' 두 행만 남은 것을 확인할 수 있습니다.
LIKE 연산자 사용 시 참고 사항
LIVE 연산자에서 %는 0개 이상의 임의의 문자열을 의미하는 와일드카드입니다. 따라서 '%ohn%'는 'ohn' 앞뒤로 어떤 문자가 오더라도 매칭됩니다. 만약 값이 정확히 일치하는 행만 삭제하고 싶다면 LIKE 대신 등호(=) 연산자를 사용하면 됩니다. 또한 실무 환경에서는 DELETE 실행 전 SELECT 문으로 먼저 삭제 대상을 확인하는 습관이 데이터 손실을 방지하는 좋은 방법입니다.