빅데이터 국비 교육

[아이티윌 빅데이터 52기] Day 5 고급 데이터 조회 2 / 데이터 베이스 구축

datahaseo 2025. 10. 13. 10:47

고급 데이터 조회 2 / 데이터 베이스 구축

<학습 내용>

-INNER/OUTER 외의 JOIN ( SELF JOIN ,EQUI JOIN ,CROSS JOIN)

-서브쿼리 (단일행 / 다중행 / 스칼라 / 인라인뷰)

-데이터 베이스 관리

-테이블 관리

 

 

 

EQUI JOIN

기본적으로 INNER JOIN 과 동일함

ANSI SQL 은 모든 DBMS 가 따르는 표준적인 문법

2개 이상의 테이블에서 데이터를 조회하면서, WHRER 절을 통해 JOIN 조건을 명시함

FROM 절에는 , 를 기준으로 테이블 명시

 

 

JOIN 조건을 써준 후에 추가적인 필터링은 AND 로 이어줄 수 있음

 

 

 

 

CROSS JOIN

EQUI JOIN 에서 JOIN 조건이 제외된 경우 

즉, 조합 가능한 모든 경우의 수가 생성 (카테시안곱)

 

 

SELF JOIN

하나의 테이블에서 두개의 별칭을 사용해서 마치 두 테이블처럼 조인하는 방식

FROM 절과 JOIN 절의 테이블이 동일

계층 구조 표현 / 같은 집단 내 비교/중복 이름 값 찾기

 

 

 

<연습 문제>

1.EQUI JOIN을 사용하여 학생 이름과 지도 교수 이름을 함께 출력하시오

 

SELECT S.NAME, P.NAME FROM STUDENTS S,PROFESSORS P
WHERE S.PROFESSOR_ID = P.ID

 

 

2.EQUI JOIN을 사용하여 수강신청한 학생의 이름과 수강한 과목명을 출력하시오

 

SELECT S.NAME, SB.NAME FROM STUDENTS S, SUBJECTS SB, ENROLLMENTS E
WHERE S.ID = E.STUDENT_ID AND E.SUBJECT_ID = SB.ID

 

3.EQUI JOIN을 사용하여 학생이 수강한 과목과 그 과목의 학과명을 출력하시오

SELECT  S.NAME,
        SB.NAME,
        D.DNAME
FROM STUDENTS S, ENROLLMENTS E ,SUBJECTS SB, DEPARTMENTS D
WHERE S.ID=E.STUDENT_ID AND E.SUBJECT_ID = SB.ID AND SB.DEPARTMENT_ID = D.ID;

 

4.EQUI JOIN을 사용하여 2024년 이후 입사한 교수의 이름과 소속 학과명을 출력하시오

 

SELECT  P.NAME, D.DNAME FROM PROFESSORS P , DEPARTMENTS D
WHERE (P.DEPARTMENT_ID = D.ID) AND DATE_FORMAT(HIREDATE, '%Y-%m-%d') >= '2024-01-01'

 

 

5.같은 학년에 재학 중인 학생 쌍을 모두 조회하시오.

단, 학생 번호가 작은 사람을 먼저 표시하고, 자기 자신과의 비교는 제외하세요

SELECT a.name AS 학생1,
               b.name AS 학생2,
               a.grade AS 학년
FROM students a JOIN students b ON a.grade = b.grade AND a.id < b.id;




SELECT A.ID, A.NAME,A.GRADE , B.ID, B.NAME,B.GRADE
FROM STUDENTS A
JOIN STUDENTS B 
WHERE A.ID != B.ID AND A.GRADE = B.GRADE
ORDER BY A.ID