관계형 데이터베이스의 핵심!!
-> 하나이상의 테이블에서 데이터를 추출할 때 사용되는 기능으로 앞서 나온 PK/FK를 이용하여 여러 테이블간의 데이터를 조회 할 수 있도록 함
-> 두 테이블간의 컬럼 값이 정확히 일치하는 경우에 사용
PK < -> PK or PK < -> FK 관계를 이용하여 기술되며 '=' 기호를 사용한다.
{code}SELECT A.PLAYER_NAME, B.TEAM_NAME FROM PLAYER A, TEAM B WHERE A.TEAM_ID = B.TEAM_ID or SELECT A.PLAYER_NAME, B.TEAM NAME FROM PLAYER A INNER JOIN TEAM B ON A.TEAM_ID = B.TEAM_ID {code} |
{code} SELECT P.PLAYER_NAME 선수명, P.BACK_NO 백넘버, T.REGION_NAME 연고지,T.TEAMßAME 팀명 FROM PLAYER P, TEAM T WHERE P.TEAM_ID = T.TEAM_ID AND P.POSITION = 'GK' ORDER BY P.BACK NO or SELECT P.PLAYER_NAME 선수명, P.BACK_NO 백넘버, T.REGION_NAME 연고지, T.TEAM_NAME 팀 명 FROM PLAYER P INNER JOIN TEAM T ON P.TEAM_ID = T.TEAM_ID WHERE PPOSITION = 'GK' ORDER BY P.BACK NO {code} |
{tip}조인 조건 기술시 테이블에 대한 ALIAS를 적용해서 SQL 문장을 작성한 경우, WHERE 절과 SELECT 절 에는 테이블명이 아닌 테이블에 대한 ALIAS를 사용해야 한다는 점이다. And 권장 사항은 아니지만 하나의 SQL 문장 내에서 유일하게 사용하는 칼럼명이라면 칼럼명 앞에 ALIAS를 붙이지 않아도 된다. {tip} |
-> 두 테이블간의 컬럼 값이 정확히 일치하는 않는 경우에 사용
BETWEEN a AND b or > , < 연산자 사용
{code} SELECT E.ENAME, E.JOB, E.SAL, S.GRADE FROM EMP E, SALGRADE S WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL; {code} |
{code} SELECT P.PLAYER_NAME 선수명, P.POSITION 포지션,T.REGION_NAME 연고지, T.TEAM_NAME 팀명, S.STADIUM_NAME 구장명 FROM PLAYER P.TEAM, T.STADIUM S WHERE P TEAM_ID = T TEAM_ID AND T.STADIUM_ID = S.STADIUM_ID ORDER BY 선수명 or SELECT P.PLAYER_NAME 선수명, P.POSITION 포지션,T.REGION_NAME 연고지. T.TEAM_NAME 팀명,S.STADIUM_NAME 구장명 FROM PLAYER P INNER JOIN TEAM T ON P.TEAM_ID = T.TEAM_ID INNER JOIN STADIUM S ON T.STADIUM_ID = S.STADIUM_ID AND T.STADIUM_ID = S.STADIUM_ID ORDER BY 선수명 {code} |
{info}JOIN 이 필요한 기본적인 이유는 앞서 배운 정규화에서 부터 출발한다 정규화란 불필요한 데이터의 정합성을 확보하고 이상현상(Anomaly) 발생을피하기 위해,테이블을 분할하여 생성하는 것{info} |