오라클 데이터 검색 – Keywords(1)

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

  1. 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’);

  2. 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';

  3. 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’


벌써 토요일이네요. 이상 동주 아빠 손병목이었습니다.

위로 스크롤