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. 연산자 우선 순위
- Arithmetic operators
- Concatenation operator
- Comparison conditions
- IS [NOT] NULL, LIKE, [NOT] IN
- [NOT] BETWEEN
- Not equal to
- NOT logical condition
- AND logical condition
- 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 | 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에 매우 취약