05. SQL 조건조합하기

1. 05. SQL 조건 조합하기

1.1. AND 연산자, OR 연산자, NOT 연산자

1.1.1. AND 연산자

1
조건식1 AND 조건식2
  • 이항 연산자
  • AND로 조건식을 연결하면 모든 조건을 만족하는 행을 검색할 수 있음

1.1.2. OR 연산자

1
조건식1 OR 조건식2
  • 이항 연산자
  • OR로 조건식을 연결하면 어느 쪽이든 조건을 만족하는 행을 모두 검색할 수 있음

1.1.3. NOT 연산자

1
NOT 조건식
  • 단항 연산자
  • NOT을 사용하면 오른쪽에 지정한 조건식의 반대 값을 반환
  • 조건식에 부합하지 않는 나머지 조건을 지정할 경우 사용

1.1.4. 연산자 우선 순위

  1. Arithmetic operators
  2. Concatenation operator
  3. Comparison conditions
  4. IS [NOT] NULL, LIKE, [NOT] IN
  5. [NOT] BETWEEN
  6. Not equal to
  7. NOT logical condition
  8. AND logical condition
  9. OR logical condition
  • NOT > AND > OR
  • AND는 OR에 비해 우선순위가 높음

실제 코드

1
SELECT * FROM table WHERE a=1 OR a=2 AND b=1 OR b=2

잘못된 예상

1
2
3
SELECT * FROM table WHERE ((a=1 OR a=2) AND b=1) OR b=2
OR
SELECT * FROM table WHERE (a=1 OR a=2) AND (b=1 OR b=2)

실제 실행

1
SELECT * FROM table WHERE a=1 OR (a=2 AND b=1) OR b=2

1.1.4.1. * 추가 - IN 연산자

1
컬럼명 IN (조건, 조건, 조건 ...)
  • OR와 비슷한 역할을 수행

  • 조건 목록의 값 중 어느 하나와 일치하는 데이터를 출력

  • OR 보다는 IN 사용 권장

    • IN은 서브쿼리를 사용하여 보다 유연한 확장 가능
    • IN은 반드시 하나의 컬럼이 비교되어야 하므로 나중에 인덱스 구성에 대한 전략을 수립할 때 유리
    • 옵티마이저는 복잡한 OR에 매우 취약