'Outer'에 해당되는 글 1건

320x100

[SQL] inner join, outer join 의 차이점

Posted on 2008. 7. 25. 18:04
Filed Under DB

INNER JOIN  :

-  두개의 집합 (A, B) 의 교집합 이라고 이해하시면 됩니다.

   A {1,2,3}  ,    B {2,3,4 }

   이면  {2,3} 이 교집합입니다.    모두의 값에 있는 행들만 포함시키고 그렇지 않는 행들은 제외 시킵니다.

OUTER JOIN :

-  OUTER JOIN 에는 LEFT , RIGHT, FULL OUTER JOIN 등의 세가지 형식이 있습니다.

   두 테이블에서 지정된 쪽인 LEFT 또는 RIGHT 쪽의 모든 결과를 보여준후 반대쪽에 매칭되는 값이 없어도 보여주는 JOIN  입니다.


 JOIN 이전에 나오는 테이블이 왼쪽(LEFT)테이블이 되고, JOIN 이후에 나오는 테이블은 오른쪽(RIGHT)테이블이 됩니다.


 예를 보겠습니다.. ^^*

----------------------------------------------------------------------------------

CREATE TABLE T1 ( A INT  PRIMARY KEY, B VARCHAR(20) )

INSERT INTO T1 (A,B) VALUES (1,'김대중'
)
INSERT INTO T1 (A,B) VALUES (2,'김영삼'
)
INSERT INTO T1 (A,B) VALUES (3,'노태우'
)
INSERT INTO T1 (A,B) VALUES (4,'전두환'
)


CREATE TABLE T2 ( A INT  PRIMARY KEY, C VARCHAR(20
) )

INSERT INTO T2 (A,C) VALUES (2,'SM5'
)
INSERT INTO T2 (A,C) VALUES (3,'SONATA'
)

--INNER JOIN
--T1, T2 의 INNER JOIN  이면 차를 소유하고 있는 사람만 추출된다.
-- ANSI SQL
SELECT T1.A,T1.B,
T2.C 
FROM T1 INNER JOIN T2 ON T1.A=
T2.A

-- T-SQL
SELECT T1.A,T1.B,
T2.C 
FROM T1 ,
T2 
WHERE  T1.A = T2.A


-- LEFT OUTER JOIN  : 좌측을 기준
-- ANSI SQL
SELECT T1.A,T1.B, T2.C 
FROM T1 LEFT  OUTER JOIN T2 ON T1.A=
T2.A

-- T-SQL
SELECT T1.A,T1.B,
T2.C 
FROM T1 ,
T2 
WHERE  T1.A  *=
T2.A


-- RIGHT OUTER JOIN  : 우측을 기준
-- ANSI SQL
SELECT T1.A,T1.B, T2.C 
FROM T1 RIGHT  OUTER JOIN T2 ON T1.A=
T2.A

-- T-SQL
SELECT T1.A,T1.B,
T2.C 
FROM T1 ,
T2 
WHERE  T1.A  =*
T2.A


-- FULL OUTER JOIN  : 양쪽 테이블을 둘다 기준으로
-- ANSI SQL
SELECT T1.A,T1.B, T2.C 
FROM T1 FULL  OUTER JOIN T2 ON T1.A=
T2.A

-- T-SQL
SELECT T1.A,T1.B,
T2.C 
FROM T1 ,
T2 
WHERE  T1.A  =*
T2.A
UNION 
SELECT
T1.A,T1.B,
T2.C 
FROM T1 ,
T2 
WHERE  T1.A  *=
T2.A

출처: 네이버 지식IN



다른 예:)

◆ 조인 조건이 있을시!   
SELECT *
   FROM table1, table2
   WHERE table1.a = table2.b


WHERE table1.a = table2.b          // Inner Join
☞ Inner Join : 양쪽에 모두 값이 있어야 결과값으로 주신다.
   
WHERE table1.a = table2.b(+)    // Outer Join
☞ 왼쪽 테이블 기준(모든 값)
   /오른쪽 테이블에서는 왼쪽테이블의 table1.a값과 같은 table2.b값 + (null) 값

WHERE table1.ab(+) = table2.b  // Outer Join
☞ 오른쪽 테이블 기준(모든 값)
   /왼쪽테이블에서는 왼쪽테이블의 table1.a값과 같은 table2.b값 + (null) 값





반응형

About

by 쑤기c

반응형