where절은 True, False, Null 가운데 하나를 리턴하는 절이다.
SQL>select *
from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80/12/17 800 20
7499 ALLEN SALESMAN 7698 81/02/20 1600 300 30
7521 WARD SALESMAN 7698 81/02/22 1250 500 30
7566 JONES MANAGER 7839 81/04/02 2975 20
7654 MARTIN SALESMAN 7698 81/09/28 1250 1400 30
7698 BLAKE MANAGER 7839 81/05/01 2850 30
7782 CLARK MANAGER 7839 81/06/09 2450 10
7788 SCOTT ANALYST 7566 82/12/09 3000 20
7839 KING PRESIDENT 81/11/17 5000 10
7844 TURNER SALESMAN 7698 81/09/08 1500 0 30
7876 ADAMS CLERK 7788 83/01/12 1100 20
7900 JAMES CLERK 7698 81/12/03 950 30
7902 FORD ANALYST 7566 81/12/03 3000 20
7934 MILLER CLERK 7782 82/01/23 1300 10
위의 SQL문에 where절을 추가할 경우에는 위의 결과의 각 각의 로우가 후보행(candidate row)이 된다.
이 각 각의 로우들을 where절의 조건을 보고서 True인지, False인지, Null인지 검사를 하는데, True일 경우에는 그 후보행이 리턴되고, 아닐 경우에는 넘어가서 다음로우를 확인하는 방식으로 14개의 행을 검사하게 된다.
where절을 추가해서 다시 작성해보자.
SQL>select *
from emp
where deptno=30;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7499 ALLEN SALESMAN 7698 81/02/20 1600 300 30
7521 WARD SALESMAN 7698 81/02/22 1250 500 30
7654 MARTIN SALESMAN 7698 81/09/28 1250 1400 30
7698 BLAKE MANAGER 7839 81/05/01 2850 30
7844 TURNER SALESMAN 7698 81/09/08 1500 0 30
7900 JAMES CLERK 7698 81/12/03 950 30
6 개의 행이 선택되었습니다.
결국 부서번호가 30인 로우만 리턴이 되므로 결과는 위와 같게 된다.
지금까지 설명한 것은 where절을 사용했을 때 어떠한 과정으로 결과가 출력되는 것에 대해서 알아보았는데, 이러한 개념을 모르고 있다면 where절을 사용할 때 헷갈리게 되는 경우가 생기게 될 수 있다.
'SQL > ORACLE' 카테고리의 다른 글
오라클 DB DECODE (0) | 2014.02.12 |
---|---|
SQL 서브쿼리의 시작 (0) | 2014.02.12 |
오라클(DB) 프로시저 문법 (0) | 2014.02.12 |
[ORACLE]SELECT의 정의 (0) | 2014.02.12 |
[ORACLE]ORDER BY절 사용하기 (0) | 2014.02.12 |
[ORACLE]ALIAS란? (0) | 2014.02.12 |
[ORACLE]ALIAS란? (0) | 2014.02.12 |
[ORACLE]SELECT문 해석 순서 (0) | 2014.02.12 |