ANSI Query(SQL)
- ANSI(American National Standards Institute, 미국 국립 표준 협회)에서 제시한 SQL에 대한 보편적인 문법
※ https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins
오라클 Join 예제.
테이블 : T_MEMBER
테이블 : 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;
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;
- 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;
- 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
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;
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;
'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 |