Oracle - SELECT 조건절


목차



산술연산자

=

조회하려는 column에 조건을 부여해서 선택적으로 column을 조회(SELECT) 할 수 있는 기능이다.

1
SELECT * FROM emp WHERE deptno=10;

위의 쿼리를 입력하면 아래처럼 데이터가 분류되서 출력됨을 알 수 있다.


<>

조건에 반하는 결과만 조회(SELECT) 할 수도 있다.

1
SELECT * FROM emp WHERE deptno <> 10;

deptno가 10이 안되는 데이터만 출력됨을 알 수 있다.


NOT

NOT 키워드를 사용하여 작성할 수 있다.

1
SELECT * FROM emp WHERE NOT deptno = 10 AND NOT deptno=20; 

WHERE 절 조건으로 deptno=10아니거나 deptno=20 이 아닌 조건으로 조회를 해보았다. deptno=30인 데이터만 조회된 것을 확인할 수 있다.


논리조건 <, >, <=, >=

int형 또는 ASCII코드의 순서에 따라 데이터를 조회(SELECT)할 수도 있다.

1
2
SELECT empno, ename, job, hiredate, sal 
FROM emp WHERE sal > 2000;

emp 테이블에서 empno, ename, job, hiredate, sal 컬럼을 조회(SELECT)하면서 sal 컬럼의 데이터가 2000을 초과할 경우를 조건으로 설정하면 아래의 결과처럼 sal의 데이터가 2000이 넘는 데이터만 조회된다.


BETWEEN

  • 범위를 지정하여 조회할 경우에는 between 을 사용하여 조회할 수 있다.

    1
    2
    3
    4
    5
    6
    7
    SELECT empno, ename, job, hiredate, sal 
    FROM emp WHERE sal > 3000 and sal < 4000;

    // 위의 쿼리를 BETWEEN 키워드를 사용하여 바꿔보았다.

    SELECT empno, ename, job, hiredate, sal
    FROM emp WHERE (sal between 3000 and 4000);

IN

  • 조건 중 공통 column일 경우, 사용할 수 있는 sql 키워드

    1
    2
    3
    4
    5
    6
    7
    SELECT empno, ename, job
    FROM emp WHERE job = 'salesman' or job = 'analyst';

    // 위의 쿼리를 in 키워드를 사용하여 바꿔보았다.

    SELECT empno, ename, job
    FROM emp WHERE job in ('salesman', 'analyst');

LIKE

  • 문자열에 대한 연산을 할 수 있다.

  • ename 컬럼 데이터가 A로 시작하는 데이터 조회

1
2
SELECT ename, empno FROM emp 
WHERE ename LIKE 'A%';

  • ename 컬럼 데이터에 A가 포함되는 데이터 조회
1
SELECT ename, empno  FROM emp WHERE ename LIKE '%A%';

  • ename 컬럼의 데이터의 두번째 알파벳이 A인 데이터조회
  • 언더바(_) 갯수만큼 조회하려는 알파벳의 해당 단어에서의 순위를 뒤로 미룰수 있다.
1
SELECT ename, empno FROM emp WHERE ename LIKE '_A%';

  • ename의 데이터가 세글자인 데이터 조회
1
SELECT ename, empno FROM emp WHERE ename LIKE '___';


NULL

  • NULL은 연산처리할 수 없으므로 is NULL, is NOT NULL 을 통해 조회(SELECT)할 수 있다.
  • 보너스(comm)가 없는 직원들의 사원번호, 이름, 임금, 임금과 보너스의 합 조회.

  • 상관이 없는 사람, 즉 회사 대표를 조회하는 쿼리

  • null을 0으로 환산해서 연산하고 싶을 경우
    • Oracle 내부 함수인 nvl 함수를 통해 null에 해당하는 컬럼 데이터를 0으로 바꿔서 조회하고 연산할 수 있다. 실제 테이블 내 데이터를 변경하는게 아닌 조회시에만 변경해서 조회할 뿐이다.
    • NVL함수
    • Oracle Document - nvl