아래의 SQL 의 결과가 다른 것은? ( ON, USING, NATURAL JOIN 에 대한 문제)?
- 1
SELECT * FROM HR.EMPLOYEES A INNER JOIN HR.DEPARTMENTS B ON (DEPARTMENT_ID) WHERE A.DEPARTMENT_ID = 90;
정답 근거ON 절에는 `A.ID=B.ID`처럼 참·거짓으로 평가되는 조건식이 필요하다. 열 이름 하나만 괄호 안에 쓰면 유효한 관계 연산자가 없어 오류가 발생한다. 따라서 1번 보기 ‘SELECT * FROM HR.EMPLOYEES A INNER JOIN HR.DEPARTMENTS B ON (DEPARTMENT_ID) WHERE A.DEPARTMENT_ID = 90;’의 적용 여부를 문제 조건과 대조해야 한다. - 2
SELECT * FROM HR.EMPLOYEES A INNER JOIN HR.DEPARTMENTS B ON A.DEPARTMENT_ID = B.DEPARTMENT_ID WHERE A.DEPARTMENT_ID = 90;
오답 이유‘SELECT * FROM HR.EMPLOYEES A INNER JOIN HR.DEPARTMENTS B ON A.DEPARTMENT_ID = B.DEPARTMENT_ID WHERE A.DEPARTMENT_ID = 90;’ 구문은 ‘SELECT * FROM HR.EMPLOYEES A INNER JOIN HR.DEPARTMENTS B ON (DEPARTMENT_ID) WHERE A.DEPARTMENT_ID = 90;’과 실행 결과나 적용 조건이 다르다. ON 절에는 `A.ID=B.ID`처럼 참·거짓으로 평가되는 조건식이 필요하다. 열 이름 하나만 괄호 안에 쓰면 유효한 관계 연산자가 없어 오류가 발생한다. 따라서 2번 보기 ‘SELECT * FROM HR.EMPLOYEES A INNER JOIN HR.DEPARTMENTS B ON A.DEPARTMENT_ID = B.DEPARTMENT_ID WHERE A.DEPARTMENT_ID = 90;’의 적용 여부를 문제 조건과 대조해야 한다. - 3
SELECT *FROM HR.EMPLOYEES A INNER JOIN HR.DEPARTMENTS B USING (DEPARTMENT_ID) WHERE DEPARTMENT_ID = 90;
오답 이유‘SELECT *FROM HR.EMPLOYEES A INNER JOIN HR.DEPARTMENTS B USING (DEPARTMENT_ID) WHERE DEPARTMENT_ID = 90;’ 구문은 ‘SELECT * FROM HR.EMPLOYEES A INNER JOIN HR.DEPARTMENTS B ON (DEPARTMENT_ID) WHERE A.DEPARTMENT_ID = 90;’과 실행 결과나 적용 조건이 다르다. ON 절에는 `A.ID=B.ID`처럼 참·거짓으로 평가되는 조건식이 필요하다. 열 이름 하나만 괄호 안에 쓰면 유효한 관계 연산자가 없어 오류가 발생한다. 따라서 3번 보기 ‘SELECT *FROM HR.EMPLOYEES A INNER JOIN HR.DEPARTMENTS B USING (DEPARTMENT_ID) WHERE DEPARTMENT_ID = 90;’의 적용 여부를 문제 조건과 대조해야 한다. - 4
SELECT * FROM HR.EMPLOYEES A NATURAL JOIN HR.DEPARTMENTS B WHERE DEPARTMENT_ID = 90
오답 이유‘SELECT * FROM HR.EMPLOYEES A NATURAL JOIN HR.DEPARTMENTS B WHERE DEPARTMENT_ID = 90’ 구문은 ‘SELECT * FROM HR.EMPLOYEES A INNER JOIN HR.DEPARTMENTS B ON (DEPARTMENT_ID) WHERE A.DEPARTMENT_ID = 90;’과 실행 결과나 적용 조건이 다르다. ON 절에는 `A.ID=B.ID`처럼 참·거짓으로 평가되는 조건식이 필요하다. 열 이름 하나만 괄호 안에 쓰면 유효한 관계 연산자가 없어 오류가 발생한다. 따라서 4번 보기 ‘SELECT * FROM HR.EMPLOYEES A NATURAL JOIN HR.DEPARTMENTS B WHERE DEPARTMENT_ID = 90’의 적용 여부를 문제 조건과 대조해야 한다.
정답 1번
핵심 판단은 1번 ‘SELECT * FROM HR.EMPLOYEES A INNER JOIN HR.DEPARTMENTS B ON (DEPARTMENT_ID) WHERE A.DEPARTMENT_ID = 90;’입니다. ON 절에는 `A.ID=B.ID`처럼 참·거짓으로 평가되는 조건식이 필요하다. 열 이름 하나만 괄호 안에 쓰면 유효한 관계 연산자가 없어 오류가 발생한다.
콘텐츠 정보
- 자료 유형
- 공개 기출 아카이브
- 검수 상태
- 문항·보기·해설 편집 확인
- 해설 작성·검수
- 정처LAB 편집팀
- 최종 검수
- 2026-08-09
JOIN 문법 핵심개념
정답 용어만 외우지 말고 각 보기의 적용 대상·기능·전제 조건을 비교하세요. 같은 분야 기출을 묶어서 풀면 표현이 달라져도 판단 기준을 유지할 수 있습니다.
관련 개념 정리 읽기 →같은 과목 실제 기출 12문제
11번다음 SQL이 조회하는 대상을 옳게 설명한 것은?
해설 보기 →12번SELECT 문장의 논리적 처리 순서로 옳은 것은?
해설 보기 →13번출연료가 8,888 이상인 영화명·배우명·출연료를 조회하는 조인으로 옳은 것은?
해설 보기 →14번부서별 최고 연봉자만 조회하려 할 때 올바른 결과는?
해설 보기 →15번상품 분류별 누적 합계를 계산할 때 현재 행을 기준으로 앞뒤 10,000 범위를 포함하는 프레임은?
해설 보기 →16번다음 자료에서 부서번호 순으로 계산한 부서별 평균급여는?
해설 보기 →17번다음 값 중 가장 큰 것은?
해설 보기 →18번Oracle에서 날짜 열을 기본값 및 NOT NULL 조건과 함께 추가하는 문장으로 옳은 것은?
해설 보기 →19번서브쿼리가 두 개 이상의 열을 반환하고 같은 개수의 열과 한 번에 비교되는 유형은?
해설 보기 →20번영문 월 이름을 반환하는 날짜 형식 요소로 6월을 표시한 값은?
해설 보기 →21번날짜 조건이 시작일과 종료일을 모두 포함하고 두 날짜 차이가 20일이라면 포함되는 날짜 수는?
해설 보기 →22번값이 2000, 1500, 1500, 1500일 때 내림차순 `DENSE_RANK()` 결과로 옳은 것은?
해설 보기 →