[ORACLE] JOIN(조인) (수정중)

sleeee·2023년 5월 7일
0

SQL

목록 보기
7/19

JOIN(조인)

  • 여러개의 테이블을 결합시켜 원하는 데이터를 가져오는 것
    ORACLE JOIN을 의미

  • 기본형태

SELECT 컬럼명1,컬럼명2,..
FROM 테이블명1,테이블명2
WHERE 조인조건;
  • 설명
  1. 학생정보(테이블1)
학번이름전화번호주소
1최ㅇㅇ010-0000-0000인천
2김ㅇㅇ010-1111-1111대구
  1. 학생성적(테이블2)
학번과목점수
1국어100
2영어100

3.성적표 (테이블3)

학번이름과목점수
1최ㅇㅇ국어100
2김ㅇㅇ영어100
  • 다음과 같이 주어진 테이블 1,2에서 학번,이름,과목,점수의 정보만 가져와서 테이블3 한개로 나타내려고 할때 사용하는것이 JOIN

1. EQUI JOIN

  • WHERE절에 공통컬럼들이 동등연산자(=)에 의해 결합되는 조인
    위의 예시 테이블은 학번이라는 공통컬럼이 존재하므로 조인할때 동등연산자를 사용하여 결합시킨다
  • 예시
SELECT S.SNUM,S.SNAME,G.SUBJECT,G.SCORE
FROM STUDENT S,GRADE G
WHERE S.SNUM=G.SNUM;
  • SNUM(학번) SNAME(이름) SUBJECT(과목) SCORE(점수)
  • 각 테이블명은 STUDENT S 이렇게 뒤에 별명 짓기 가능
  • 공통컬럼이 학번이므로 S.SNUM=G.SNUM 이라는 조건으로 결합

2. NON-EQUI JOIN

  • 공통컬럼이 존재하지 않아도 결합되는 경우의 조인
  • 비교연산자에 의해 결합 가능
  • 3개이상의 테이블 조인시 AND로 묶어서 결합 가능

3. CROSS JOIN

  • 결합조건이 없는 경우의 조인 (실질적으로 거의 사용 x)

4. SELF JOIN

  • 참조해야 하는 컬럼이 자신의 테이블의 다른 컬럼인 경우 사용되는 조인
    이 경우, 똑같은 테이블을 E1,E2로 나눠서 참조한다.
  • 예시
SELECT E1.EMPNO,E1.ENAME,E1.MGR,E2.ENAME
FROM EMP E1,EMP E2
WHERE E1.MGR=E2.EMPNO;
  • 결과
      EMPNO ENAME            MGR ENAME

      7902  FORD             7566 JONES     
      7900  JAMES            7698 BLAKE     
      7844  TURNER           7698 BLAKE     
      7521  WARD             7698 BLAKE     
      7654  MARTIN           7698 BLAKE     
      7499  ALLEN            7698 BLAKE     
      7934  MILLER           7782 CLARK     
      7782  CLARK            7839 KING      
      7566  JONES            7839 KING      
      7698  BLAKE            7839 KING      
      7369  SMITH            7902 FORD   

5. OUTER JOIN

  • 한쪽 테이블에는 해당하는 데이터가 존재하는데 다른쪽 테이블에는 데이터가 존재하지 않는 경우 모든 데이터를 추출하는 조인방법
  • WHERE 조건절에서 데이터가 없는 쪽에 (+)표시를 추가하면 된다.
  • 예시
SELECT D.DEPTNO,D.DNAME,E.ENAME
FROM DEPT D,EMP E
WHERE D.DEPTNO=E.DEPTNO(+);
  • EMP테이블의 DEPTNO는 10,20,30만 있고,DEPT 테이블의 DEPTNO는 10,20,30,40까지 있음
    -그런데 모든 데이터를 출력하려고 하므로 DEPTNO 40이 없는 E.DEPTNO에 E.DEPTNO(+) 라고 (+)를 붙여야함

  • 결과

profile
개인 공부 기록 👩‍💻

0개의 댓글