조건에 맞는 데이터만 조회하기 위해 사용합니다.
WHERE 절에 기술한 조건을 참(TRUE)으로 만족하는 행들만 필터링해 조회합니다.
= : 같은 값
!=, <> : 다른 값
> : 클때
>= : 크거나 같을때
< : 작을때
<= : 작거나 같을때
SELECT *
FROM emp
WHERE deptno != 20;
SELECT *
FROM users
WHERE userid = 'brown';
SELECT *
FROM emp
WHERE hiredate >= TO_DATE('1981/03/01', 'YYYY/MM/DD');
SELECT *
FROM emp
WHERE 1=1;
SELECT *
FROM emp
WHERE 2=1;
대상자 BETWEEN 시작값 AND 종료값
대상자, 시작값, 종료값이 필요한 삼항 연산자입니다.
포함(이상, 이하)의 개념으로, 시작값과 종료값 사이의 데이터를 조회합니다.
SELECT *
FROM emp
WHERE deptno BETWEEN 10 AND 20;
대상자 IN (비교할 값1, 값2, 값3....)
비교값으로 여러 개가 올 수 있지만, 비교 값들을 하나의 항으로 묶어서 보기에 이항 연산자로 분류합니다.
SELECT *
FROM emp
WHERE deptno IN(10, 20);
SELECT *
FROM emp
WHERE deptno = 10 OR deptno = 20;
NOT IN 연산자 사용 시 주의점
: IN에 NOT을 붙여 부정형을 만들 수 있습니다.
단, 비교값 중 NULL이 포함되면 데이터가 조회되지 않습니다.
SELECT *
FROM emp
WHERE mgr IN (7698, 7839, NULL);
-->> WHERE mgr = 7698 OR mgr = 7839 OR mgr IS NULL;
NULL인 값은 조회되지 않을 겠지만
IN(OR)에서는 나머지 값들이 참인 값이 출력
SELECT *
FROM emp
WHERE mgr NOT IN (7698, 7839, NULL);
-->> mgr != 7698 AND mgr != 7839 AND mgr != NULL
NULL항과 AND으로 묶인 상태이기에 무조건 FALSE
에러는 나지 않지만 값이 나오지도 않음
대상자 LIKE ‘비교할 문자열%’
대상자 LIKE ‘비교할 문자열_’
대상자와 비교할 문자열이 필요한 이항 연산자입니다.
문자열 패턴 매칭 결과를 조회합니다.
검색 기능을 구현할 때 쓰입니다.
% : 문자열 뒤에 0개 이상의 문자가 있을 때 (몇 개의 문자가 오는지 모를 때)
_ : 문자열 뒤에 1개의 문자가 있을 때 (몇 개의 문자가 오는지 알 때, _를 여러 개 사용해 지정해줌)
SELECT *
FROM users
WHERE userid LIKE 'c%';
SELECT *
FROM users
WHERE userid LIKE '%l%';
SELECT *
FROM users
WHERE userid LIKE 'c___';
NULL 비교 값
NULL 값은 =, != (비교연산자) 쓸 수 없기 때문에 IS를 사용합니다.
SELECT *
FROM emp
WHERE comm IS NULL;
SELECT *
FROM emp
WHERE comm IS NOT NULL;
- 연산자
- 산술연산
- 문자열결합
- 비교연산
- IS, [NOT]
- [NOT] BETWEEN
- NOT
- AND
- OR
*. ()
연산은 위의 우선순서를 따라 실행됩니다.
모두 외울 필요는 없고, AND가 OR 보다 먼저 실행된다는 것 정도만 알아둡니다.
헷갈리는 경우 ()를 사용해 우선순위를 조정할 수 있으니까요.
SELECT *
FROM emp
WHERE ename = 'SMITH' OR ename = 'ALLEN' AND job = 'SALESMAN';
SELECT *
FROM emp
WHERE (ename = 'SMITH' OR ename = 'ALLEN') AND job = 'SALESMAN';