본문 바로가기
MySQL/MySQL 기본 CRUD

[기본 CRUD] 3-2. WHERE 복합 조건으로 검색 조건 지정하기

by Fletcher 2024. 8. 7.

 

저번 포스트에서는 WHERE 조건문을 이용하여

단일 조건에 대한 특정 및 범위 데이터 검색에 대해 알아보았습니다

이번 포스트에서도 WHERE 키워드를 이용하여 조건 검색을 하되,

조건을 조금 더 심화시켜서 OR, AND 연산자 등을 이용하여

복합 조건문으로 데이터를 조회 해보도록 하겠습니다 ^^

 

 

먼저,

조건 지정을 위한 연산자로 여러가지가 있는데요 ^^

=

> 또는 <

>= 또는 <=

OR

AND

NOT

기본적으로 위와 같이 6개 정도입니다!

 

예시를 들자면,

하나의 조건을 만족하는 데이터를 조회할 때는 WHERE 컬럼 = 특정 데이터 형태로,

범위 조건을 만족하는 데이터를 조회할 때는 WHERE 컬럼 > 특정 값 형태로,

복수의 조건을 결합할 때는 WHERE (컬럼 = 특정데이터) AND (컬럼 < 특정 값) 형태가 되겠습니다 ^^

 

 

 

그럼 이제 예제를 통해 설명드리겠습니다 ^^

 

저번 시간과 같은 데이터를 준비했습니다

이 중에서 출간 연도가 2000년 이후, 2010년 이전 범위인 데이터만 한 번 조회해볼까요?

 

 

 

 

AND 연산자를 이용하여 복합 조건문을 적용해서 해당 범위의 데이터를 조회하였습니다

released_year 컬럼의 값이 2000 이상, 2010 미만 조건을 만족하는 데이터들에 대한 조회 결과입니다 ^^

그럼 조건을 조금 더 고도화시켜 볼까요?

 

이번에는 위와 같이 released_year 컬럼의 값이 2000 이상, 2010 미만인 조건

또는 stock_quantity 컬럼의 값이 100 이하인 조건을 만족하는 데이터를 조회해보도록 하겠습니다!

 

 

 

 

OR 연산을 이용하여,

만족해야 할 조건이 더 포괄적이 되었다보니, 아까보다 많은 조회 결과를 얻었습니다 ^^

OR 연산자를 이용해서, 두 조건 중 하나만 충족하여도 조회 결과에 포함되도록 하였습니다

① 출간 연도가 2000년 이상, 2010년 미만

②재고량이 100권 미만

 

두 조건에 대한 OR 연산 결과를 보니, 분명히 출간연도가 2000년대가 아님에도 불구하고,

재고량이 100권 미만이기 때문에 조회 결과에 포함되어 있는 것을 확인할 수 있죠? ^^

주의 사항은, 적절한 포인트에 () 소괄호 처리를 하여 범위를 특정해주는 것입니다!

 

위 조건에서는 괄호를 표시하지 않아도 실행 결과 동일한 결과를 얻습니다.

하지만 지금과 같지 않고 조건문이 굉장히 복잡한 순간에서는 해당 연산에 대해 피연산자의 범위를

정확하게 표기해주셔야 본인이 의도한 연산에 대한 올바른 결과를 얻을 수 있습니다 ^^!

 

 

 

 

다음 예시에서는 NOT을 이용해서 특정 데이터에 대해

여집합 개념으로 한 번 접근해보도록 하겠습니다!

 

 

이번에는 WHERE 키워드 뒤에 NOT을 추가하여

released_year < 2010 조건문을 만족하지 않는 데이터들에 대해 조회를 하였습니다 ^^

 

같은 의미의 다른 표현으로, released_year >= 2010이라고 조건문을 설정할 수 있겠죠 ^^?

 

 

특정 범위의 데이터를 조회하고 싶을 때,

때로는 해당 범위의 조건을 기술(記述)하는 것보다

해당 범위를 만족하지 않는 조건을 기술하는,

즉 해당 데이터의 여집합의 개념으로 접근하는 것이 더 간단하고 효율적일 때가 있습니다 ^^

그럴 때 이 NOT 키워드를 이용해주시면 되겠습니다!

 

 

 

이번 포스트까지 해서 WHERE 키워드를 이용한

단일 조건 및 복합 조건 조회에 대해 알아보았습니다 ^^!

다음 포스트에서는 LIKE 키워드를 이용해서 조회 조건 지정에 유연성을 조금 더해보겠습니다