MySQL에서 여러 개의 값을 조건으로 지정해 행을 조회할 때는 IN() 연산자가 매우 유용합니다. 이 글에서는 실제 예제를 통해 테이블 생성부터 데이터 삽입, 그리고 IN()을 활용한 행 조회까지 단계별로 살펴보겠습니다.
1단계: 테이블 생성
먼저 예제에 사용할 테이블을 생성하겠습니다. 고객 ID와 고객 이름 두 개의 컬럼으로 구성된 간단한 테이블입니다.
mysql> create table DemoTable778 ( ClientId varchar(100), ClientName varchar(100) ); Query OK, 0 rows affected (1.05 sec)
DemoTable778이라는 이름의 테이블이 성공적으로 생성되었습니다. ClientId와 ClientName은 모두 최대 100자까지 저장할 수 있는 varchar 타입입니다.
2단계: 샘플 데이터 삽입
INSERT 명령어를 사용해 테이블에 몇 개의 레코드를 추가해 보겠습니다.
mysql> insert into DemoTable778 values('J-101','John');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable778 values('A-102','Adam');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable778 values('C-103','Chris');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable778 values('D-104','David');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable778 values('R-105','Robert');
Query OK, 1 row affected (0.41 sec)총 5명의 고객 정보(J-101 John, A-102 Adam, C-103 Chris, D-104 David, R-105 Robert)가 정상적으로 삽입되었습니다.
3단계: 전체 레코드 확인
SELECT 문을 사용하여 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable778;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+----------+------------+ | ClientId | ClientName | +----------+------------+ | J-101 | John | | A-102 | Adam | | C-103 | Chris | | D-104 | David | | R-105 | Robert | +----------+------------+ 5 rows in set (0.00 sec)
4단계: IN() 연산자로 특정 행 조회
이제 IN() 연산자를 사용하여 원하는 행만 선택적으로 조회해 보겠습니다. WHERE 절과 함께 IN()을 사용하면 괄호 안에 나열된 값들 중 하나라도 일치하는 행을 반환합니다.
mysql> select *from DemoTable778 where ClientId IN('J-101','A-102','C-103','D-104','R-105');실행 결과는 다음과 같습니다.
+----------+------------+ | ClientId | ClientName | +----------+------------+ | J-101 | John | | A-102 | Adam | | C-103 | Chris | | D-104 | David | | R-105 | Robert | +----------+------------+ 5 rows in set (0.00 sec)
IN() 목록에 포함된 5개의 ClientId가 모두 일치했기 때문에 전체 5개 행이 조회되었습니다.
IN() 연산자 활용 팁
실무에서는 IN() 목록에서 특정 값만 제거하면 해당 행을 쉽게 제외할 수 있습니다. 예를 들어 'A-102'와 'D-104'만 조회하고 싶다면 다음과 같이 작성합니다.
mysql> select *from DemoTable778 where ClientId IN('A-102','D-104');이렇게 하면 Adam과 David의 정보만 조회됩니다. 또한 IN()은 OR 조건을 여러 번 나열하는 것보다 코드가 간결하고 가독성이 뛰어나며, 대부분의 경우 동일하게 인덱스를 활용할 수 있어 성능 면에서도 유리합니다.