책 내용 질문하기
SQL 하위질의 질문요~
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
95
조회수
646
작성일
2019-04-04
작성자
탈퇴*원
첨부파일

95페이지에 2번 문제와 3번문제의 차이를 모르겠습니다

몇가지 질문좀 드릴게요

 

 

1) '   ' 는 어떨때 넣고 뺴는는것인지.

 

2번문제에는 id 에  '  '  가 안들어가 있는대  3번문제는  'USB'  로 넣어주었네요

 

어떤 이유에의해서 이렇게 되는건가요?

 

 

2)  (      )  괄호는 어떨때 넣고 뺴는건지 .

 

답지를 보면

 

2번문제는 SELECT DISTANCE name 이라고 시작하고

3번문제는 SELECT SUB(psale)    시작합니다

 

3번문제에  괄호가 붙는 이유는그룹함수가 적용되서 붙는게 맞나요?

 

 

3) 3번문제에 WHERE pid IN (SELECT id FROM Product WHERE name LIKE 'USB%');

  이렇게 되어 있는대  앞에 WHERE 다음에 pid 가 적용되는 이유를 모르겠습니다...

 

뒷부분인 WHERE name LIKE 'USB% 이 부분은 조건이 붙었기 때문에 하위질의로 들어가는건 알겠는대요

WHERE pid IN (SELECT id

-------------------------   저 부분에서 왜 pid 와 id 가 들어간느지 이해가 잘안가네요

  

답변
2019-04-05 11:44:43

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

 

[1]

홑따옴표 또는 쌍다옴표는 텍스트값을 가리킬 때만 사용됩니다.

즉 문자나 문자 형식의 숫자에만 사용됩니다.

일반적으로 문제에서 각 필드의 형식이 지정되지 않은 경우 숫자는 int로 따옴표 없이,

문자는 char 또는 varchar로 따옴표를 붙여서 표현합니다.

 

[2]

예, 맞습니다.

괄호는 각 함수나 명령어의 사용형식에 따라 달라집니다.

이 경우는 모두 암기하셔서 사용하셔야 합니다.

그룹함수는 89쪽을 참조해주세요.

 

[3]

단순합니다.

앞의 select문과 뒤의 select문을 구분하여 이해하세요.

앞의 select는 특정 pid(where pid)에 속하는 psale의 합계(SUM(psale))를 Sale 테이블에서 구하는 것입니다.

다음 in (select~문은 그 pid가 Product 테이블의 id에 속하는 것으로 한정한다는 것이죠.

그 id 는 동일한 튜플에서 name필드가 USB로 시작하는 필드의 id만으로 말이죠.(where name like 'usb%')

 

행복한 하루되세요 :)

  • 관리자
    2019-04-05 11:44:43

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

     

    [1]

    홑따옴표 또는 쌍다옴표는 텍스트값을 가리킬 때만 사용됩니다.

    즉 문자나 문자 형식의 숫자에만 사용됩니다.

    일반적으로 문제에서 각 필드의 형식이 지정되지 않은 경우 숫자는 int로 따옴표 없이,

    문자는 char 또는 varchar로 따옴표를 붙여서 표현합니다.

     

    [2]

    예, 맞습니다.

    괄호는 각 함수나 명령어의 사용형식에 따라 달라집니다.

    이 경우는 모두 암기하셔서 사용하셔야 합니다.

    그룹함수는 89쪽을 참조해주세요.

     

    [3]

    단순합니다.

    앞의 select문과 뒤의 select문을 구분하여 이해하세요.

    앞의 select는 특정 pid(where pid)에 속하는 psale의 합계(SUM(psale))를 Sale 테이블에서 구하는 것입니다.

    다음 in (select~문은 그 pid가 Product 테이블의 id에 속하는 것으로 한정한다는 것이죠.

    그 id 는 동일한 튜플에서 name필드가 USB로 시작하는 필드의 id만으로 말이죠.(where name like 'usb%')

     

    행복한 하루되세요 :)

  • 관리자
    2019-04-08 13:37:16

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

     

    [1]

    해당 부분은 '10'을 10으로 수정하여야 합니다.

    문제에서 10을 따로 텍스트 구분자인 홑따옴표 또는 쌍따옴표를 사용하지 않았으므로,

    SQL문에서도 문자가 아닌 숫자로 적어줘야 합니다.

     

    해당 부분은 수정하여 반영하도록 하겠습니다.

     

     

    [2]

    음.. 이건 SQL의 이해보다는 문제의 이해도를 올려야 하는 건 같습니다.

    3번 문제를 보죠.

    문제는 '상품의 판매량(psale) 합계'를 구하고 싶어합니다.

    해당 상품의 이름(name)은 'USB' 이고요.

    문제에서 테이블은 pid와 id가 n:1인 관계에 있습니다.

     

    여기서 쟁점은 'USB'라는 정보는 <product>테이블에 있고, 우리가 구해야 하는 psale의 합계는 <Sale> 테이블에서 구해야 한다는 점입니다.

    이것을 알기 위해서는 테이블 간의 관계를 이용해야 합니다.

    pid와 id가 n:1로 연결되었다는 것은 외래키로 쓰였음을 추측할 수 있습니다.

    즉 pid와 id가 동일한 코드를 사용하고 있다는 의미죠 (n:1이니 pid는 중복이 가능하고, id는 기본키)

     

    그럼 먼저 product에서 name이 'USB'인 id를 구해봅시다.

    select id from product where name='USB';

    간단하죠. 이렇게 USB인 id를 구해내었습니다.

     

    이제 이 id와 같은 값을 가진 <sale>테이블 pid 튜플들을 검색해서 psale의 합계를 구해야합니다.

    select sum(psale) from sale where pid in (위 조회문)

     

    이렇게 나오는 것이죠.

     

    두 테이블의 연관관계를 정확히 파악해서 두 select문을 엮어야 합니다.

    문제에서 관계를 정확히 파악해내는 연습이 필요할 것 같네요.

     

    행복한 하루되세요 :)

  • *
    2019-04-05 15:21:43

    추가적으로 오타인것 같아서 올립니다

     

    첨부파일에 (484 페이지)

    답안란에는 WHERE id IN (SELECT shopid FROM staff WHERE id=10);   이렇게 표시되어 있지만

     

    바로밑에 조건절 설명이라고 써있는 부분에는 WHERE id IN (SELECT shopid FROM staff WHERE id='10');   

     

    id 에  '10' 가 들어가있습니다

    이경우에는 '10' 넣어주는게 맞지요?

     

    둘중 하나는 오타인것 같아요 심험이 콤마하나로도 틀린다고하는대 이부분은 수강생이 했갈리지 않도록 수정해야할것 같습니다

     

     

    그리고...

    where pid in (select shopid 이 부분이 아직도 정립이 안되네요 ㅜㅜ

     

    앞에 where pdi 는  (괄호안의 where id) 를 먼저 수행하고 그 값을 통해 다음 연산을 수행하는 것은 이해 하겠는대요

    문제 테이블에

     

    <sale>테이블          <product>테이블              이렇게 있는대 왜  pid 와 id 를 고른건지 좀더 쉽게 설명 해주실수 있을까요?

           id                            id                          왜 저 둘을 선정 한건지 딱 저 부분만 이해가 안가서요.. 비슷한 2번 문제랑 예제도 마찬가지네요 -0-;;

    ----------------------------------  

    sid                              name

    pid                              price

    psale

     

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