2023. 3. 25. 18:54ㆍ개발/데이터베이스
SQL WHERE절에는 AND나 OR을 조합하여 다수의 조건을 지정하여 다양한 필터 제어가 가능하다.
연산자: 절을 연결하거나 변경하기 위해 WHERE절에서 사용하는 특별한 키워드. 논리 연산자라고도 한다.
AND 연산자 사용하기
이 문장은 판매처가 DLL01이고 가격이 4달러 이하인 제품의 ID, 제품 가격, 제품명을 가져온다. 판매처가 DLL01이지만 4달러보다 큰 행이 있다면 이 행은 검색되지 않는다. 또한 4달러 이하지만 판매처가 DLL01이 아닌 행은 검색되지 않는다.
AND: 지정된 모든 조건을 충족하는 행을 가져오도록 WHERE절에서 사용하는 키워드
OR 연산자 사용하기
OR은 DBMS에게 하나의 조건만 충족한다면, 그 행을 가져오라고 지시한다.
OR: 지정된 조건을 하나라도 만족하는 행을 가져오도록 WHERE절에서 사용하는 키워드
우선순위 이해하기
WHERE절은 수에 제한없이 AND와 OR 연산자를 가질 수 있다. 가격은 10달러 이상이면서 판매처가 DLL01이거나 BRS01인 모든 제품을 검색하고 싶다고 하자.
4개의 행이 10달러보다 작은 것을 보아 제대로 필터링이 되지 않았다는 것을 알 수 있다. 이유는 연산자 우선순위이기 때문인데, SQL에서는 OR연산자 전에 AND 연산자를 처리한다. SQL이 이와 같은 WHERE절을 만나면 판매처가 BRS01이면서 10달러 이상인 제품과 가격에 관계 없이 판매처가 DLL01인 제품을 가져온다.
이를 해결하기 위해서는 괄호를 붙여주면 된다.
괄호가 OR나 AND 연산자보다 우선순위가 높기 때문에 DBMS는 괄호 안에 있는 OR 연산자를 먼저 필터링한다.
IN 연산자 사용하기
IN연산자는 조건의 범위를 지정할 때 사용한다. IN연산자의 괄호 안에는 조건이 나열되고 콤마로 구분된다.
IN은 OR와 같은 일을 수행한다는 생각이 든다면 제대로 이해하고 있는 것이다.
IN을 사용하는 이유는 여러 장점이 있기 때문이다.
조건이 많을 때 IN 연산자 문법이 OR보다 훨씬 깔끔하고 읽기 편하다.
AND나 OR 연산자와 함께 사용할 때 연산자 우선순위를 관리하기 편하다.
IN 연산자는 OR연산자 리스트를 처리하는 것보다 속도가 빠르다.
IN 연산자의 가장 큰 장점은 SELECT 구문을 포함할 수 있다는 것이다. 이것은 매우 동적인 WHERE절을 만들 수 있게 해준다.
IN: WHERE절에서 OR 비교로 일치하는 값을 찾기 위해 조건을 지정하는 키워드
NOT 연산자 사용하기
WHERE절의 NOT 연산자는 뒤에 어떤 조건이 오더라도 뒤의 값을 무효화한다. NOT키워드는 필터링하는 컬럼 뒤가 아니라 앞에 적는다.
NOT: WHERE절에서 조건을 부정하기 위해 사용하는 키워드
NOT은 그 다음에 나오는 조건을 부정한다. 그래서 vend_id가 DLL01이 아닌 제품을 가져온다.
<>연산자를 이용해도 같은 값이 나온다.
왜 NOT을 사용할까. NOT은 좀 더 복잡한 절에서 유용하다. IN과 NOT을 함께 사용하면 조건과 맞지 않는 행을 쉽게 찾을 수 있다.
'개발 > 데이터베이스' 카테고리의 다른 글
6장(계산 필드 생성하기) (0) | 2023.04.10 |
---|---|
5장(Like 연산자 사용하기) (0) | 2023.04.04 |
3장(WHERE절 사용하기) (0) | 2023.03.22 |
2장(데이터 정렬하기) (0) | 2023.03.18 |
1장(데이터 가져오기) (0) | 2023.03.16 |