연산자 | 설명 |
BETWEEN a AND b | a와 b 사이에 있다. (a, b값 포함) |
IN (list) | list의 값 중 어느 하나와 일치 한다. |
LIKE | 문자 형태와 일치한다. (%, _ 사용) |
IS NULL | NULL 값을 갖는다. |
NOT BETWEEN a AND b | a와 b 사이에 있지 않다. (a, b값 포함하지 않음) |
NOT IN (list) | list의 값과 일치 하지 않는다. |
NOT LIKE | 문자 형태와 일치 하지 않는다. |
NOT IS NULL (10g에서는 IS NOT NULL을 쓴다.) | NULL값을 갖지 않는다. |
1. BETWEEN 연산자
: 두 값의 범위에 해당하는 행을 출력하기 위해 사용한다.
1) EMP 테이블에서 급여가 1300 에서 1500 사이의 사원의 성명, 담당업무, 급여, 부서 번호를 출력하여라.
SELECT ename, job, sal, deptno
FROM emp
WHERE sal BETWEEN 1300 AND 1500;
결과>
ENAME JOB SAL DEPTNO
-------------------- ------------------ ---------- ----------
TURNER SALESMAN 1500 30
MILLER CLERK 1300 10
BETWEEN AND 구문을 사용할 때는 작은 값이 앞에 와야 한다.
위의 예제에서 1500을 먼저 쓰고 1300을 뒤에 쓰면 선택된 레코드가 없다는 결과가 나온다.
BETWEEN AND 구문을 사용하지 않고 AND구문을 사용해서 sal >= 1300 AND sal <=1500 이라고 해도 같은 결과가 출력된다.
2. IN 연산자
: 목록에 있는 값에 대해서 출력하기 위해 사용한다.
1) EMP 테이블에서 사원번호가 7902, 7788, 7566인 사원의 사원번호, 성명, 담당업무, 급여, 입사일자를 출력하여라.
SELECT empno, ename, job, sal, hiredate
FROM emp
WHERE empno IN (7902, 7788, 7566);
결과>
EMPNO ENAME JOB SAL HIREDATE
----- -------------------- ------------------ ---------- --------
7566 JONES MANAGER 2975 81/04/02
7788 SCOTT ANALYST 3000 87/04/19
7902 FORD ANALYST 3000 81/12/03
IN 구문을 OR절을 사용해서 empno = 7902 OR empno = 7788 OR empno = 7902 와 같이 사용해도 같은 결과가 출력된다.
3. LIKE 연산자
1) 검색 STRING 값에 대한 와일드 카드 검색을 위해서 LIKE연산자를 사용한다.
2) 검색 조건은 LITERAL 문자나 숫자를 포함할 수 있다.
3) %는 문자가 없거나 하나 이상의 문자를, 즉 *와 같이 모든 것을 의미하고, _는 하나의 문자, 즉 ?와 같은 와일드카드로 사용된다.
4) 패턴 일치 문자를 조합할 수 있다.
5) %나 _에 대해서 검색하기 위해서는 Escape 식별자를 이용할 수 있다.
예를 들어 X_Y가 포함된 값을 찾고 싶은데 _는 와일드카드 문자이므로 이 기능을 없애야 한다.
그럴 때는 뒤에 ESCAPE문자를 지정해서 사용하면 된다.
예) WHERE name LIKE '%X\_Y%' ESCAPE '\';
ESCAPE문자를 \로 지정했다. \말고 다른 것으로 지정해도 된다.
6) EMP 테이블에서 입사일자가 82년도에 입사한 사원의 사번, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하여라.
SELECT empno, ename, job, sal, hiredate, deptno
FROM emp
WHERE hiredate LIKE '82%';
위와 같이 명령을 내리면 hiredate 칼럼에 속한 투플 중에서 82로 시작하는 값은 모두 출력된다.
4. IS NULL 연산자
NULL값을 조회할 때 사용한다.
SELECT empno, ename, job, sal, hiredate, deptno
FROM emp
WHERE comm IS NULL;
위와 같이 명령을 내리면 comm(보너스)이 NULL값인 레코드는 모두 출력된다.
5. NOT BETWEEN a AND b, NOT IN, NOT LIKE, NOT IS NULL은 앞서 설명한 연산자들의 반대의 명령을 실행하는 구문이라고 이해하자.