# where 과 함께 사용하는 조건 연산자(and, or, in, not, like)

SQL에서 where 조건절에 사용하는 조건 연산자는 굉장히 다양하다.
이 포스팅에서는 좀 더 세부적으로 정리하고 필요할때 찿아보도록 하자.

1. 비교 연산자

우리가 보통 사용하는 =, <, <> 등이 해당한다. 종류로는 아래와 같다.

- = : 두 값이 같은지 비교

- <> or != : 두 값이 다른지 비교 

- >, > =, <, < = : 값의 크기를 비교

2. 논리 연산자

- and : 두 조건이 모두 참이면 ok

- or : 두 조건 중 하나만 참이면 ok

- not : 조건의 반대를 의미

3. 범위 연산자

- between : 특정 범위 내에 있는지 확인

- not between : 특점 범위 내에 없는지 확인

4. 집합 연산자

- in : 값 목록들 중 포함이 되는지 확인

- not in : 값 목록들 중 포함이 안되는지 확인

5. 패턴 매칭 연산자

- like : 지정된 패턴과 일치하는지 검사

    - J% : J로 시작하면 ok

    - %J : J로 끝나면 ok

    - %J% : J가 들어가면 ok

6. NULL 검사 연산자

- is null : 값이 null인지 확인

- is not null : 값이 null이 아닌지 확인

7. 기타 연산자

- exists : 서브쿼리가 하나 이상의 행을 반환하는지 검사

- any : 서브쿼리의 결과 집합 중 하나 이상의 값과 비교

- all : 서브쿼리의 모든 결과 집합과 비교

쓰다 보니 너무 많아 보이지만 자주 사용하는 것은 금방 익히기도 한다.
중요한 것은 이 조건 연산자들을 조합해서 사용하는 것도 가능하다.

`where a < 0  and b >0`

그리고 in 연산자 안에는 값 뿐만 아니라 또 쿼리가 좀 더 세부적인 조합이 가능하다.

> SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO 
WHERE (FOOD_TYPE, FAVORITES) IN (
    SELECT FOOD_TYPE, MAX(FAVORITES)
    FROM REST_INFO
    GROUP BY FOOD_TYPE
)
ORDER BY FOOD_TYPE DESC;

생각의 폭을 넓히기 위해 예시를 적어보았다.

For the site tree, see the [root Markdown](https://slashpage.com/kyugntae-ai.md).
