본문 바로가기
데이터베이스 구축정보처리기사 · 2021년05월15일 · 50/100

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

정보처리기사 50번 문제 이미지
1
SELECT 과목번호, 과목이름 FROM R1, R2 WHERE R1.학번 = R2. 학번 AND R1.학과='전자공학' AND R1.이름 = '강남길’;정답
2
SELECT 과목번호, 과목이름 FROM R1, R2 WHERE R1.학번 = R2.학번 OR R1.학과='전자공학' OR R1.이름 = '홍길동';
3
SELECT 과목번호, 과목이름 FROM R1, R2 WHERE R1.학번 = R2.학번 AND R1.학과=‘컴퓨터공학' AND R1.이름 '강남길’;
4
SELECT 과목번호, 과목이름 FROM R1, R2 WHERE R1.학번 = R2.학번 OR R1.학과='컴퓨터공학' OR R1.이름 = '홍길동';

해설

SELECT 조회 FROM 테이블 WHERE 조건 <0단계> 'SELECT 조회' 할 데이터 지정 '과목번호' 와 '과목이름' 을 출력해야 한다. (SELECT 과목번호, 과목이름;) [실행결과] 에서 '과목번호' 와 '과목이름' 을 출력해야 하는 것을 알 수 있다. '과목번호' 와 '과목이름' 을 출력하는 명령어는 'SELECT 과목번호, 과목이름' 이다. <1단계> 'FROM 테이블' 지정 : 'SELECT 조회' 할 데이터를 가져올 테이블 지정 '과목번호' 와 '과목이름' 이 저장되어 있는 테이블은 [R2] 테이블이므로 여기에서 데이터를 가져와야 한다. (FROM R2;) '과목번호' 와 '과목이름' 은 '[R2] 테이블' 에서 가져올 수 있다. (== FROM R2) <2단계> 'WHERE 조건' 지정 '과목번호' 와 '과목이름' 이 각각 'C100, 컴퓨터구조, C200, 데이터베이스' 인 '무엇' 을 찾아야 한다 [실행결과] 의 '과목번호' 와 '과목이름' 을 보면 각각 'C100, 컴퓨터구조, C200, 데이터베이스' 인 것을 알 수 있다 <0단계> 에서 'FROM R2' 를 했으니 일단 '[R2] 테이블'을 살펴보자. [실행결과] 에서 '과목번호' 와 '과목이름' 이 'C100, 컴퓨터구조' AND 'C200, 데이터베이스' 인 '무엇'을 찾아야 한다는 것을 알 수 있다. (그 무엇은 '학번'이다.) ('C100, 컴퓨터구조' 인 것 중에서(AND), 'C200, 데이터베이스' 인 것에 해당하는 '학번' 을 찾아야 한다) '학번' 1000 : 'C100, 컴퓨터구조' + ' ' 2000 : ' ' + 'C200, 데이터베이스' ** 3000 : 'C100, 컴퓨터구조' + 'C200, 데이터베이스' ** 4000 : ' ' + 'C200, 데이터베이스' + 'C300, 운영체제' 위의 표를 살펴보면 'C100, 컴퓨터구조' 인 것 중에서(AND), 'C200, 데이터베이스' 에 해당하는 '학번'은 '3000' 인 것을 알 수 있다 <3단계> '학번'은 '[R1] 테이블'에 있으므로 [R1] 테이블을 살펴보자 [R1] 테이블에서 '학번 == 3000' 에 해당하는 정보는 학번 이름 학년 학과 주소 3000 강남길 2 전자공학 경기 이다 <4단계> 필요한 정보가 모두 모였다. 이것들을 모두 모아보면 아래와 같다 SELECT R2 과목번호, R2 과목이름 FROM R1, R2 WHERE R1.학번 = R2.학번 AND R1.학과 = '전자공학' AND R1.이름 = '강남길'; → <1단계> [R2] 테이블에서 '과목번호' 와 '과목이름' 을 가져온다.(SELECT R2.과목번호, R2.과목이름 FROM R2;) → <3단계> [R1] 테이블에서 '학과' 와 '이름' 을 가져온다. (R1.학과 = '전자공학' AND R1.이름 = '강남길' FROM R1;) → [R1] 테이블에서도 데이터를 가져오고, [R2] 테이블에서도 데이터를 가져오고 있다. → 이 두 조건에 맞게 테이블을 지정하려면 'FROM R1, R2' 로 표현해야 한다 ('R1.학과' 라는 것은 R1 테이블에 있는 학과 라는 뜻이다.) ('R1.이름' 이라는 것은 R1 테이블에 있는 이름 이라는 뜻이다.) ('R2.과목번호' 라는 것은 R2 테이블에 있는 과목번호 라는 뜻이다.) ('R2.과목이름' 이라는 것은 R2 테이블에 있는 과목이름 이라는 뜻이다.) → WHERE 에서 'R1.학번 = R2.학번' 인 이유는 [R1] 테이블 과 [R2] 테이블 의 '연결고리'(두 테이블 모두에 있는 데이터)가 '학번'이기 때문이다. → 위 문장의 SQL 표현법은 'R1.학번 = R2.학번' 이다. ('R1.학번' 이라는 것은 R1 테이블에 있는 학번 이라는 뜻이다.) ('R2.학번' 이라는 것은 R2 테이블에 있는 학번 이라는 뜻이다.)

이 시험을 직접 풀어보세요

실전과 동일한 CBT 환경에서 시간 제한 연습

회원가입 없이 CBT 풀기