300x250
  1. 형식 :
    - 등가 EQUI
    - 비 등가 NON EQUI

  2. 문법 :
    - ANSI Std
    - Oracle Std

  3. 기준 테이블 :  
    - Inner, Outer ( Left, Right, Full )
    - 그외 : Self, Cross 

  4. 연산 : 
    - NL
    - HASH
    - SORT MERGE
    - STAR 

 

 

형식


1. 등가 ( EQUI )

- 조인 조건에 ' = ' 등호 사용

- 가장 많이 사용되는 조인 방식

- NATURAL JOIN

- JOIN ~ USING

 

 

2. 비 등가 ( NON EQUI ) 

- 등가 방식 제외한 방식들

 

 

 

문법


1. ANSI ( American National Standards Institute ) 에서 발표한 표준
 - JOIN 구문

 - 조인조건 -> ON 절

- 검색조건 ->  WHERE 절

- 등가, 내부조인에  NATURAL JOIN USING 사용

//SQL-99 NATURAL
FROM LEFT_TABLE L NATURAL JOIN RIGHT_TABLE R

//SQL-99 JOIN~USING
FROM LEFT_TABLE L JOIN RIGHT_TABLE R USING(KEY)

//SQL-99 JOIN~ON
FROM LEFT_TABLE L JOIN RIGHT_TABLE R ON(L.KEY=R.KEY)

//SQL-99 OUTER JOIN
FROM LEFT_TABLE L LEFT OUTER JOIN RIGHT_TABLE R ON ( L.KEY = R.KEY ) 
FROM LEFT_TABLE L RIGHT OUTER JOIN RIGHT_TABLE R ON ( L.KEY = R.KEY ) 
FROM LEFT_TABLE L FULL OUTER JOIN RIGHT_TABLE R ON ( L.KEY = R.KEY ) 

 

 

2. Oracle 

;

기준 테이블


1.  Inner 
- 서로 매칭되는 것만 가져온다.

// 명시적
SELECT *
FROM LEFT_TABLE L INNER JOIN RIGHT_TABLE R ON ( L.KEY = R.KEY )

// 암시적
SELECT *
FROM LEFT_TABLE L, RIGHT_TABLE R
WHNERE L.KEY = R.KEY

 

 

 

2. Outer

미매칭 ( 매칭 되지 않는 )  데이터도 가져온다.

 

a )  Left : " 왼쪽 " 테이블 미매칭 데이터 포함

->  왼쪽 테이블 데이터를 모두 가져오고, 오른쪽 테이블의 데이터

//SQL-99
SELECT *
FROM LEFT_TABLE L 
LEFT OUTER JOIN RIGHT_TABLE R ON ( L.KEY = R.KEY )

//ORACLE
SELECT *
FROM LEFT_TABLE L, RIGHT_TABLE R
WHERE L.KEY = R.KEY (+)

 

b )  Right : "오른쪽 " 테이블 미매칭 데이터 포함

//SQL-99
SELECT *
FROM LEFT_TABLE L
RIGHT OUTER JOIN RIGHT_TABLE R ON ( L.KEY = R.KEY )

//ORACLE
SELECT *
FROM LEFT_TABLE L, RIGHT_TABLE R
WHERE L.KEY(+)= R.KEY 

 

 

c )  Full 

//ORACLE 집합 연산 사용

//SQL-99
SELECT *
FROM LEFT_TABLE L 
FULL OUTER JOIN RIGHT_TABLE R ON ( L.KEY = R.KEY )

 

 

 

 

 

출처 SQL의 조인 종류를 설명하는 그림 : 클리앙 (clien.net)

원본 출처 : imgflip.com

 

 

3.Cross

- 모든 경우의 수에 대한 결합

A 테이블 15개 행 

B 테이블 10개 행

결과 : 15 X 10 = 150개 행

반응형
300x250

 

이 포스팅은

Oracle SQL 실전 오라클 SQL 가이드

 

Oracle SQL

『ORACLE SQL』는 실전 오라클 SQL 가이드북이다. 초보자들도 조인, 서브 쿼리를 쉽게 배울 수 있도록 예제를 통해 설명한다. 오라클 기반의 실습 환경을 바탕으로 쓰여 졌지만 가능한 표준 SQL을 근

book.naver.com

책을 읽고 요약하여 정리하였습니다.

 

1999년 SQL 표준안


 

- 조인을 표현하는 여러 가지 새로운 방법이 제시

- 자연 조인,  좌우 외부 조인, 교차 조인 등

 

 

 

자연 조인 Natural Join


- 동일한 타입과 이름을 가진 컬럼을 조인 조건으로 이용

- 조인 문장을 간단힌 표현하는 방법으로 등가 조인 하는 방법의 하나

- SELECT에 테이블 이름을 생략하고 컬럼명만 표기

- 두 테이블간 조인할 수 있는 동일한 이름, 타입을 가진 컬럼 필요

- 반드시 조인에 이용되는 컬럼은 별도로 명시하지 않아도 자동으로 조인에 사용

- 조인 조건을 쓸 필요가 없다.

 

제약

- 동일한 형식기을 갖는 공통 컬럼이 반드시 존재해야함

-> 에러나 경고 발새하지 않지만 선택된 레코드가 없음.

 

SELECT 컬럼...
FROM 테이블1
NATURAL JOIN 테이블2
WHERE 검색 조건

 

 

 

Using 절을 이용한 조인


 

- 조인에 사용될 컬럼을 명시적으로 지정.

- NATURAL절과 USING절은 함께 사용 불가

- 3개 테이블 이상 조인할 경우 가독성이 좋다.

- 조인에 이용되지 않을 동일 이름을 가진 컬럼은 컬럼명 앞에 테이블 명을 기술

- 조인에 이용되는 컬럼을 표기함으로써 가독성을 높이는 효과

- 디버깅이나 튜닝 작업에 유리

SELECT 컬럼...
FROM 테이블1
JOIN 테이블2 USING ( 조인 컬럼 ) [ JOIN 테이블 3 USING ( 조인컬럼 ) ...]
WHERE 검색 조건

 

 

반응형
300x250

이 포스팅은

Oracle SQL 실전 오라클 SQL 가이드

 

Oracle SQL

『ORACLE SQL』는 실전 오라클 SQL 가이드북이다. 초보자들도 조인, 서브 쿼리를 쉽게 배울 수 있도록 예제를 통해 설명한다. 오라클 기반의 실습 환경을 바탕으로 쓰여 졌지만 가능한 표준 SQL을 근

book.naver.com

책을 읽고 요약하여 정리하였습니다.

 

 

조인문을 위한 사전 준비


- 테이블간의 관계가 명확해야함

 

 

자기 참조 조인  / Selft Join


- 동일 테이블을 자기 참조에 의해 조인.

- 각각 별도의 테이블 처럼 사용

- 외부의 컬럼을 참조하는 컬럼 뿐 아니라 내부의 컬럼을 참조하는 컬럼

- 동일 테이블의 다른 컬럼을 참조하는 컬럼을 이용해서 동일 테이블간 조인하는 것

 

외부 조인


- 조인 조건에 일치하지 않는 데이터도 모두 출력

- ' + ' 기호는 데이터가 부족한 쪽에 기술

- 출력된 데이터의 신뢰성을 제공

- 조인 조건 양쪽에 모두 기술할 수 없다.

WHERE A.no = B.no ( + ) 

 

예1 ) 조인조건에 Major 테이블 쪽에  ' + ' 를 추가한다면? 

-> 전공이 electoric인 학생은 없지만,  모든 전공이 조회된다.

 

테이블 Student

no ( 학생 번호 ) name ( 학생 이름 )  mno ( 전공 번호 ) 
1 eddy 1
2 teddy 2
3 mike 1

 

테이블 Major

mno ( 전공 번호 )  major name ( 전공 명 ) 
1 computer science
2 education math
3 electoric

 

 

반응형
300x250

이 포스팅은 

Oracle SQL 실전 오라클 SQL 가이드

 

Oracle SQL

『ORACLE SQL』는 실전 오라클 SQL 가이드북이다. 초보자들도 조인, 서브 쿼리를 쉽게 배울 수 있도록 예제를 통해 설명한다. 오라클 기반의 실습 환경을 바탕으로 쓰여 졌지만 가능한 표준 SQL을 근

book.naver.com

책을 읽고 요약하여 정리하였습니다.

 

 

- RDB는 데이터가 이상 현상을 보이지 않도록 정규화를 거친 여러개의 데이터를 저장

-데이터들은 테이블 간의 관계를 통해 무결성을 보장

무결성 data integrity

 

무결성 제한의 유형

더보기

개체( Entity )  무결성, 참조( Referential )  무결성, 범위 ( Domain )  무결성 

 

- 개체 무결성

  1. 고유키 개념
  2. 모든 테이블이 기본 키를 가져야 함
  3. 기본키로 선택된 열은 고유하여야 하며, 빈 값을 허용치 않음을 규정

 

- 참조 무결성

  1. 외래 키의 개념 관련
  2. 외래 키 값은 두 가지 상태 가운데 하나에만 속함을 규정
  3. 일반적인 상태는 외래 키 값이 특정 테이블의 기본 키값을 참조.
  4. 비즈니스 규칙에 따라 달라 질 수 있음.
  5. 빈 값 허용 

 

- 범위 무결성

정의된 범위에서 RDB의 모든 열이 선언 되도록 규정

 

데이터 무결성 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)

 

- 관계를 의미 , 참조, 관계등으로 불리는 RDB의 핵심적인 요소 

- 여러 테이블의 데이터를 동시에 검색, 이것을 조인이라고 함.

- 조인은 테이블간의 관계를 근간으로 수행.

 

등가 조인, 비 등가 조인


- 조인 검색의 조건에 등호와 부등호를 이용한 검색을 의미

- 등가조인은 두 테이블간에 같은 값을 찾는것, 가장 많이 사용하는 형태 / ' = ' 기호

- 비 등가 조인은 서로 다른 값을 부등호를 통해서 조인하는 형태 / ' = ' 기호를 제외한 

 

 

조인 조건

- 두 테이블 간의 관계를 수식으로 표현

- 동일한 이름의 컬럼이 여러 테이블 존재하는 경우, 테이블의 이름을 반드시 명시해야함

- 조인 조건에 ' = ' 이용하는 조인을 등가 조인

- 부등호가 포함된 조건 이용하는 경우,  비 등가 조인

 

서로 연관 지어 출력

등가 조인은 참조 관계를 통해서 이루어짐.

일반적인 조인은 참조 관계가 조인의 조건.

dno가 같은 경우에만 서로 연관지어 출력.

SELECT문에서 검색 대상인 테이블의 개수 2개 -> 조인 조건 ( 2 - 1 ) 개 이상으로 한 개의 조인 조건 이용

 

참조관계

더보기

- 참조되는 테이블의 컬럼 값에 존재하는 값만 입력 가능한 것

- 이상 현상을 방지하기 위해 외부 키 라는 기능 제공

 

예 )

A 테이블의 no 컬럼이 B테이블의 no 컬럼을 참조.

A.no 컬럼에는 반드시 B.no 컬럼에 존재하는 값만이 입력.

 

 

 

 

 

조인 조건이 없는 조인문장 결과


- 조인 조건 누락 혹은 잘못 기술하면 모든행이 1:1로 대응 됨

- Cartesian Product을 얻음.

예) A 테이블 7개 행, B 테이블 10개 행이 모두 1:1대응 되면?

-> 출력행의 개수는 7 * 10 = 70개가 됨. 아주 특별한 경우 교차 조인이라는 이름으로 결과를 생성하는 경우.

- 반드시 테이블 개수 - 1 개 이상의 조인 조건이 필요

 

 

조인을 수행하는 방법


Nest Loop Join

Sort Merge Join

Hash Join

Start Join

 

반응형

+ Recent posts