개요
MySQL에서는 한 필드의 부울(Boolean) 값을 조건으로 사용하여 다른 특정 필드만 조회할 수 있습니다. 이 글에서는 예제 테이블을 만들고, isMarried 필드의 값이 true인 직원의 이름만 가져오는 쿼리를 단계별로 살펴보겠습니다.
1. 테이블 생성
먼저 예제로 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
EmployeeName varchar(40),
isMarried boolean
);
Query OK, 0 rows affected (0.57 sec)위 테이블은 직원 ID(EmployeeId), 직원 이름(EmployeeName), 결혼 여부(isMarried) 세 개의 컬럼으로 구성되어 있습니다.
2. 데이터 삽입
INSERT 명령을 사용하여 테이블에 레코드를 추가합니다.
mysql> insert into DemoTable(EmployeeName,isMarried) values('Chris',true);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(EmployeeName,isMarried) values('Robert',false);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(EmployeeName,isMarried) values('Mike',false);
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable(EmployeeName,isMarried) values('Bob',true);
Query OK, 1 row affected (0.07 sec)
mysql> insert into DemoTable(EmployeeName,isMarried) values('Tom',true);
Query OK, 1 row affected (0.12 sec)3. 전체 레코드 확인
SELECT 문을 사용하여 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select * from DemoTable;
실행 결과는 다음과 같습니다.
+------------+--------------+-----------+ | EmployeeId | EmployeeName | isMarried | +------------+--------------+-----------+ | 1 | Chris | 1 | | 2 | Robert | 0 | | 3 | Mike | 0 | | 4 | Bob | 1 | | 5 | Tom | 1 | +------------+--------------+-----------+ 5 rows in set (0.00 sec)
MySQL에서 부울 타입은 실제로 TINYINT(1)로 저장되기 때문에 true는 1, false는 0으로 표시되는 점을 참고하세요.
4. 부울 값 기준으로 특정 필드만 조회하기
이제 isMarried 필드의 값이 true인 행에서 EmployeeName 필드만 가져오는 쿼리입니다.
mysql> select EmployeeName from DemoTable where isMarried=true;
실행 결과는 다음과 같습니다.
+--------------+ | EmployeeName | +--------------+ | Chris | | Bob | | Tom | +--------------+ 3 rows in set (0.00 sec)
정리
WHERE 절에 부울 필드를 조건으로 지정하면, 원하는 필드만 간단하게 조회할 수 있습니다. 위 예제처럼 where isMarried=true를 사용하면 결혼 여부가 참인 직원의 이름만 출력됩니다. 참고로 where isMarried=1 또는 where isMarried와 같이 작성해도 동일한 결과를 얻을 수 있습니다.