SQL, AND OR (NOT) IN 연산자 사용 방법

SELECT, UPDATE, DELETE 문 사용 시 WHERE 절과 함께 AND, OR 연산자를 자주 사용합니다. 특정한 조건에 부합하는 컬럼을 골라내서 쿼리를 수행하기 위해서입니다. AND와 OR의 차이와 함께 대신 사용할 수 있는 NOT ININ도 알아보겠습니다.

AND

[구문]

SELECT * FROM 테이블명 WHERE 조건1 AND 조건2 AND 조건3 ...

AND는 명시한 조건이 모두 참(TRUE)인 경우를 의미합니다.

 

[예시]

SELECT * FROM CUSTOMER WHERE Country='한국' and City='서울';

이런 경우 CUSTOMER 테이블에서 Country가 한국이고 City가 서울인 레코드를 조회합니다.

 

컬럼이 특정 값이 아니어야 한다는 조건도 !=를 이용해 사용 가능합니다. 예를 들어, CUSTID가 1, 2, 3이 아닌 고객만 조회하고 싶다면 아래와 같이 쿼리문을 사용할 수 있습니다.

SELECT * FROM CUSTOMER WHERE CUSTID!='1' and CUSTID!='2' and CUSTID!='3';

조회는 가능하지만 쿼리문이 비효율적으로 보입니다. 이럴 때 대신 사용할 수 있는 것이 NOT IN입니다.

NOT IN

위 쿼리는 아래와 바꿔서 같이 사용할 수 있습니다.

SELECT * FROM CUSTOMER WHERE CUSTID NOT IN ('1','2','3');

OR

[구문]

SELECT * FROM 테이블명 WHERE 조건1 OR 조건2 OR 조건3 ...

OR은 조건 중 하나라도 참인 경우를 의미합니다.

 

[예시]

SELECT * FROM CUSTOMER WHERE CUSTID='1' or CUSTID='2' or CUSTID='3';

이 경우 CUSTID가 1 또는 2 또는 3인 레코드를 조회합니다.

IN

이 역시 IN 연산자를 사용하면 좀 더 간단하게 표현할 수 있습니다.

SELECT * FROM CUSTOMER WHERE CUSTID IN ('1','2','3');

우선순위

사칙연산과 비슷하게 AND 연산자는 OR 연산자에 우선합니다. AND와 OR 조건을 함께 쓰면 AND 연산을 우선으로 처리해준다는 의미입니다. 이 역시 당연하긴 합니다. and로 붙인 조건은 반드시 참이어야 전체 조건을 만족시키니까요. 

 

[예시]

SELECT * FROM employees WHERE title='사원' OR title='대리' AND salary > 5000;

위 예시로 쿼리를 수행하면 salary가 5000을 초과하는 레코드를 먼저 찾고 그중에서 title이 사원 또는 대리인 레코드를 찾습니다.

 

우선순위를 변경하려면 괄호()를 사용하면 됩니다.

SELECT * FROM employees WHERE (title = '사원' OR Salary > 5000)
AND Last_name LIKE '김%'
반응형

댓글

Designed by JB FACTORY