모두CBT

다음 중 [주소록] 이라는 연결 테이블의 내용을 [거래처] 테이블에 추… | [컴퓨터활용능력 1급 필기] 13년 2회차 기출문제 상세 페이지

1[컴퓨터활용능력 1급 필기] 13년 2회차
다음 중 [주소록] 이라는 연결 테이블의 내용을 [거래처] 테이블에 추가하는 SQL문으로 옳은 것은? (단, 두 테이블은 모두 '거래처번호', '거래처명', '연락처'라는 동일한 데이터 형식과 필드 순서를 갖고 있다. 또한 '거래처번호' 필드를 기준으로 [거래처] 테이블에 존재하지 않는 데이터만을 추가하고자 한다.)
1
insert into 거래처(거래처번호, 거래처명, 연락처) set 주소록(거래처번호, 거래처명, 연락처) where 거래처번호 is not null
2
insert into 거래처 select * from 주소록 where 거래처번호 not in (select 거래처번호 from 거래처)
3
insert into 거래처 values 주소록(거래처번호, 거래처명, 연락처)
4
insert into 거래처(거래처번호, 거래처명, 연락처) select 거래처번호, 거래처명, 연락처 from 주소록 where 거래처번호 not in (select 거래처번호 from 주소록)
해설

거래처번호를 기준으로 [거래처] 테이블에 아직 없는 데이터만 추가하려면, 부속 질의(서브쿼리)에서 대상 테이블인 [거래처]를 기준으로 존재 여부를 확인해야 한다.

즉 주소록의 레코드 중 거래처 테이블에 이미 있는 거래처번호를 제외하고 나머지를 추가하는 insert into ~ select ~ where 거래처번호 not in (select 거래처번호 from 거래처) 형태가 옳다. 조건절의 서브쿼리가 주소록 자신을 대상으로 하면 추가할 레코드가 하나도 남지 않게 되며, insert 구문에 set이나 values로 다른 테이블을 지정하는 형식은 문법상 성립하지 않는다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.