본문 바로가기
초보자를 위한 SQL 200제/이론 & 예제

015 논리 연산자 배우기 (AND, OR, NOT)

by Hwanii_ 2023. 7. 12.
728x90

논리 연산자를 이용해서 WHERE 절에서 여러 개의 조건을 줄 수 있다.

 

여러 개의 조건은 AND 또는 OR 을 이용 해서 결합 할 수 있다.

 

1.

직업이 SALESMAN 이고 월급이 1200 이상인 사원들의,

이름, 월급, 직업을 출력 하기.

 

-- 직업이 SALESMAN 이고 월급이 1200 이상인 사원들의,
-- 이름, 월급, 직업을 출력 하기.

SELECT ename, sal, job
FROM emp
WHERE job = 'SALESMAN' AND sal >= 1200;

ENAME             SAL JOB      
---------- ---------- ---------
MARTIN           1250 SALESMAN 
ALLEN            1600 SALESMAN 
TURNER           1500 SALESMAN 
WARD             1250 SALESMAN

 

WHERE 절에 사용된 AND 연산자로 결합된 두 조건이 모두 TRUE 값 이기 때문에,

 

데이터가 잘 검색 되서 출력된 모습 이다. ( TRUE AND TRUE )

 

만약에 하나라도 FALSE 값 이였으면 데이터는 반환 되지 않는다.

 

AND 로 묶였기 때문이다.

 

FALSE AND TRUE ?

>> 선택된 레코드가 없다고 출력.

 

TRUE AND FALSE ?

>> 선택된 레코드가 없다고 출력.

 

SELECT ename, sal, job
FROM emp
WHERE job = 'test1234' AND sal >= 1200;

선택된 행 없음

 

2.

반면에 OR로 묶인 조건은, 둘중에 하나라도 TRUE 값이면 데이터를 반환 한다.

 

만약 NULL 이 조건값에 묶인 경우는 어떻게 될까 ?

 

헷갈리므로, 아래에 표를 작성 해서 정리 해보자.

 

질문 TRUE AND NULL >> ? TRUE OR NULL >> ?
해설 TRUE AND TRUE >> TRUE
TRUE AND FALSE >> FALSE
TRUE OR TRUE >> TRUE
TRUE OR FALSE >> TRUE
TRUE AND NULL >> NULL TRUE OR NULL >> TRUE

 

NULL 값은, 알 수 없는 값 (데이터) 이기 때문에, 이 자체가 TRUE 인지 FALSE 인지 알 수 없다.

 

그래서, AND 로 묶인 NULL은 NULL을 반환 해 준다.

 

반면에, OR 로 묶인 NULL은 둘중에 하나라도 이기 때문에,

NULL이 있던 말던 NULL은 반환 하지 않는 구조 이다.

 

 

 

3.

AND 연산자 진리 연산표

AND TRUE FALSE NULL
TRUE TRUE FALSE NULL
FALSE FALSE FALSE FALSE
NULL NULL FALSE NULL

 

 

 

OR 연산자 진리 연산표

OR TRUE FALSE NULL
TRUE TRUE TRUE TRUE
FALSE TRUE FALSE NULL
NULL TRUE NULL NULL

 

 

 

NOT 연산자 진리 연산표

NOT TRUE FALSE NULL
TRUE FALSE TRUE NULL
반응형