DataBase - JOIN, EQUI JOIN
- JOIN
- 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;실행결과

-
위의 예시는 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 스칼라 서브쿼리 방법