책 내용 질문하기
DML-select 관련
도서
2020 시나공 정보처리산업기사 필기 [기본서]
페이지
112
조회수
302
작성일
2020-03-16
작성자
탈퇴*원
첨부파일

112쪽의 10번 문제를 보면 보기의 SQL문에 SELECT DISTINCT 라고 되어있는데 왜 정답이 1번인지 궁금합니다

중복을 제거하는건 DISTINCTROW 아닌가요?ㅜㅜ

답변
2020-03-17 10:50:48

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

 

두 옵션의 차이를 알아두세요.

• DISTINCT : 중복된 튜플이 있으면 그 중 첫 번째 한 개만 검색합니다.

• DISTINCTROW : 중복된 튜플을 제거하고 한 개만 검색하지만 선택된 속성의 값이 아닌, 튜플 전체를 대상으로 합니다.

 

해당 sql문은 student 테이블에서 dept 속성을 조회하되 동일한 값이 있는 경우 처음 하나만 조회하라는 의미입니다. dept 속성에 a, a, b, b, c가 있다면 a, b, c만 조회되겠죠.

 

여기서 distinctrow를 사용하게되면 dept 속성에서 중복된 값이 빠지는 것이 아닌, 중복된 열(row)이 존재하는 경우에만 해당 튜플이 검색에서 제외됩니다.

이 경우 만약 student 속성에 {name, dept} 속성 2개가 있다고 가정하고

( white , a )

( red, a )

( brown, b )

( brown, b )

( black, c )

이렇게 값이 저장되어 있을 때 distinctrow dept를 쓰면 a, a, b, c가 조회되게 됩니다.

전체 열이 중복되는 경우( brown, b )만 검색에서 제외되니깐요.

 

해당 문제에서 보기 1번은 해석하기에 따라서 distinct와 distinctrow 두 개 모두를 설명하는 것일 수 있습니다. 2번은 그냥 조건없는 select문, 3번은 order by, 4번은 rownum에 대한 설명인데 이것은 범위에 속하지 않으니 별도로 언급하지는 않겠습니다.

 

행복한 하루되세요 :)

  • 관리자
    2020-03-17 10:50:48

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

     

    두 옵션의 차이를 알아두세요.

    • DISTINCT : 중복된 튜플이 있으면 그 중 첫 번째 한 개만 검색합니다.

    • DISTINCTROW : 중복된 튜플을 제거하고 한 개만 검색하지만 선택된 속성의 값이 아닌, 튜플 전체를 대상으로 합니다.

     

    해당 sql문은 student 테이블에서 dept 속성을 조회하되 동일한 값이 있는 경우 처음 하나만 조회하라는 의미입니다. dept 속성에 a, a, b, b, c가 있다면 a, b, c만 조회되겠죠.

     

    여기서 distinctrow를 사용하게되면 dept 속성에서 중복된 값이 빠지는 것이 아닌, 중복된 열(row)이 존재하는 경우에만 해당 튜플이 검색에서 제외됩니다.

    이 경우 만약 student 속성에 {name, dept} 속성 2개가 있다고 가정하고

    ( white , a )

    ( red, a )

    ( brown, b )

    ( brown, b )

    ( black, c )

    이렇게 값이 저장되어 있을 때 distinctrow dept를 쓰면 a, a, b, c가 조회되게 됩니다.

    전체 열이 중복되는 경우( brown, b )만 검색에서 제외되니깐요.

     

    해당 문제에서 보기 1번은 해석하기에 따라서 distinct와 distinctrow 두 개 모두를 설명하는 것일 수 있습니다. 2번은 그냥 조건없는 select문, 3번은 order by, 4번은 rownum에 대한 설명인데 이것은 범위에 속하지 않으니 별도로 언급하지는 않겠습니다.

     

    행복한 하루되세요 :)

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