빅데이터 국비 교육
[아이티윌 빅데이터 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