코딩일기/자격증

[정보처리기사] SQL | JOIN 기본 개념과 종류 | 2024년 1회 정보처리기사 실기 기출문제

jhy_2023 2025. 4. 1. 14:06
728x90
반응형

2024년 1회 정보처리기사 실기 기출문제

문제

다음은 조인(JOIN)에 대한 설명이다. 각 설명에 대한 답을 <보기>에서 찾아 작성하시오.

(   1   ) : 조인에 참여하는 두 릴레이션의 속성 값을 비교하여 조건을 만족하는 튜플만 반환한다.

(   2   ) : 조건이 정확하게 '=' 등호로 일치하는 결과를 반환한다. 

(   3   ) : (   2   ) 조인에서 조인에 참여한 속성이 두 번 나오지 않도록 중복된 속성을 제거한 결과를 반환한다.
<보기>
세타 조인
동등 조인
자연 조인
외부 조인
세미 조인

정답

1. 세타 조인
2. 동등 조인
3. 자연 조안

반응형

해설

📌 기본개념

🔶 조인(JOIN)이란?

조인(JOIN)은 두 개 이상의 테이블을 연결하여 데이터를 조회하는 방법입니다.
보통 데이터베이스에서 여러 테이블을 분리해서 저장하기 때문에, 관련된 데이터를 함께 조회할 때 조인을 사용합니다.
조인은 크게 INNER JOIN(내부 조인)과 OUTER JOIN(외부 조인)으로 나눌 수 있으며,
특수한 조인으로 세타 조인(θ-Join), 동등 조인(Equi-Join), 자연 조인(Natural Join), 세미 조인(Semi-Join) 등이 있습니다.

🔶 조인(JOIN)의 종류

1️⃣ INNER JOIN (내부 조인)

  • 교집합 개념으로, 두 테이블에서 일치하는 데이터만 조회합니다.
  • 동등 조인 (Equi-Join)과 동일한 결과
SELECT students.이름, students.반, classrooms.담임선생님
FROM students
INNER JOIN classrooms
ON students.반 = classrooms.반;

학생 테이블 (students) / 반 테이블 (classrooms)
INNER JOIN 결과

  • INNER JOIN 결과, 일치하는 반만 조회됨 따라서 영희(2반)는 반 테이블에 없어서 제외

2️⃣ OUTER JOIN (외부 조인)

  • 일치하는 데이터 + 일치하지 않는 데이터도 포함
  • 종류: LEFT JOIN, RIGHT JOIN, FULL JOIN

 

  • LEFT JOIN (왼쪽 외부 조인) : 왼쪽 테이블(기준) 데이터를 모두 포함하며, 오른쪽에 일치하는 데이터가 없으면 NULL이 들어감.
SELECT students.이름, students.반, classrooms.담임선생님
FROM students
LEFT JOIN classrooms
ON students.반 = classrooms.반;

 

LEFT JOIN 결과

  • RIGHT JOIN (오른쪽 외부 조인) : 오른쪽 테이블(기준) 데이터를 모두 포함하며, 왼쪽에 일치하는 데이터가 없으면 NULL이 들어감.
SELECT students.이름, students.반, classrooms.담임선생님
FROM students
RIGHT JOIN classrooms
ON students.반 = classrooms.반;

RIGHT JOIN 결과

  • FULL JOIN (완전 외부 조인) : LEFT JOIN + RIGHT JOIN으로, 양쪽 테이블에서 일치하는 데이터뿐만 아니라 모든 데이터 포함한다. 일치하지 않는 값은 NULL

3️⃣ CROSS JOIN (교차 조인)

  • CROSS JOIN은 두 테이블의 모든 조합을 반환하는 조인입니다.
  • 즉, 첫 번째 테이블의 모든 행 × 두 번째 테이블의 모든 행을 조합하여 결과를 만듭니다.
  • 데카르트 곱(Cartesian Product)이라고도 합니다.

학생 테이블 (students) / 반 테이블 (classrooms)

SELECT students.이름, classrooms.반
FROM students
CROSS JOIN classrooms;

CROSS JOIN 결과

  • 모든 학생과 모든 반이 조합됨 (2명 × 2개 = 4개의 행)

4️⃣ 세타 조인 (Theta Join, θ-Join)과 동등 조인 (Equi-Join)

 

SELECT 학생.이름, 학생.나이, 교실.최소나이, 교실.반
FROM 학생, 교실
WHERE 학생.나이 >= 교실.최소나이;

 

  • 조인 조건으로 비교 연산자(=, <, >, <=, >=, ≠)를 사용하여 데이터를 조회하는 방식.
  • 일반적으로 = 연산자를 쓰면 동등 조인(Equi-Join),
    = 이외의 연산자를 쓰면 **비동등 조인(Non-Equi Join)**이 됨.
  • 예시 코드 : 특정 나이 이상인 학생이 해당 반에 배정되는 조건을 조인으로 처리하는 경우.

 

SELECT students.이름, students.반, classrooms.담임선생님
FROM students, classrooms
WHERE students.반 = classrooms.반;

 

  • 세타 조인 중 =(같은 값)만 사용하는 경우
  • INNER JOIN과 비슷하지만, 테이블의 공통 속성이 중복 표시될 수 있음.
  • 예시 코드 : INNER JOIN과 동일한 결과

5️⃣ 자연 조인 (Natural Join)

SELECT students.이름, 반, 담임선생님
FROM students
NATURAL JOIN classrooms;

 

  • 공통된 컬럼을 자동으로 찾아 조인
  • 중복된 컬럼을 한 번만 표시
  • 예시 코드 : 반이 공통 속성이므로 자동으로 조인됨.

6️⃣ 세미 조인 (Semi-Join)

SELECT students.이름
FROM students
WHERE EXISTS (
    SELECT 1 FROM classrooms WHERE students.반 = classrooms.반
);

 

 

  • 한쪽 테이블의 정보만 조회하는 조인
  • EXISTS 서브쿼리로 구현 가능
  • 예시 코드 : 반 정보가 존재하는 학생만 조회.

 

728x90

📌 문제 해설

조인(JOIN)은 데이터베이스에서 두 개 이상의 테이블을 연결하여 원하는 데이터를 추출하는 방법입니다.

세타 조인(θ Join)은 조인에 참여하는 두 릴레이션(테이블)의 속성 값을 비교하여 조건을 만족하는 튜플(행)만 반환하는 방식입니다. 즉, 단순히 =(등호)뿐만 아니라 >, <, >=, <=, != 등의 연산자를 사용할 수 있는 조인입니다.
(1)번 문장에서 "조인에 참여하는 두 릴레이션의 속성 값을 비교하여 조건을 만족하는 튜플만 반환"한다고 되어 있으므로, 세타 조인이 정답입니다.

동등 조인(Equi Join)은 세타 조인의 일종으로, 비교 조건이 정확하게 =(등호)로만 이루어진 조인입니다. 즉, 같은 값을 가진 속성끼리만 조인을 수행합니다.
(2)번 문장에서 "조건이 정확하게 '=' 등호로 일치하는 결과를 반환"한다고 했으므로, 동등 조인이 정답입니다.

자연 조인(Natural Join)은 동등 조인과 비슷하지만, 중복된 속성을 제거하는 차이점이 있습니다. 즉, 조인 조건이 같은 속성을 자동으로 찾아 조인하며, 중복된 속성을 하나만 남깁니다. (3)번 문장에서 "(2)번 조인에서 조인에 참여한 속성이 두 번 나오지 않도록 중복된 속성을 제거한 결과"라고 했으므로, 자연 조인이 정답입니다.

외부 조인은 조인 조건을 만족하지 않는 튜플(행)도 포함하여 결과를 반환하는 조인 방식입니다.
일반적으로 LEFT OUTER JOIN(왼쪽 외부 조인), RIGHT OUTER JOIN(오른쪽 외부 조인), FULL OUTER JOIN(완전 외부 조인)으로 나뉩니다.

세미 조인은 한 테이블의 일부 데이터만 가져오지만, 실제 조인을 수행하는 것이 아니라 서브쿼리를 활용하여 존재 여부만 확인하는 조인 방식입니다. 즉, 조인을 하되 두 번째 테이블의 데이터는 결과에 포함되지 않고, 첫 번째 테이블에서 해당 조건을 만족하는 데이터만 출력됩니다.


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

728x90
반응형