이번 시간에는 데이터 검색을 위한 몇 가지 Keywords에 대해 실습해 보겠습니다. 오라클에서 데이터 검색을 할 때 사용되는 Keywords에는 조건문의 부정을 나타내는 NOT, 특정 값의 범위를 지정하는 BETWEEN, OR 연산자와 비슷한 IN, 와일드 카드를 사용할 수 있는 LIKE, 널 값을 찾을 때 쓰는 IS NULL, 중복된 열을 가려내는 DISTINCT 등이 있습니다.

- NOT
- 이름에서 드러나듯이 NOT은 조건문의 부정을 표현할 때 사용합니다.
- NOT은 바로 뒤에 오는 조건문 하나에만 적용됩니다.
- NOT의 위치는 주로 Column Name 앞에 오게 됩니다.
- NOT이 AND와 OR와 함께 사용된 경우 NOT은 바로 뒤의 조건 하나에만 적용된다. 만약 여러 조건에 적용하려면 괄호로 묶어주면 됩니다.
- “NOT =”와 같이 쓰면 문법 오류(Syntax Error)가 발생합니다.
- 예를 하나 들어 볼까요…EMP테이블에서 JOB_CODE가 ‘SS’가 아닌 ROW의 LAST_NAME, JOB_CODE를 표시하려 한다면…
SELECT EMP_NUM, LAST_NAME, JOB_CODE
FROM EMP
WHERE NOT JOB_CODE = ‘SS’ ; - AND나 OR 연산자를 사용할 경우를 한번 볼까요?
SELECT EMP_NUM, LAST_NAME, JOB_CODE
FROM EMP
WHERE NOT JOB_CODE = ‘SS’
AND EMP_NUM >= ‘10002’; - 위와 비슷한 예제인데 다음과 같이 NOT 뒤의 문장을 괄호로 묶으면 어떨까요? 직접 실행해서 바로 위의 예제와 결과가 어떻게 다른지 한번 알아보세요.
SELECT EMP_NUM, LAST_NAME, JOB_CODE
FROM EMP
WHERE NOT (JOB_CODE = ‘SS’
AND EMP_NUM >= ‘10002’);
- BETWEEN
- 조건문에서 특정 값의 범위를 지정할 때 사용합니다.
- 최소값을 AND의 왼쪽에, 최대값을 오른쪽에 표기합니다.
- 최소값과 최대값은 자신을 포함합니다.
- BETWEEN을 부정하려면 아래와 같은 2가지 방법으로 가능합니다.(NOT의 위치를 잘 보세요.)
- WHERE EMP_NUM NOT BETWEEN ‘10001’ AND ‘99999’
- WHERE NOT EMP_NUM BETWEEN ‘10001’ AND ‘99999’
- 직접 실습해 봅시다.
SELECT EMP_NUM, LAST_NAME
FROM EMP
WHERE EMP_NUM BETWEEN ‘10003’ AND ‘10005’;
결과가 예측이 되겠지만 직접 한번 입력해 보세요.
위 문장의 마지막 줄은 다음과 같이 바꿔 써도 됩니다.
WHERE EMP_NUM >= ‘10003’ AND EMP_NUM <= '10005';
- IN
- 컬럼(필드)의 값이 괄호 안의 List 값에 해당하는 경우 해당 행(레코드)를 돌려줍니다.
- 결국 IN은 OR 논리 연산자로 바꿔서 표현할 수 있습니다.
- IN의 부정은 아래의 두 가지 방법이 있습니다.(IN의 위치를 주목하세요.)
- WHERE JOB_CODE NOT IN (‘PE’, ‘PS’, ‘CS’)
- WHERE NOT JOB_CODE IN (‘PE’, ‘PS’, ‘CS’)
- 위의 문장은 결국 이렇게 됩니다.
WHERE JOB_CODE != ‘PE’ AND JOB_CODE != ‘PS’ AND JOB_CODE != ‘CS’
- 자, 실습해 봅시다.
SELECT *
FROM EMP
WHERE JOB_CODE IN (‘PE’, ‘PS’, ‘CS’);
위의 마지막 WEHRE 절을 OR 문으로 바꿔 쓰면 어떻게 될까요?
WHERE JOB_CODE = ‘PE’ OR JOB_CODE = ‘PS’ OR JOB_CODE = ‘CS’
벌써 토요일이네요. 이상 동주 아빠 손병목이었습니다.