database.sarang.net
UserID
Passwd
Database
ㆍDBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DBMS Tutorials 544 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 544
JOIN -- inner and outer join 설명
작성자
정재익(advance)
작성일
2002-09-07 21:25
조회수
11,277

Outer Join

 

용도 : 두개이상의 테이블 join시 한쪽테이블의 행에대해

다른쪽 테이블에 일치하는 행이 없더라도 다른 쪽 테이블의행을

Null로하여 Row를 Return한다.

 

문법 : SELECT COLUMN1,COLUMN2,.....

FROM TABLE1,TABLE2,.....

WHERE TABLE1.COLUMN = TABLE2.COLUMN (+)

 

이경우 기준이 되는 테이블은 TABLE1이다.

결합된 컬럼값이 테이블2에 없더라도 테이블1에 있으면

테이블2의 값들은 모두 NULL로 RETRUN 된다.

물론 양쪽모두에 존재하는값은 모두 나온다.

단, 테이블1에 없고 테이블2에만 있는 값은 리턴되지 않는다.

 

즉, OUTER JOIN 연산자 (+)를 지정한 테이블에 대해서는 일시적으로

특별한 NULL 열이 작성되고 통상의 JOIN에서는 리턴되지 않는 다른쪽의

테이블의 행 모두와 JOIN이 일어난다.

OUTER JOIN 기호는 컬럼명의 바로뒤에 붙어야 한다.

그리고 하나의 테이블이 OUTER JOIN의 대상으로 삼을 수 있는 테이블의

수는 한개뿐이다.

 

예제 : 다음은 OUTER JOIN 과 일반JOIN의 차이를 보여준다.

 

       일반 JOIN : 

       SELECT EMP.EMPNO,EMP.DEPTNO,DEPT.DNAME  
       FROM   EMP,DEPT 
       WHERE  EMP.JOB='CLERK' 
       AND    EMP.DEPTNO=DEPT.DEPTNO; 

       EMPNO      DEPTNO     DNAME          
       ---------- ---------- -------------- 
             7934         10 ACCOUNTING     
             7369         20 RESEARCH       
             7876         20 RESEARCH       
             7900         30 SALES       




       OUTER JOIN :        

       SELECT EMP.EMPNO,EMP.DEPTNO,DEPT.DNAME  
       FROM   EMP,DEPT 
       WHERE  EMP.JOB='CLERK' 
       AND    EMP.DEPTNO=DEPT.DEPTNO(+);  

       EMPNO      DEPTNO     DNAME          
       ---------- ---------- -------------- 
             7934         10 ACCOUNTING     
             7369         20 RESEARCH       
             7876         20 RESEARCH       
             7900         30 SALES          
             7999         50  

 

SELF JOIN

 

1.의미 : 대체로 JOIN이라고 하면 어떤 테이블과 또 다른 테이블간을

특정 COLUMN으로 연결하는 경우를 의미한다.

SELF JOIN은 테이블간의 JOIN은 맞는데 다른 테이블간의 JOIN이 아니고

같은 테이블을 마치 다른 테이블처럼 인식시켜 JOIN을 하는것이다.

그래서 SELF JOIN에서는 테이블에 반드시 ALIAS(별명)를 사용한다.

 

2.구문 :

SELECT ALIAS1.COLUMN1,ALIAS2.COLUMN2,.....

FROM TABLE1 ALIAS1,TABLE1 ALIAS2...

WHERE ALIAS1.COLUMN = ALIAS2.COLUMN

 

3.용도 : 특별히 어떤경우를 위해 사용해야한다는 규정은 없지만

경험적으로 볼때

주로 1단계 순환참조가 필요한 경우에 사용된다.

 

4 예제 :  
         SELECT A.EMPNO 사번,  A.ENAME 사원명, 
                B.EMPNO 상급자,B.ENAME 상급자명  
         FROM   EMP A,EMP B 
         WHERE  B.EMPNO=A.MGR 

         사번       사원명     상급자     상급자명   
         ---------- ---------- ---------- ---------- 
               7788 SCOTT            7566 JONES      
               7902 FORD             7566 JONES      
               7499 ALLEN            7698 BLAKE      
               7521 WARD             7698 BLAKE      
               7900 JAMES            7698 BLAKE      
               7844 TURNER           7698 BLAKE      
               7654 MARTIN           7698 BLAKE      
               7934 MILLER           7782 CLARK      
               7999 TEST             7782 CLARK      
               7876 ADAMS            7788 SCOTT      
               7566 JONES            7839 KING       
               7782 CLARK            7839 KING       
               7698 BLAKE            7839 KING       
               7369 SMITH            7902 FORD  

각 ROW가 사번에대한 상급자 정보를 MGR에 가지고 있을경우.

[Top]
No.
제목
작성자
작성일
조회
589CIDOC Relational Data Model
정재익
2002-09-29
7468
563ASP 의 DB 연동
정재익
2002-09-19
15472
554An Introduction to Database Normalization [1]
정재익
2002-09-13
10961
544JOIN -- inner and outer join 설명
정재익
2002-09-07
11277
543Diagnosing High CPU Utilization on NT
정재익
2002-09-07
4738
542정기적 백업을 위한 Windows 2000 Server 구성 방법
정재익
2002-09-07
5513
541관계형 데이터베이스에서 효율적인 데이터 연결 - 조인편
정재익
2002-09-07
9607
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.052초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다