반응형

 

ANSI Query(SQL)

  • ANSI(American National Standards Institute, 미국 국립 표준 협회)에서 제시한 SQL에 대한 보편적인 문법

Visual Representation of SQL Joins - CodeProject

https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins

 


 

오라클 Join 예제.

 

테이블 : T_MEMBER

T_MEMBER 테이블

 

테이블 : T_DEPARTMENT

T_DEPARTMENT 테이블

 


 

Inner Join
-- (교집합) 각 테이블에서 조인 조건에 일치되는 데이터만 가져온다.

(ANSI) SELECT m.*, d.* FROM T_MEMBER m INNER JOIN T_DEPARTMENT d ON m.DEPT_IDX = d.DEPT_IDX;
(Oralce) SELECT m.*, d.* FROM T_MEMBER m, T_DEPARTMENT d WHERE m.DEPT_IDX = d.DEPT_IDX;

Inner Join

 

 

 

Outer Join
-- 조인 조건에 일치하는 데이터 및 일치하지 않은 데이터를 모두 SELECT 한다.
-- 조인 조건에 일치하는 데이터가 없다면 NULL로 가져온다.
-- 주(main) 테이블이 어떤 테이블인지가 중요하다.

 

  • Left Outer Join
(ANSI) SELECT m.*, d.* FROM T_MEMBER m LEFT OUTER JOIN T_DEPARTMENT d ON m.DEPT_IDX = d.DEPT_IDX ORDER BY m.MEM_ID;
(Oralce) SELECT m.*, d.* FROM T_MEMBER m, T_DEPARTMENT d WHERE m.DEPT_IDX = d.DEPT_IDX(+) ORDER BY m.MEM_ID;

Left Outer Join

 

  • Right Outer Join
(ANSI) SELECT m.*, d.* FROM T_MEMBER m RIGHT OUTER JOIN T_DEPARTMENT d ON m.DEPT_IDX = d.DEPT_IDX ORDER BY m.MEM_ID;
(Oralce) SELECT m.*, d.* FROM T_MEMBER m, T_DEPARTMENT d WHERE m.DEPT_IDX(+) = d.DEPT_IDX ORDER BY m.MEM_ID;

Right Outer Join

 

  • Full Outer Join
(ANSI) SELECT m.*, d.* FROM T_MEMBER m FULL OUTER JOIN T_DEPARTMENT d ON m.DEPT_IDX = d.DEPT_IDX ORDER BY m.MEM_ID;
(Oralce) X

Full Outer Join

 

 

Cross Join
-- 두 테이블 조인 시 가능한 모든 경우의 레코드를 SELECT 한다.
-- 경우의 수 : N * M

(ANSI) SELECT m.*, d.* FROM T_MEMBER m CROSS JOIN T_DEPARTMENT d ORDER BY m.MEM_ID, d.DEPT_IDX;
(Oralce) SELECT m.*, d.* FROM T_MEMBER m, T_DEPARTMENT d ORDER BY m.MEM_ID, d.DEPT_IDX;

Cross Join

 

Self Join
-- 테이블이 자기 자신을 마치 다른 테이블처럼 취급하여 조인한다.

(ANSI) SELECT m.*, d.* FROM T_MEMBER m JOIN T_MEMBER d ON m.MEM_ID = d.MEM_ID ORDER BY m.MEM_ID;
(Oralce) SELECT m.*, d.* FROM T_MEMBER m, T_MEMBER d WHERE m.MEM_ID = d.MEM_ID ORDER BY m.MEM_ID;

Self Join

 

 

 

반응형

'Database > Oracle' 카테고리의 다른 글

NLS 파라미터 확인  (0) 2020.11.17
JDBC 오류?? varchar 에 2000byte 이상 insert 하기.  (0) 2011.11.07
캐릭터셋 확인.  (0) 2011.10.20
오라클 구동 방법  (0) 2011.01.05
[Link] hierarchy query  (0) 2010.11.09

+ Recent posts