WHERE 조건은 논리 연산자를 사용할 수 있습니다. 논리 연산자를 이용한다는 것은 여 러 개의 조건을 논리적으로 결합하여 처리할 수 있다는 것입니다.
논리 연산자 결합은 좌측에서 우측으로 실행됩니다. 또한 연산자 우선순위를 적용받기 때문에 필요에 따라서는 우선 처리를 위한 괄호 ()를 사용해야 하는 경우도 발생합니다.
12.5.1 AND
AND 논리 연산자는 2개의 조건을 결합할 수 있습니다. AND 연산자로 연결된 조건은 모 두 참인 경우만 출력되는 연산입니다.
| 예제 쿼리 |
쿼리~ where Id>=3 and City = 'seoul';
2개의 연산자가 결합되었습니다. Id 값은 3보다 큰 상태와 City가 seoul이어야 합니다. 동시 조건을 만족해야 합니다.
| 콘솔 실습 화면 |
mysql> select * from members where Id>=3 and City = 'seoul';
+----+----------+-----------+-------------+-------+---------+
| Id | LastName | FirstName | Address | City | Country |
+----+----------+-----------+-------------+-------+---------+
| 3 | james | kim | youngdun-po | seoul | korea |
| 4 | eric | jung | seocho-gu | seoul | korea |
+----+----------+-----------+-------------+-------+---------+
2 rows in set (0.00 sec)
위의 예제를 보면 2개의 조건이 참인 결과를 반환합니다.
12.5.2 OR
OR 논리 연산자는 2개의 조건을 모두 선택할 수 있습니다. OR 연산자는 조건 중에서 하 나라도 참이면 모두 참인 경우입니다.
| 예제 쿼리 |
쿼리~ where Id=3 or Id=4;
Id가 3이거나 id가 4이면 됩니다. 2개 중에 하나라도 만족하면 모두 출력됩니다.
| 콘솔 실습 화면 |
mysql> select * from members where Id=3 or Id=4;
+----+----------+-----------+-------------+-------+---------+
| Id | LastName | FirstName | Address | City | Country |
+----+----------+-----------+-------------+-------+---------+
| 3 | james | kim | youngdun-po | seoul | korea |
| 4 | eric | jung | seocho-gu | seoul | korea |
+----+----------+-----------+-------------+-------+---------+
2 rows in set (0.00 sec)
2개의 조건이 모두 만족하는 결과 2개를 출력합니다.
12.5.3 AND, OR
논리 연산자 AND와 OR는 서로 복합적으로 결합하여 사용할 수 있습니다. 2개의 연산자를 복합하여 사용할 때는 연산자 우선순위에 따라서 조건 필터가 다르게 해석될 수도 있 습니다.
AND와 OR를 동시에 사용할 때는 소괄호를 사용하여 연산자 우선순위를 확인해야 합니다.
| 예제 쿼리 |
쿼리~ where (Id=3 or Id=4) and FirstName = ‘kim’;
우선순위에 따라서 괄호 부분이 먼저 해석됩니다. Id 값이 3이거나 4가 되면 괄호 부분은 참이 됩니다. 그리고 FirstName 부분이 참인지를 검사합니다.
| 콘솔 실습 화면 |
mysql> select * from members where (Id=3 or Id=4) and FirstName = 'kim';
+----+----------+-----------+-------------+-------+---------+
| Id | LastName | FirstName | Address | City | Country |
+----+----------+-----------+-------------+-------+---------+
| 3 | james | kim | youngdun-po | seoul | korea |
+----+----------+-----------+-------------+-------+---------+
1 row in set (0.00 sec)
다수의 조건이 만족한 결과를 출력합니다.