기출문제/정보처리기사

2021년 2회 정보처리기사 기출문제 50번

엉클지니 2025. 3. 22. 23:52

50. 다음 R1R2의 테이블에서 아래의 실행 결과를 얻기 위한 SQL문은?

 SELECT 과목번호, 과목이름 FROM RI, R2 WHERE R1.학번 = R2. 학번 AND R1.학과='전자공학' AND R1.이름 = '강남길’;

    SELECT 과목번호, 과목이름 FROM RI, R2 WHERE R1.학번 = R2.학번 OR R1.학과='전자공학' OR R1.이름 = '홍길동';

    SELECT 과목번호, 과목이름 FROM R1, R2 WHERE R1.학번 = R2.학번 AND R1.학과=‘컴퓨터공학' AND R1.이름 '강남길’;

    SELECT 과목번호, 과목이름 FROM R1, R2 WHERE R1.학번 = R2.학번 OR R1.학과='컴퓨터공학' OR R1.이름 = '홍길동';

 

 

 

 

  • 문제 분석[실행결과]👉 즉, 중복 없이 R2 테이블에서 "과목번호"와 "과목이름"을 가져와야 함!
    테이블 분석
    학번이름학년학과주소
    1000 홍길동 1 컴퓨터공학 서울
    2000 김철수 1 전기공학 경기
    3000 강남길 2 전자공학 경기
    4000 오만자 2 컴퓨터공학 경기
    5000 장미화 3 전자공학 서울
    [R2] 수강 정보
    1번 SQL 코드 분석조건 분석
    • R1.학번 = R2.학번 → 학생과 수강 정보를 학번을 기준으로 조인
    • R1.학과 = '전자공학' → 학과가 전자공학인 학생만 선택
    • R1.이름 = '강남길' → 이름이 강남길인 학생만 선택
    강남길(학번 3000)의 수강 과목 확인👉 강남길이 수강한 과목은 "C100(컴퓨터구조)"와 "C200(데이터베이스)"로 실행결과와 일치!
    다른 선택지 분석
    sql
    복사편집
    SELECT 과목번호, 과목이름 FROM R1, R2 WHERE R1.학번 = R2.학번 OR R1.학과 = '전자공학' OR R1.이름 = '홍길동';
    • OR을 사용하여 조건이 너무 넓어짐
    • 관계없는 학생들의 과목까지 포함될 가능성이 높음 ❌
    • 강남길은 전자공학과인데 컴퓨터공학으로 잘못 지정
    • OR 연산으로 인해 불필요한 데이터 포함 가능성

    정답:
    • 학번을 기준으로 조인
    • 전자공학과 & 강남길인 학생만 조회
    • 결과값이 "C100(컴퓨터구조)", "C200(데이터베이스)"와 정확히 일치! 🎯
  • 🎯 핵심 정리
  • sql
    복사편집
    SELECT 과목번호, 과목이름 FROM R1, R2 WHERE R1.학번 = R2.학번 OR R1.학과 = '컴퓨터공학' OR R1.이름 = '홍길동';
  • sql
    복사편집
    SELECT 과목번호, 과목이름 FROM R1, R2 WHERE R1.학번 = R2.학번 AND R1.학과 = '컴퓨터공학' AND R1.이름 = '강남길';
  • 학번과목번호과목이름학점점수
    3000 C100 컴퓨터구조 B+ 89
    3000 C200 데이터베이스 B 85
  • sql
    복사편집
    SELECT 과목번호, 과목이름 FROM R1, R2 WHERE R1.학번 = R2.학번 AND R1.학과 = '전자공학' AND R1.이름 = '강남길';
  • 학번과목번호과목이름학점점수
    1000 C100 컴퓨터구조 A 91
    1000 C200 데이터베이스 A+ 99
    3000 C100 컴퓨터구조 B+ 89
    3000 C200 데이터베이스 B 85
    4000 C200 데이터베이스 A 93
    5000 C300 운영체제 B+ 88
    5000 C300 운영체제 B 82
  • [R1] 학생 정보
  • 과목번호과목이름
    C100 컴퓨터구조
    C200 데이터베이스
  • 주어진 R1(학생) 테이블R2(수강) 테이블을 이용하여 [실행결과] 테이블을 출력하는 SQL문을 찾는 문제입니다.
반응형