SQL, AND OR (NOT) IN 연산자 사용 방법
- Database
- 2022. 11. 8.
SELECT, UPDATE, DELETE 문 사용 시 WHERE 절과 함께 AND
, OR
연산자를 자주 사용합니다. 특정한 조건에 부합하는 컬럼을 골라내서 쿼리를 수행하기 위해서입니다. AND와 OR의 차이와 함께 대신 사용할 수 있는 NOT IN
과 IN
도 알아보겠습니다.
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 '김%'
'Database' 카테고리의 다른 글
MYSQL 테이블 Collation 확인, 변경 방법 (Character Set과의 차이) (0) | 2022.11.28 |
---|---|
MYSQL ibdata1 파일 삭제해도 될까? 용량 줄이는 방법 (0) | 2022.11.15 |
SQL UNION 사용 방법 (조회 결과 병합) (0) | 2022.10.04 |
SQL Server 서로 다른 DB 테이블 조인 방법 (0) | 2022.09.20 |
RDBMS vs NoSQL 차이 (NoSQL 사용 이유) (0) | 2022.09.04 |