Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the ultimate-member domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /ledcorps/www/wp/wp-includes/functions.php on line 6114 4.4.3 CROSS JOIN, INNER JOIN, NATURAL JOIN, USING, ON – 대나무숲

4.4.3 CROSS JOIN, INNER JOIN, NATURAL JOIN, USING, ON

출처 URL : http://www.gurubee.net/lecture/1879

CROSS JOIN

Cartesian Product 값을 얻을때 사용 한다.

  
-- 아래 SQL문장을 실행해 보자  
SQL> SELECT ename 
     FROM emp CROSS JOIN dept
    

INNER JOIN

  • – 일반 조인시 ,(콤마)를 생략하고 INNER JOIN을 추가하고, WHERE절 대신 ON절을 사용하면 된다.
  • – INNER는 생략 가능 하다.
  • – 아래 두 조인의 결과 값은 같다.
 
--  INNER JOIN을 사용한 문장
SQL> SELECT e.empno, e.ename 
     FROM dept d INNER JOIN emp e 
       ON d.deptno=e.deptno;
 
-- 일반적인 SQL 문장
SQL> SELECT e.empno, e.ename 
     FROM dept d , emp e 
     WHERE d.deptno=e.deptno;
    

NATURAL JOIN

  • – Equi Join과 동일 하다고 보면 된다.
  • – 두 테이블의 동일한 이름을 가지는 칼럼은 모두 조인이 된다.
  • – 동일한 컬럼을 내부적으로 찾게 되므로 테이블 Alias를 주면 오류가 발생 한다.
  • – 동일한 컬럼이 두개 이상일 경우 JOIN~USING 문장으로 조인되는 컬럼을 제어 할 수 있다.
  • – 아래 두 조인의 결과 값은 같다.
  
-- NATURAL JOIN을 사용한 SQL 문장.
SQL> SELECT empno, ename, deptno 
     FROM emp NATURAL JOIN dept
 
-- 일반적인 SQL 문장
SQL> SELECT e.empno, e.ename, d.deptno 
     FROM emp e, dept d 
     WHERE e.deptno=d.deptno
    

JOIN ~ USING

  • – NATURAL JOIN의 단점은 동일한 이름을 가지는 칼럼은 모두 조인이 되는데, USING 문을 사용하면 컬럼을 선택해서 조인을 할 수가 있다.
  • – USING절 안에 포함되는 컬럼에 Alias를 지정하면 오류가 발생 한다.
  
-- 일반적인 사용 방법
SQL> SELECT e.empno, e.ename, deptno 
     FROM emp e JOIN dept d USING(deptno)
    

ON 구문

  • – 조인 조건을 지정 할 수 있다.
  • – 모든 논리 연산 및 서브쿼리를 지정할 수 있다.
  
-- 테스트를 위해 scott유저에서 아래 insert문장을 실행시킨다.
SQL> INSERT INTO bonus(ename, job, sal) VALUES('SMITH','CLERK',500);
 
-- ON절 사용 예제 (multi-table joins)
SQL> SELECT e.empno, e.ename, e.sal
     FROM emp e JOIN dept d  ON (e.deptno=d.deptno)
                JOIN bonus b ON (b.ename = e.ename)
     WHERE e.sal IS NOT NULL
    

참고링크

대용량 데이터베이스 솔루션 1 – 2.조인의 최적화 

대용량 데이터베이스 솔루션 2 – 조인을 활용한 데이터 연결


답글 남기기 0

Your email address will not be published. Required fields are marked *