책 내용 질문하기
온라인 채첨결과 문의
도서
2026 시나공 컴퓨터활용능력1급 실기 기본서
페이지
375
조회수
59
작성일
2026-09-11
작성자
권*산
첨부파일

2행을 수정합니다. 라는 문구가 뜨긴 했는데 그전에 제가 작성한 쿼리 식에서 잘못된게 있어서 모든 비고에 '★관리대상고객' 적혀있는 상황입니다. 그 후에 식을 작성하고 다시 쿼리를 실행해봐도 비고에 적힌건 바뀌지는 않는데 이런 경우에는 어떻게 채점되나요?



비고가 적힌 테이블은 <고객> 테이블입니다.


그리고 해설과 똑같이 작성하였는데 결과에서 이렇게 뜹니다.

쿼리 비교 X [관리대상고객처리] 쿼리 (UPDATE 고객 INNER JOIN 도서대여 ON 고객.고객코드 = 도서대여.고객코드 SET 고객.비고 = "★관리대상고객" WHERE (((고객.고객코드) Not In (select 고객코드 from 도서대여 where 대여일자 between #2023-05-01# and #2023-06-30#))); )이 정답(UPDATE 고객 SET 고객.비고 = "★관리대상고객" WHERE (((고객.고객코드) Not In (select 고객코드 from 도서대여 where 대여일자 between #2023-5-1# and #2023-6-30#))); )과 다릅니다.


뭐가 문제 일까요?

답변
2026-09-14 10:14:38

안녕하세요.

먼저 <고객> 테이블의 모든 비고에 ★관리대상고객이 입력된 것은 처음 잘못 작성한 업데이트 쿼리를 실행하면서 실제 테이블 데이터가 변경된 상태입니다.

업데이트 쿼리는 다시 올바르게 작성하여 실행하더라도 이전에 잘못 변경된 값을 원래대로 되돌려 주지는 않습니다. 따라서 수정된 쿼리를 실행했을 때 “2행을 수정합니다.”라고 정상적으로 표시되어도, 이전에 잘못 입력된 다른 레코드의 ★관리대상고객은 그대로 남아 있게 됩니다.

연습 중이라면 가장 확실한 방법은 원본 문제 파일을 다시 열어 해당 문제를 작업하는 것입니다. 업데이트 쿼리는 실행하면 원본 테이블의 값이 실제로 변경되므로, 잘못 실행한 뒤에는 쿼리만 수정해서는 테이블이 원래 상태로 복구되지 않습니다.

그리고 현재 채점 결과에서 가장 중요한 문제는 날짜 표기 방식이 아니라 다음 부분입니다.

작성한 쿼리에는

UPDATE 고객 INNER JOIN 도서대여
ON 고객.고객코드 = 도서대여.고객코드

와 같이 바깥쪽에 <도서대여> 테이블이 연결되어 있습니다.

하지만 정답은

UPDATE 고객
SET 고객.비고 = "★관리대상고객"
WHERE 고객.고객코드 Not In
(SELECT 고객코드
 FROM 도서대여
 WHERE 대여일자 Between #2023-5-1# And #2023-6-30#);

처럼 바깥쪽 업데이트 대상에는 <고객> 테이블만 있어야 합니다.

<도서대여> 테이블은 Not In의 하위 쿼리 안에서만 사용합니다. 바깥쪽에서 <도서대여>까지 INNER JOIN하면 도서대여 내역이 전혀 없는 고객은 처음부터 조회 대상에서 제외될 수 있으므로 정답 쿼리와 결과 자체가 달라질 수 있습니다.

따라서 쿼리 디자인 화면의 위쪽에 <고객>과 <도서대여>가 모두 추가되어 있다면 <도서대여> 테이블을 삭제하고 <고객> 테이블만 남긴 상태에서 작성하세요.

참고로

#2023-05-01#

과

#2023-5-1#

의 차이는 같은 날짜를 나타내므로 핵심적인 오류가 아닙니다. 이번 채점 오류의 핵심은 불필요한 INNER JOIN 도서대여가 추가된 것입니다.

그리고 현재 <고객> 테이블의 비고가 이미 모두 변경된 상태라면, 쿼리를 수정한 후에도 정상 결과를 확인하기 어려우므로 원본 파일에서 다시 작업하는 것을 권장합니다.

즐거운 하루 되세요.

  • 관리자
    2026-09-14 10:14:38

    안녕하세요.

    먼저 <고객> 테이블의 모든 비고에 ★관리대상고객이 입력된 것은 처음 잘못 작성한 업데이트 쿼리를 실행하면서 실제 테이블 데이터가 변경된 상태입니다.

    업데이트 쿼리는 다시 올바르게 작성하여 실행하더라도 이전에 잘못 변경된 값을 원래대로 되돌려 주지는 않습니다. 따라서 수정된 쿼리를 실행했을 때 “2행을 수정합니다.”라고 정상적으로 표시되어도, 이전에 잘못 입력된 다른 레코드의 ★관리대상고객은 그대로 남아 있게 됩니다.

    연습 중이라면 가장 확실한 방법은 원본 문제 파일을 다시 열어 해당 문제를 작업하는 것입니다. 업데이트 쿼리는 실행하면 원본 테이블의 값이 실제로 변경되므로, 잘못 실행한 뒤에는 쿼리만 수정해서는 테이블이 원래 상태로 복구되지 않습니다.

    그리고 현재 채점 결과에서 가장 중요한 문제는 날짜 표기 방식이 아니라 다음 부분입니다.

    작성한 쿼리에는

    UPDATE 고객 INNER JOIN 도서대여
    ON 고객.고객코드 = 도서대여.고객코드

    와 같이 바깥쪽에 <도서대여> 테이블이 연결되어 있습니다.

    하지만 정답은

    UPDATE 고객
    SET 고객.비고 = "★관리대상고객"
    WHERE 고객.고객코드 Not In
    (SELECT 고객코드
     FROM 도서대여
     WHERE 대여일자 Between #2023-5-1# And #2023-6-30#);

    처럼 바깥쪽 업데이트 대상에는 <고객> 테이블만 있어야 합니다.

    <도서대여> 테이블은 Not In의 하위 쿼리 안에서만 사용합니다. 바깥쪽에서 <도서대여>까지 INNER JOIN하면 도서대여 내역이 전혀 없는 고객은 처음부터 조회 대상에서 제외될 수 있으므로 정답 쿼리와 결과 자체가 달라질 수 있습니다.

    따라서 쿼리 디자인 화면의 위쪽에 <고객>과 <도서대여>가 모두 추가되어 있다면 <도서대여> 테이블을 삭제하고 <고객> 테이블만 남긴 상태에서 작성하세요.

    참고로

    #2023-05-01#

    과

    #2023-5-1#

    의 차이는 같은 날짜를 나타내므로 핵심적인 오류가 아닙니다. 이번 채점 오류의 핵심은 불필요한 INNER JOIN 도서대여가 추가된 것입니다.

    그리고 현재 <고객> 테이블의 비고가 이미 모두 변경된 상태라면, 쿼리를 수정한 후에도 정상 결과를 확인하기 어려우므로 원본 파일에서 다시 작업하는 것을 권장합니다.

    즐거운 하루 되세요.

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