1 minute read

  1. JOIN
  2. EQUI JOIN

JOIN

  • 두 개 이상의 테이블 들을 연결 또는 결합하여 데이터를 조회하는 것

EQUI JOIN

  • 두 개의 테이블 간에 칼럼 값드이 서로 정확하게 일치 하는 경우에 사용되는 방법으로 대부분 PK <-> FK의 관계를 기반으로 한다.
  • 고전적인 JOIN 조건은 where절에 기술
  • ”=”연산자를 사용하여 표현

    예시

    SELECT PLAYER.PLAYER_NAME, PLAYER.BACK_NO, PLAYER.TEAM_ID
    FROM PLAYER, TEAM
    WHERE PLAYER.TEAM_ID = TEAM.TEAM_ID;
    

    실행결과 image

  • 위의 예시는 JOIN 대상이 되는 데이블 명이 조회하고자 하는 칼럼 앞에 반복하여 나온다.
    -> 개발생산성이 떨어진다. 가독성이 좋지 않다.

  • 따라서 테이블에 대한 ALIAS를 적용할수 있다.
    만약 테이블에 대한 ALIAS를 적용하여 SQL문을 작성한 경우, WHERE절과 SELECT절에는 테이블 명이아닌 ALIAS를 사용해야 한다.

    **테이블 ALIAS를 적용한 예시**
    ```sql
    SELECT P.PLAYER_NAME AS 선수명, p.back_no AS 백넘버, P.TEAM_ID AS 팀코드, t.team_name AS 팀명, t.region_name AS 연고지
    FROM player P , TEAM T
    WHERE p.team_id = t.team_id
    AND p.position = 'GK'
    ORDER BY P.BACK_NO;
    ```
    
    실행결과는 같다.
    




과제 풀이 : 6주차 join과제

6-1 : EMP와 DEPT 테이블을 조인하여 사원번호와 사원이름, 부서번호, 부서이름을 출력하는 SQL문을 작성하라. [1점]

SQL문

SELECT e.empno 사원번호,  E.ENAME 사원이름, d.deptno 부서번호,  d.dname   부서이름
FROM EMP E, DEPT D
WHERE e.deptno = d.deptno;


6-2 : TEAM, STADIUM, SCHEDULE 테이블을 조인하여 경기일과 구장명, 홈팀이름, 원정팀이름을 출력하는 SQL문을 작성하라. (단, 경기일과 구장명 순으로 오름차순 정렬하여 출력하라.) [2점]

SQL문

SELECT sc.sche_date "경기일", st.stadium_name "구장 이름" ,
(select t.team_name from team t where t.team_id = sc.hometeam_id) 홈팀이름,
   (select t.team_name from team t where t.team_id = sc.awayteam_id) 원정팀이름
FROM TEAM T, STADIUM ST, schedule SC
WHERE t.stadium_id = st.stadium_id
AND st.stadium_id = sc.stadium_id
ORDER BY sc.sche_date , st.stadium_name;
  • 참고 : https://ttend.tistory.com/623 스칼라 서브쿼리 방법