테이블간의 데이터 연결
단지 한개의 테이블에서 정보를 얻는것이 아니라, 두개 이상의 테이블에서 정보를 얻기 위해서는 JOIN 문장을 사용합니다. 주로 Primary-key와 Foreign-key의 관계를 가진 칼럼을 소유하고 있는 테이블을 통한 검색시 사용합니다.
종류
-
CROSS joins (무차별 조인. 즉, 테이블 두 개를 합쳐서 정보를 얻는 것 뿐이 안된다.)
- NATURAL joins
- USING joins
- FULL(or Two-sided) OUTER joins
- ARBIRTARY join conditions for outer join
단순한 조인
WHERE 절에 조인 조건을 작성합니다. 명확하게 하기 위해 컬럼명 앞에 테이블 명을 적습니다. 한 개 이상의 테이블에 같은 컬럼명이 있을 시 테이블명을 컬럼명 앞에 붙여서 사용합니다.
단순한 조인 명령어
> SELECT table.column, table.column
> FROM table1, table2
> WHERE table1.column1 = table2.column2;
NATURAL joins
서로 다른 테이블에서 컬럼명과 데이터타입이 같은 것을 기준으로 정보를 얻습니다. Master&Detail의 관계를 가진 2개 이상의 테이블에서 공통되는 칼럼을 서로 동등 비교하여 조인하는 방법입니다.
NATURAL 조인 명령어
> SELECT 테이블1.컬럼, 테이블2.컬럼, ...
> FROM 테이블1
> NATURAL JOIN 테이블2
> WHERE 조건 ;
※ 주 의 - 만약, 같은 이름의 컬럼이 데이터형이 다른 경우에는 오라클에서는 ERROR를 리턴합니다.
또한, NATURAL joins은 두 개의 테이블에서 같은 이름을 가진 모든 컬럼을 기준으로 합니다. 따라서 SELECT다음에 여러커럼들의 이름이 같을 경우 USING 을 이용합니다.
USING
USING은 몇 개의 컬럼의 이름이 일치하고 데이터 타입은 다른 경우, USING을 이용하여 하나의 컬럼을 기준으로 하여 검색하는 문법입니다. 한 개 테이블을 두개의 별도 테이븙처럼 사용할 때 사용. 한 개 테이블의 행들을 같은 테이블의 행들과 조인한다.
USING 명령어
> SELECT 테이블1.컬럼, 테이블2.컬럼, ...
> FROM 테이블1
> JOIN 테이블2
> USING (컬럼);
테이블명을 간단하게 사용하기
테이블 이름을 사용하여 컬럼명을 정확히 표현 할 때 테이블 이름이 긴 경우 매우 많은 시간을 요할 수 있습니다. 이 때 테이블의 alias 를 사용하여 테이블 이름을 SELECT 문에서 다른 이름으로 사용하는 방법이 있습니다. 테이블명을 간단하게 사용하면 쿼리문을 단순하게 표현하고, 쿼리문 수행을 향상킵니다.
테이블명 간단하게 사용하는 명령어
> SELECT 테이블1약어.컬럼, 테이블2약어.컬럼
> FROM 테이블1 테이블1약어
> JOIN 테이블2 테이블2약어
> USING (컬럼);
FULL(Two_way) OUTER joins
행이 조인 조건을 만족하지 않을 때는 해당 행은 쿼리 결과에 나타나지 않습니다. 하지만 OUTER 조인 조건을 사용할 때 조인 조건을 만족하지 않아도 행들의 결과를 나타내고자 하는 경우에 사용합니다. OUTER 조인의 연산자는 "(+)" 입니다. 조인 시킬 값이 없는 조인측에 '(+)'를 위치시킵니다.
OUTER 조인 명령어
> SELECT table.column, table.clumn
> FROM table1.table2
> WHERE table1.column=table2.column(+);
'DBMS > Oracle 10g' 카테고리의 다른 글
그룹함수 (0) | 2008.12.21 |
---|---|
상태표현(if, else조건) (0) | 2008.12.20 |
중첩함수와 일반함수 (0) | 2008.12.20 |
변환함수(데이터타입의 변환) (0) | 2008.12.15 |
오라클 날짜 표현 (0) | 2008.12.15 |