책 내용 질문하기
2권 95페이지
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
95
조회수
330
작성일
2019-06-20
작성자
탈퇴*원
첨부파일

문제 3번같은경우 답이 SELECT SUM(psale) FROM Sale WHERE pid IN (SELECT id FROM Product WHERE name LIKE 'USB%');인데

SELECT SUM(psale) FROM Sale WHERE pid = (SELECT id FROM Product WHERE name LIKE 'USB%'); 이렇게 쓰면 틀린 답이 되나요?

 

그리고 SELECT 같은 것들 소문자로 쓰게 되면 틀리나요? mysql쓸때는 소문자도 가능했었던거같아 궁금해졌습니다!

답변
2019-06-21 11:24:39

안녕하세요 길벗수험서 운영팀입니다.

 

먼저 첫번째 질문의 경우 오답의 가능성이 큽니다.

해당 SQL 문은 교재에 나오지 않았지만 적합한 문법으로 적힌 문장입니다.

다만 where A = (select ~  의 경우 (select ~ 의 결과가 하나의 값을 반환할 때만 사용할 수 있습니다.

 

즉, SELECT id FROM Product WHERE name LIKE 'USB%' 의 결과로 나오는 id의 값이 1개일 때는 정답이 될 수 있으나, 값이 2개 이상이 나오는 경우 '서브쿼리의 열이 1개 보다 많다'는 오류가 발생합니다.

문제3에서는 실제 테이블의 레코드가 나오지 않았으니 다양한 경우를 고려했을 때 IN을 통해 조건을 지정해 주는 것이 더 정답에 가까울 것 같습니다.

 

 

두번째 질문의 경우 SQL에서는 대소문자를 가리지 않습니다.

특정 벤더에서 제공하는 DBMS의 경우 대소문자를 구분하지만(그것도 user_name, role_name 같은 것에 한정) 기사시험에서는 대소문자를 구분하지 않는다고 명시하고 있습니다. (문제지 첫장)

 

행복한 하루되세요 :)

  • 관리자
    2019-06-21 11:24:39

    안녕하세요 길벗수험서 운영팀입니다.

     

    먼저 첫번째 질문의 경우 오답의 가능성이 큽니다.

    해당 SQL 문은 교재에 나오지 않았지만 적합한 문법으로 적힌 문장입니다.

    다만 where A = (select ~  의 경우 (select ~ 의 결과가 하나의 값을 반환할 때만 사용할 수 있습니다.

     

    즉, SELECT id FROM Product WHERE name LIKE 'USB%' 의 결과로 나오는 id의 값이 1개일 때는 정답이 될 수 있으나, 값이 2개 이상이 나오는 경우 '서브쿼리의 열이 1개 보다 많다'는 오류가 발생합니다.

    문제3에서는 실제 테이블의 레코드가 나오지 않았으니 다양한 경우를 고려했을 때 IN을 통해 조건을 지정해 주는 것이 더 정답에 가까울 것 같습니다.

     

     

    두번째 질문의 경우 SQL에서는 대소문자를 가리지 않습니다.

    특정 벤더에서 제공하는 DBMS의 경우 대소문자를 구분하지만(그것도 user_name, role_name 같은 것에 한정) 기사시험에서는 대소문자를 구분하지 않는다고 명시하고 있습니다. (문제지 첫장)

     

    행복한 하루되세요 :)

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