데이터베이스 일반컴퓨터활용능력 1급 · 2010년06월06일 · 56/60
56.[학생] 테이블의 '학번' 필드에 중복된 값이 있어서 기본 키로 설정할 수 없다는 다음과 같은 메시지가 나타났다. 다음 중 학번이 중복된 학생의 정보를 찾는 방법으로 가장 적절한 것은?

1
select * from 학생 where 학번 in (select 학번 from 학생 group by count(*)> 1)
2
select * from 학생 where 학번 in (select 학번 from 학생 group by 학번 having count(*)> 1)정답
3
select * from 학생 group by 학번 having count(*)> 1
4
select * from 학생 having count(*)> 1 where 학번 in (select 학번 from 학생 group by 학번)
해설
※ Group By~Having 구문으로서 ① Select * from 학생 where 학번 in (select 학번 from 학생 group by count(*)> 1) → Group By 절 뒤에 그룹화 할 대상(학번)과 조건을 표기할 Having절이 없음 ② Select * from 학생 where 학번 in (select 학번 from 학생 group by 학번 having count(*)> 1) → 먼저 Where조건의 Select 구문으로 중복된 학번을 검색한 후 해당 학번과 일치하는 학번에 대해 해당 레코드(*)를 표시함 ③ Select * from 학생 group by 학번 having count(*)> 1 → 중복된 필드(학번)에 대해서만 표시하므로 Select 절에 *를 사용할 수 없으며 중복된 필드인 학번만 사용가능함 → ‘Select 학번 from 학생 group by 학번 having count(*)> 1’ 처럼 사용하더라도 중복된 수만큼 표시되지 않고 1번만 표시되므로 몇 번이 반복되었는지 알 수 없다. ④ Select * from 학생 having count(*)> 1 where 학번 in (select 학번 from 학생 group by 학번) → Select 절에는 Having이 아닌 Where절을 사용해야함.