[Database] 조건 검색 - NULL 을 이용한 검색


조건 검색 - NULL 을 이용한 검색

  • 검색 조건에서 속성의 값이 NULL인지 비교하기 ==> IS NULL 키워드 사용
  • 검색 조건에서 속성의 값이 NULL이 아닌지 비교하기 ==> IS NOT NULL 키워드 사용

  • 예제에 사용할 판매 데이터베이스

    • Customer 테이블
    • Items 테이블
    • Orders 테이블


  • Customer 테이블에서 주소(address)가 입력되지 않은 고객의 account, name을 검색하시오.

    • [TIP]

      • NULL인지 비교하기 위하여 속성이름=NULL을 사용하면 안됨
      • 투플을 수정 (UPDATE) 할 경우

        • UPDATE customer SET address=NULL WHERE account=’king’;
    • 옳은 질의문

      • SELECT account, name FROM customer WHERE address IS NULL;
    • 잘못된 질의문

    • SELECT account, name FROM customer WHERE address=NULL;

문자열 데이터 타입과 NULL 값

  • Customer 테이블에서 주소(address)가 입력된 고객의 이름(name)과 주소(address)를 검색하시오.

  • [TIP]

    • CHAR 데이터타입의 값을 ‘ ’와 같이 데이터를 전혀 입력하지 않은 것과 NULL은 다름
    • INT의 0 값은 NULL과 다름
    • 문자열 값이 입력되지 않은 속성은 NULL 값을 주는 것이 좋음
    • INT 값을 입력하지 않을 경우, DEFAULT를 사용하여 0 으로 초기화하는 것이 좋음

    • 옳은 질의문

      • SELECT name, address FROM customer WHERE address IS NOT NULL;
    • 잘못된 질의문

      • NULL 이 아닌 조건은 ‘ < > NULL ’을 사용하면 안됨.

      • SELECT name, address FROM customer WHERE address <> NULL;

    • 속성값은 ‘ ’와 같이 빈 문자열을 사용한 질의문

      • SELECT name, address FROM customer WHERE address=’’;

INT 테이터 타입의 NULL 크기 비교

  • Items 테이블에서 단가(price) 값을 입력하지 않은 제품의 코드(code), 이름(name)을 검색하시오.

    • SELECT code, name FROM items WHERE price IS NULL;
  • Items 테이블에서 단가(price)가 0원인 제품의 코드(code), 이름(name)을 검색하시오.

    • SELECT code, name FROM items WHERE price=0;
  • Items 테이블에서 단가가 2000원 미만인 제품의 코드(code), 제품명(name), 단가(price)를 검색하시오.

    • [TIP]
      • NULL 값은 숫자로 비교할 수 없다.
      • NULL 값은 다른 값과 크기를 비교하면 항상 FALSE 이다.

        price > 2000
        price < 2000
        price <> 2000
        price >= 2000
        price <= 2000
        price = 2000

    • SELECT code, name FROM items WHERE price < 2000;