자료의 조회

  • 데이터베이스의 넓은 영역 중 주로 자료의 검색과 관련된 부분을 할 예정이다.
  • 자료검색을 위한 가장 기본적인 부분을 다루게 되며, 가장 주요한 부분이라도 말할 수 있다.


시작

  • 이전에 계산한 월 급여에 교통비가 10만원씩 지급된다면(짝수달은 20만원) 문장이 어떻게 바뀌는가 ?


SELECT EMP_NAME, 
	   100000 + SALARY/18, 
	   200000 + SALARY*2/18 
FROM TEMP; 



NULL의 사용

  • 널이란 컬럼에 값이 아무것도 없다는 뜻이다.

  • 널 값을 제대로 처리하지 못하게 되면 뜻하지 않은 결과가 반환되어 큰 낭패를 본다.

  • DML을 이용하여 자료를 다룰 때는 항상 NULL을 염두에 두고 다루어야 한다.

  • NUMBER형 자료를 NULL과 연산하면 결과는 항상 NULL이 된다.

  • 문자형 자료는 주로 조건절에서 비교될 때 주의 해야 한다.

  • 조건절에서는 숫자형도 마찬가지이다.

  • NULL이 포함될 우려가 있는ㄴ 컬럼을 이용할 때는 항상 NVL 함수를 이용하여 값을 치환시켜 사용하는 습관을 들여야 한다.

  • 숫자형 컬럼이나 변수에 NULL이 들어갈 우려가 있다면 0이나 1등 다른 적잘한 숫자로 치환을 한 후 연산에 사용한다.

  • 문자형 컬림이나 변수에 NULL이 들어갈 우려가 있다면 ''스페이스나 다른 특정 문자 값으로 치환하여 조건절에 이용한다.

  • 조건절에서 비교 연산자를 사용할 때도 NULL의 비교는 일반 값과 다르게 비교한다.

  • A라는 문자형 컬럼의 값이 1과 같으냐 또는 드르냐를 조건에서 비교할 때 다음과 같이 쓰게 된다.

    - 같은지 비교 : WHERE A = '1'
    - 다른지 비교 : WHERE A <> '1'
    
  • 하지만 A라는 문자형 컬럼의 값이 NULL인지를 비교하고 싶을 때는 다음과 같이 사용하면 된다.

    - 같은지 비교 : WHERE A IS NULL
    - 다른지 비교 : WHERE A IS NOT NULL
    
  • 절대로 A=NULL 또는 A<>NULL로 사용하면 안된다.

    - 에러가 발생하지는 않지만 의도한 바와 전혀 다른 결과가 나올 수 있기 때문이다.
    


NULL 값인 것을 제외하고 보기

  • TEMP 테이블에서 HOBBY(취미)가 NULL이 아닌 사람의 성명을 읽어오자.


SELECT EMP_NAME FROM TEMP WHERE HOBBY IS NOT NULL;



  • 동일한 결과가 나오는지 IS NOT NULL 대신 <> NULL 을 사용해보자.


SELECT EMP_NAME FROM TEMP WHERE HOBBY <> NULL;



  • TEMP 테이블에서 HOBBY가 NULL인 사람은 모두 없음이라고 값을 치환하여 가져오고 나머지는 그대로 값을 가져오자.


SELECT EMP_NAME,
	   NVL(HOBBY, '없음')
FROM TEMP;



  • TEMP의 자료 중 HOBBY의 값이 NULL인 사원을 등산으로 치환했을 때 HOBBY가 등산인 사람의 성명을 가져오는 문장을 작성해보자.


SELECT EMP_NAME FROM TEMP WHERE NVL(HOBBY, '등산') = '등산';


Leave a comment