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 |
반응형
'초보자를 위한 SQL 200제 > 이론 & 예제' 카테고리의 다른 글
017 문자에서 특정 철자 추출하기 (SUBSTR) (0) | 2023.07.12 |
---|---|
016 대소문자 변환 함수 배우기 (UPPER, LOWER, INITCAP) (0) | 2023.07.12 |
014 비교 연산자 배우기 (IN) (0) | 2023.07.12 |
013 비교 연산자 배우기 (IS NULL) (0) | 2023.07.12 |
012 비교 연산자 배우기 (LIKE) (0) | 2023.07.12 |