책 내용 질문하기
불일치 쿼리의 isnull 기출 14
도서
2026 한 권으로 끝내는 시나공 컴활 1급 필기+실기 (컴퓨터활용능력 1급)
페이지
229
조회수
89
작성일
2026-04-25
작성자
안*진
첨부파일


기출14번에 isnull은 조건에 isnull이라고만 쓰면 어떤 필드에 비어있는 값을 찾아주는 게 아니라 테이블의 필드와 연결되어 있는 필드를 자동 비교하여 없는 값을 찾아주는데

이 때, 테이블 설정은 조인이 실패한 값을 알아내는데 적절한 범위가 작은 테이블(주문목록 테이블)로 지정하는 건가요?

일치 불일치의 isnull을 활용한 테이블 지정을 잘 이해하고 있는건지 잘 모르겠습니다.
not in(select)가 범위가 작은 테이블로부터 가져온 필드에서 그 외의 값들을 큰 테이블값에서 찾겠다는 건 이해가 됩니다.

답변
2026-04-27 10:37:03

안녕하세요.

불일치 쿼리의 핵심 논리는 '외부 조인(Left/Right Join)'과 'Null 값 찾기'의 조합입니다.

1. 테이블 지정의 기준: "기준"과 "비교 대상"

불일치 쿼리를 만들 때 가장 중요한 것은 어떤 테이블을 기준(주 테이블)으로 삼고, 어떤 테이블을 비교 대상(관계 테이블)으로 삼느냐입니다.

기준 테이블 (A): 내가 결과로 보고 싶은 전체 목록이 들어있는 테이블입니다. (예: 전체 도서 목록, 전체 회원 목록)

비교 대상 테이블 (B): 특정 기록(주문, 활동 등)이 남는 테이블로, 보통 기준 테이블보다 데이터 범위가 좁거나 상세한 내역이 담깁니다. (예: 주문 목록, 수강 신청 내역)

"한 번도 주문되지 않은 도서"를 찾는다면

도서 테이블이 기준이 됩니다.

주문 목록 테이블이 비교 대상이 됩니다.


2. Is Null이 작동하는 논리적 과정

불일치 쿼리에서 Is Null을 조건에 쓰는 이유는 조인 결과 생기는 '빈틈'을 찾기 위해서입니다.

조인 실행 : '도서' 테이블과 '주문 목록' 테이블을 '도서번호'로 연결하되, 도서 테이블의 모든 레코드를 포함하는 '왼쪽 외부 조인(Left Join)'을 설정합니다.

가상 테이블 형성 : 이렇게 조인하면 주문 내역이 있는 도서는 옆에 주문 정보가 붙지만, 주문된 적 없는 도서는 옆의 주문 정보 칸이 모두 비어(Null) 있게 됩니다.

조건 적용: 이때 비교 대상 테이블(주문 목록)의 필드에 Is Null 조건을 걸면, 주문 정보가 붙지 않은(즉, 조인이 실패한) '도서'들만 화면에 남게 됩니다.

따라서 테이블 설정은 조인이 실패한 쪽의 필드를 확인하기 위해 비교 대상인 '범위가 작은 테이블(주문 목록)'의 필드에 Is Null을 지정하는 것이 맞습니다.

3. Not In (Select) 방식과의 비교

이해하신 것처럼 두 방식은 논리적으로 동일한 결과를 냅니다.

Not In 방식 : "큰 테이블의 PK가 '작은 테이블의 PK 목록'에 포함되지 않은 것만 가져와라." (필터링 중심)

Is Null 방식 : "두 테이블을 일단 합쳐(Join)보고, 정보가 안 넘어온(Null) 빈 껍데기 레코드만 골라내라." (구조적 비교 중심)


불일치 쿼리 마법사를 사용할 때나 디자인 보기에서 설정할 때의 순서는 다음과 같습니다.

첫 번째 테이블 선택: 데이터를 가져오려는 원본(마스터 테이블/큰 테이블).

두 번째 테이블 선택: 대조해 볼 대상(내역 테이블/작은 테이블).

Is Null 지정: 두 번째 테이블에서 가져온 필드에 조건을 입력.

"조인이 실패한 값을 알아내기 위해 비교 대상이 되는 테이블(주문 목록 등)의 필드를 체크한다"는 이해는 정확한 방향입니다.

즐거운 하루 되세요.

  • 관리자
    2026-04-27 10:37:03

    안녕하세요.

    불일치 쿼리의 핵심 논리는 '외부 조인(Left/Right Join)'과 'Null 값 찾기'의 조합입니다.

    1. 테이블 지정의 기준: "기준"과 "비교 대상"

    불일치 쿼리를 만들 때 가장 중요한 것은 어떤 테이블을 기준(주 테이블)으로 삼고, 어떤 테이블을 비교 대상(관계 테이블)으로 삼느냐입니다.

    기준 테이블 (A): 내가 결과로 보고 싶은 전체 목록이 들어있는 테이블입니다. (예: 전체 도서 목록, 전체 회원 목록)

    비교 대상 테이블 (B): 특정 기록(주문, 활동 등)이 남는 테이블로, 보통 기준 테이블보다 데이터 범위가 좁거나 상세한 내역이 담깁니다. (예: 주문 목록, 수강 신청 내역)

    "한 번도 주문되지 않은 도서"를 찾는다면

    도서 테이블이 기준이 됩니다.

    주문 목록 테이블이 비교 대상이 됩니다.


    2. Is Null이 작동하는 논리적 과정

    불일치 쿼리에서 Is Null을 조건에 쓰는 이유는 조인 결과 생기는 '빈틈'을 찾기 위해서입니다.

    조인 실행 : '도서' 테이블과 '주문 목록' 테이블을 '도서번호'로 연결하되, 도서 테이블의 모든 레코드를 포함하는 '왼쪽 외부 조인(Left Join)'을 설정합니다.

    가상 테이블 형성 : 이렇게 조인하면 주문 내역이 있는 도서는 옆에 주문 정보가 붙지만, 주문된 적 없는 도서는 옆의 주문 정보 칸이 모두 비어(Null) 있게 됩니다.

    조건 적용: 이때 비교 대상 테이블(주문 목록)의 필드에 Is Null 조건을 걸면, 주문 정보가 붙지 않은(즉, 조인이 실패한) '도서'들만 화면에 남게 됩니다.

    따라서 테이블 설정은 조인이 실패한 쪽의 필드를 확인하기 위해 비교 대상인 '범위가 작은 테이블(주문 목록)'의 필드에 Is Null을 지정하는 것이 맞습니다.

    3. Not In (Select) 방식과의 비교

    이해하신 것처럼 두 방식은 논리적으로 동일한 결과를 냅니다.

    Not In 방식 : "큰 테이블의 PK가 '작은 테이블의 PK 목록'에 포함되지 않은 것만 가져와라." (필터링 중심)

    Is Null 방식 : "두 테이블을 일단 합쳐(Join)보고, 정보가 안 넘어온(Null) 빈 껍데기 레코드만 골라내라." (구조적 비교 중심)


    불일치 쿼리 마법사를 사용할 때나 디자인 보기에서 설정할 때의 순서는 다음과 같습니다.

    첫 번째 테이블 선택: 데이터를 가져오려는 원본(마스터 테이블/큰 테이블).

    두 번째 테이블 선택: 대조해 볼 대상(내역 테이블/작은 테이블).

    Is Null 지정: 두 번째 테이블에서 가져온 필드에 조건을 입력.

    "조인이 실패한 값을 알아내기 위해 비교 대상이 되는 테이블(주문 목록 등)의 필드를 체크한다"는 이해는 정확한 방향입니다.

    즐거운 하루 되세요.

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.